github.com/lkingland/gridd@v0.0.0-20230313082622-f3ae21fe9d22/cmd/gridd/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "os" 7 "strconv" 8 "strings" 9 10 "github.com/lkingland/gridd" 11 "github.com/lkingland/gridd/boson" 12 ) 13 14 var usage = `gridd 15 16 Plug the current node into the Grid. 17 ` 18 var ( 19 Version = flag.Bool("version", false, "Print version [$GRIDD_VERSION]") 20 Verbose = flag.Bool("verbose", false, "Print verbose logs [$GRIDD_VERBOSE]") 21 22 date string 23 vers string 24 hash string 25 ) 26 27 func parseEnv() { 28 parseBool("GRIDD_VERSION", Version) 29 parseBool("GRIDD_VERBOSE", Verbose) 30 } 31 32 func printCfg() { 33 fmt.Printf("GRIDD_VERSION=%v\n", *Version) 34 fmt.Printf("GRIDD_VERBOSE=%v\n", *Verbose) 35 } 36 37 func main() { 38 flag.Usage = func() { 39 fmt.Fprintln(os.Stderr, usage) 40 flag.PrintDefaults() 41 } 42 parseEnv() 43 flag.Parse() 44 45 if *Verbose { 46 printCfg() 47 } 48 49 if *Version || (len(os.Args) > 1 && os.Args[1] == "version") { 50 fmt.Println(version()) 51 return 52 } 53 54 if err := run(); err != nil { 55 fmt.Fprintln(os.Stderr, err) 56 os.Exit(1) 57 } 58 } 59 60 func run() (err error) { 61 fmt.Println("start", version()) 62 63 provider := boson.NewProvider(*Verbose) 64 _ = gridd.New(provider, gridd.WithVerbose(*Verbose)) 65 66 return nil 67 } 68 69 func parseBool(key string, value *bool) { 70 if val, ok := os.LookupEnv(key); ok { 71 b, err := strconv.ParseBool(val) 72 if err != nil { 73 panic(err) 74 } 75 *value = b 76 } 77 } 78 79 func version() string { 80 // If 'vers' is not a semver already, then the binary was built either 81 // from an untagged git commit or was built directly from source 82 // (set semver to v0.0.0) 83 84 var elements = []string{} 85 if strings.HasPrefix(vers, "v") { 86 elements = append(elements, vers) // built via make with a tagged commit 87 } else { 88 elements = append(elements, "v0.0.0") // from source or untagged commit 89 } 90 91 if date != "" { 92 elements = append(elements, date) 93 } 94 95 if hash != "" { 96 elements = append(elements, hash) 97 } 98 99 return strings.Join(elements, "-") 100 101 }