golang代码生成器

主要使用工具:

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.14codego_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

  

原文地址:https://www.cnblogs.com/sunlong88/p/15177446.html