github.com/abhinav/git-pr@v0.6.1-0.20171029234004-54218d68c11b/cli/main.go (about) 1 package cli 2 3 import ( 4 "log" 5 6 "github.com/jessevdk/go-flags" 7 ) 8 9 type mainConfig struct { 10 ShortDesc string 11 Commands []*Command 12 } 13 14 // Main is the entry point for programs provided by this package. 15 func Main(opts ...Option) { 16 log.SetFlags(0) 17 18 var cfg mainConfig 19 for _, o := range opts { 20 o.apply(&cfg) 21 } 22 23 var gcfg globalConfig 24 parser := flags.NewParser(&gcfg, flags.HelpFlag|flags.PassDoubleDash) 25 for _, cmd := range cfg.Commands { 26 _, err := parser.AddCommand( 27 cmd.Name, cmd.ShortDesc, "", cmd.Build(gcfg.Build)) 28 if err != nil { 29 log.Fatalf("Could not register command %q: %v", cmd.Name, err) 30 } 31 } 32 33 if _, err := parser.Parse(); err != nil { 34 log.Fatalf("%+v", err) 35 } 36 }