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  }