github.com/markbates/grift@v1.5.0/cli/main.go (about) 1 package cli 2 3 import ( 4 "context" 5 "flag" 6 "fmt" 7 ) 8 9 func Main(ctx context.Context, args []string) error { 10 if len(args) == 0 { 11 return Help(ctx, args) 12 } 13 14 opts := struct { 15 version bool 16 help bool 17 }{} 18 19 flags := flag.NewFlagSet("", flag.ContinueOnError) 20 flags.BoolVar(&opts.version, "v", false, "display version") 21 flags.BoolVar(&opts.help, "h", false, "display help") 22 23 if err := flags.Parse(args); err != nil { 24 return err 25 } 26 27 args = flags.Args() 28 29 if opts.help { 30 return Help(ctx, args) 31 } 32 33 if opts.version { 34 stdout := Stdout(ctx) 35 fmt.Fprintln(stdout, Version) 36 return nil 37 } 38 39 switch args[0] { 40 case "init": 41 return Init(ctx, args) 42 case "jim": 43 return Jim(ctx, args) 44 } 45 46 return Run(ctx, args) 47 }