主要使用工具:
github.com/urfave/cli
初识cli工具包
package main import ( "go_cli/until" "log" "os" "github.com/urfave/cli" ) func main() { var opt until.Option var importFiles cli.StringSlice var protoPaths cli.StringSlice app := cli.NewApp() app.Version = "2.0.1" app.Flags = []cli.Flag{ cli.StringFlag{ Name: "f", Usage: "idl filename, May be specified multiple times", Required: true, Destination: &opt.Proto3Filename, }, cli.BoolFlag{ Name: "c", Usage: "generate grpc client code", Destination: &opt.GenClientCode, }, cli.BoolFlag{ Name: "s", Usage: "generate grpc server code", Destination: &opt.GenServerCode, }, cli.StringFlag{ Name: "p", Value: "", Usage: "prefix of package", Destination: &opt.Prefix, }, cli.StringSliceFlag{ Name: "i", Usage: "import proto file, Specify the proto file in which for proto file imports.May be specified multiple times", Value: &importFiles, }, cli.StringSliceFlag{ Name: "proto_path", Usage: "Specify the directory in which to search for imports. May be specified multiple times", Value: &protoPaths, }, } app.Action = func(c *cli.Context) error { return nil } err := app.Run(os.Args) if err != nil { log.Fatal(err) } }
D:\gocode1.14\code\go_cli>go run main.go --help NAME: main.exe - A new cli application USAGE: main.exe [global options] command [command options] [arguments...] VERSION: 2.0.1 COMMANDS: help, h Shows a list of commands or help for one command GLOBAL OPTIONS: -f value idl filename, May be specified multiple times -c generate grpc client code -s generate grpc server code -p value prefix of package -i value import proto file, Specify the proto file in which for proto file imports.May be specified multiple times --proto_path value Specify the directory in which to search for imports. May be specified multiple times --help, -h show help --version, -v print the version