主要使用工具:

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