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  }