library
This commit is contained in:
parent
108d45fb0f
commit
bb79eb262c
26
cmd/root.go
26
cmd/root.go
@ -1,7 +1,3 @@
|
||||
/*
|
||||
Copyright © 2023 NAME HERE <EMAIL ADDRESS>
|
||||
|
||||
*/
|
||||
package cmd
|
||||
|
||||
import (
|
||||
@ -10,9 +6,6 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
|
||||
// rootCmd represents the base command when called without any subcommands
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "converter",
|
||||
Short: "A brief description of your application",
|
||||
@ -22,30 +15,11 @@ examples and usage of using your application. For example:
|
||||
Cobra is a CLI library for Go that empowers applications.
|
||||
This application is a tool to generate the needed files
|
||||
to quickly create a Cobra application.`,
|
||||
// Uncomment the following line if your bare application
|
||||
// has an action associated with it:
|
||||
// Run: func(cmd *cobra.Command, args []string) { },
|
||||
}
|
||||
|
||||
// Execute adds all child commands to the root command and sets flags appropriately.
|
||||
// This is called by main.main(). It only needs to happen once to the rootCmd.
|
||||
func Execute() {
|
||||
err := rootCmd.Execute()
|
||||
if err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
// Here you will define your flags and configuration settings.
|
||||
// Cobra supports persistent flags, which, if defined here,
|
||||
// will be global for your application.
|
||||
|
||||
// rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.converter.yaml)")
|
||||
|
||||
// Cobra also supports local flags, which will only run
|
||||
// when this action is called directly.
|
||||
rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
||||
}
|
||||
|
||||
|
||||
|
83
cmd/temp.go
83
cmd/temp.go
@ -1,6 +1,3 @@
|
||||
/*
|
||||
Copyright © 2023 NAME HERE <EMAIL ADDRESS>
|
||||
*/
|
||||
package cmd
|
||||
|
||||
import (
|
||||
@ -8,10 +5,10 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
u "github.com/bcicen/go-units"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
// tempCmd represents the temp command
|
||||
var (
|
||||
from string
|
||||
to string
|
||||
@ -34,76 +31,50 @@ to quickly create a Cobra application.`,
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
in, err := strconv.ParseFloat(args[0], 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var out float64
|
||||
switch strings.ToLower(cmd.Flag("from").Value.String()) {
|
||||
fromFlag := strings.ToLower(cmd.Flag("from").Value.String())
|
||||
toFlag := strings.ToLower(cmd.Flag("to").Value.String())
|
||||
var out u.Value
|
||||
switch fromFlag {
|
||||
case "f", "farenheit":
|
||||
switch strings.ToLower(cmd.Flag("to").Value.String()) {
|
||||
case "f", "farenheit":
|
||||
out = in
|
||||
case "c", "celsius":
|
||||
out = ((in - 32) * five_over_nine)
|
||||
case "k", "kelvin":
|
||||
out = ((in-32)*five_over_nine + kconst)
|
||||
case "r", "rankine":
|
||||
out = in + rconst
|
||||
out, err = Convert(in, toFlag, u.Fahrenheit)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
case "c", "celsius":
|
||||
switch strings.ToLower(cmd.Flag("to").Value.String()) {
|
||||
case "f", "farenheit":
|
||||
out = in*nine_over_five + 32
|
||||
case "c", "celsius":
|
||||
out = in
|
||||
case "k", "kelvin":
|
||||
out = in + kconst
|
||||
case "r", "rankine":
|
||||
out = in*nine_over_five + rconst + 32
|
||||
out, err = Convert(in, toFlag, u.Celsius)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
case "k", "kelvin":
|
||||
switch strings.ToLower(cmd.Flag("to").Value.String()) {
|
||||
case "f", "farenheit":
|
||||
out = (in-kconst)*nine_over_five + 32
|
||||
case "c", "celsius":
|
||||
out = in - kconst
|
||||
case "k", "kelvin":
|
||||
out = in
|
||||
case "r", "rankine":
|
||||
out = in * nine_over_five
|
||||
}
|
||||
case "r", "rankine":
|
||||
switch strings.ToLower(cmd.Flag("to").Value.String()) {
|
||||
case "f", "farenheit":
|
||||
out = in - rconst
|
||||
case "c", "celsius":
|
||||
out = (in - (rconst + 32)) * nine_over_five
|
||||
case "k", "kelvin":
|
||||
out = in * five_over_nine
|
||||
case "r", "rankine":
|
||||
out = in
|
||||
out, err = Convert(in, toFlag, u.Kelvin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
fmt.Println(strconv.FormatFloat(out, 'f', 2, 64))
|
||||
fmt.Println(out.String())
|
||||
return nil
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func Convert(in float64, to string, from u.Unit) (u.Value, error) {
|
||||
switch to {
|
||||
case "f", "farenheit":
|
||||
return u.ConvertFloat(in, from, u.Fahrenheit)
|
||||
case "c", "celsius":
|
||||
return u.ConvertFloat(in, from, u.Celsius)
|
||||
case "k", "kelvin":
|
||||
return u.ConvertFloat(in, from, u.Kelvin)
|
||||
}
|
||||
return u.Value{}, fmt.Errorf("Invalid flags provided")
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(tempCmd)
|
||||
tempCmd.PersistentFlags().StringVarP(&from, "from", "f", "c", "unit system to convert from, (farenheit, celsius, kelvin)")
|
||||
tempCmd.PersistentFlags().StringVarP(&to, "to", "t", "f", "unit system to convert to, (farenheit, celsius, kelvin)")
|
||||
|
||||
// Here you will define your flags and configuration settings.
|
||||
|
||||
// Cobra supports Persistent Flags which will work for this command
|
||||
// and all subcommands, e.g.:
|
||||
// tempCmd.PersistentFlags().String("foo", "", "A help for foo")
|
||||
|
||||
// Cobra supports local flags which will only run when this command
|
||||
// is called directly, e.g.:
|
||||
// tempCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
||||
}
|
||||
|
3
go.mod
3
go.mod
@ -3,6 +3,9 @@ module gitea.asdf.cafe/abs3nt/converter
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
github.com/Knetic/govaluate v3.0.0+incompatible // indirect
|
||||
github.com/bcicen/bfstree v1.0.0 // indirect
|
||||
github.com/bcicen/go-units v1.0.4 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.0.1 // indirect
|
||||
github.com/spf13/cobra v1.6.1 // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
|
6
go.sum
6
go.sum
@ -1,3 +1,9 @@
|
||||
github.com/Knetic/govaluate v3.0.0+incompatible h1:7o6+MAPhYTCF0+fdvoz1xDedhRb4f6s9Tn1Tt7/WTEg=
|
||||
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||
github.com/bcicen/bfstree v1.0.0 h1:Fx9vcyXYspj2GIJqAvd1lwCNI+cQF/r2JJqxHHmsAO0=
|
||||
github.com/bcicen/bfstree v1.0.0/go.mod h1:u//juIip96SNFkG4iMn9z0KzqLSeFSpBKoBo5ceq1uE=
|
||||
github.com/bcicen/go-units v1.0.4 h1:ZSllGgj9jFa9n3EikJqkeZr5I0qDlnCTutGHfPhGv2M=
|
||||
github.com/bcicen/go-units v1.0.4/go.mod h1:c7/sSz9cc6XvnrjsyNwoKHqN6KDDf8LME5vSf+U5Y08=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||
github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
|
||||
github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
|
Loading…
Reference in New Issue
Block a user