From b31056a5298e3681b273f5472c245c4255192670 Mon Sep 17 00:00:00 2001 From: weiyang Date: Wed, 27 Sep 2017 17:00:38 +0800 Subject: [PATCH 1/2] [cli] Optimize flags Signed-off-by: weiyang --- README.md | 18 ++++++++++-------- cli/cli.go | 56 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 9628124..b5ac975 100644 --- a/README.md +++ b/README.md @@ -27,18 +27,20 @@ COMMANDS: help, h Shows a list of commands or help for one command GLOBAL OPTIONS: - --package PKG, --pkg PKG (required) package url PKG - --expression EXPR, --expr EXPR (required) type expression EXPR - --proto-package PP, --pp PP (required) proto package PP - --proto-file PF, --pf PF load messages from proto file PF - --ignore-json-tag ignore json tag (default: true) - --help, -h show help - --version, -v print the version + --package PKG, -p PKG package path PKG (default: ".") + --expressions EXPRS, --exprs EXPRS (required) type expressions, seperated by ',', EXPRS + --proto-package PP, --pp PP (required) proto package PP + --proto-file PF, --pf PF load messages from proto file PF + --json-tag, --jt don't ignore json tag + --help, -h show help + --version, -v print the version ``` ## QuickStart -`tproto -pkg github.com/wy-z/tproto/samples -expr BasicTypes -pp samples` +`tproto -p github.com/wy-z/tproto/samples -exprs BasicTypes,NormalStruct -pp samples` +Or +`tproto -p github.com/wy-z/tproto/samples -pp samples BasicTypes NormalStruct` ## Samples diff --git a/cli/cli.go b/cli/cli.go index 560962d..6472803 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -3,17 +3,18 @@ package cli import ( "fmt" "os" + "strings" "github.com/urfave/cli" "github.com/wy-z/tproto/tproto" ) type cliOpts struct { - PkgURL string - TypeExpr string - ProtoPkg string - ProtoFile string - IgnoreJSONTag *bool + PkgPath string + TypeExprs string + ProtoPkg string + ProtoFile string + JSONTag bool } //Run runs tproto @@ -26,14 +27,15 @@ func Run(version string) { opts := new(cliOpts) app.Flags = []cli.Flag{ cli.StringFlag{ - Name: "package, pkg", - Usage: "(required) package url `PKG`", - Destination: &opts.PkgURL, + Name: "package, p", + Usage: "package path `PKG`", + Value: ".", + Destination: &opts.PkgPath, }, cli.StringFlag{ - Name: "expression, expr", - Usage: "(required) type expression `EXPR`", - Destination: &opts.TypeExpr, + Name: "expressions, exprs", + Usage: "(required) type expressions, seperated by ',', `EXPRS`", + Destination: &opts.TypeExprs, }, cli.StringFlag{ Name: "proto-package, pp", @@ -46,24 +48,23 @@ func Run(version string) { Destination: &opts.ProtoFile, }, cli.BoolFlag{ - Name: "ignore-json-tag", - Usage: "ignore json tag (default: true)", - Destination: opts.IgnoreJSONTag, + Name: "json-tag, jt", + Usage: "don't ignore json tag", + Destination: &opts.JSONTag, }, } app.Action = func(c *cli.Context) (err error) { - if opts.PkgURL == "" || opts.TypeExpr == "" || opts.ProtoPkg == "" { + if c.NArg() > 0 { + opts.TypeExprs = strings.Join(c.Args(), ",") + } + if opts.TypeExprs == "" || opts.ProtoPkg == "" { cli.ShowAppHelp(c) return } parser := tproto.NewParser() parserOpts := tproto.DefaultParserOptions - if opts.IgnoreJSONTag != nil { - parserOpts.IgnoreJSONTag = *opts.IgnoreJSONTag - } else { - parserOpts.IgnoreJSONTag = true - } + parserOpts.IgnoreJSONTag = !opts.JSONTag parser.Options(parserOpts) if opts.ProtoFile != "" { @@ -74,12 +75,17 @@ func Run(version string) { return } } - _, err = parser.Parse(opts.PkgURL, opts.TypeExpr) - if err != nil { - msg := fmt.Sprintf("failed to parse type expr %s: %+v", opts.TypeExpr, err) - err = cli.NewExitError(msg, 1) - return + + for _, expr := range strings.Split(opts.TypeExprs, ",") { + expr = strings.TrimSpace(expr) + _, err = parser.Parse(opts.PkgPath, expr) + if err != nil { + msg := fmt.Sprintf("failed to parse type expr %s: %s", expr, err) + err = cli.NewExitError(msg, 1) + return + } } + fmt.Println(parser.RenderProto(opts.ProtoPkg).String()) return } From 3d8bf58af0fd045859a0d01cc1418c3ae2e852c5 Mon Sep 17 00:00:00 2001 From: weiyang Date: Wed, 27 Sep 2017 17:07:56 +0800 Subject: [PATCH 2/2] [version] 1.0.1 Signed-off-by: weiyang --- README.md | 2 +- main.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b5ac975..fca6b9e 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ USAGE: tproto [global options] command [command options] [arguments...] VERSION: - 1.0.0 + 1.0.1 COMMANDS: help, h Shows a list of commands or help for one command diff --git a/main.go b/main.go index b493269..945d963 100644 --- a/main.go +++ b/main.go @@ -4,7 +4,7 @@ import ( "github.com/wy-z/tproto/cli" ) -const version = "1.0.0" +const version = "1.0.1" func main() { cli.Run(version)