From f8c0ea032c63d9a5ba2ca1f56c145c565ef3e31e Mon Sep 17 00:00:00 2001 From: Kelvin Wang Date: Tue, 31 Dec 2019 14:45:42 -0500 Subject: [PATCH] fix(cmd/influx): show see help, instead of usage --- CHANGELOG.md | 1 + cmd/influx/authorization.go | 4 +--- cmd/influx/bucket.go | 11 ++++------- cmd/influx/main.go | 36 +++++++++++++++++++++++++++++++++--- cmd/influx/organization.go | 8 ++------ cmd/influx/task.go | 10 +++------- cmd/influx/user.go | 4 +--- cmd/influx/write.go | 3 --- go.mod | 7 +++---- go.sum | 24 +++++++++++++++--------- 10 files changed, 63 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27bf5cdfa41..12fd743bc81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ 1. [16255](https://github.com/influxdata/influxdb/pull/16255): Retain user input when parsing invalid JSON during import 1. [16268](https://github.com/influxdata/influxdb/pull/16268): Fixed test flakiness that stemmed from multiple flush/signins being called in the same test suite 1. [16346](https://github.com/influxdata/influxdb/pull/16346): Update pkger task export to only trim out option task and not all vars provided +1. [16374](https://github.com/influxdata/influxdb/pull/16374): Update influx CLI, only show "see help" message, instead of the whole usage. ### UI Improvements diff --git a/cmd/influx/authorization.go b/cmd/influx/authorization.go index 3a5b9e447c2..7fd9571ee3e 100644 --- a/cmd/influx/authorization.go +++ b/cmd/influx/authorization.go @@ -54,9 +54,7 @@ func authCmd() *cobra.Command { Use: "auth", Aliases: []string{"authorization"}, Short: "Authorization management commands", - Run: func(cmd *cobra.Command, args []string) { - cmd.Usage() - }, + Run: seeHelp, } cmd.AddCommand( authActiveCmd(), diff --git a/cmd/influx/bucket.go b/cmd/influx/bucket.go index 20c9f6f6fd4..12c52c69677 100644 --- a/cmd/influx/bucket.go +++ b/cmd/influx/bucket.go @@ -15,13 +15,10 @@ import ( // Bucket Command var bucketCmd = &cobra.Command{ - Use: "bucket", - Short: "Bucket management commands", - Run: bucketF, -} - -func bucketF(cmd *cobra.Command, args []string) { - cmd.Usage() + Use: "bucket", + Short: "Bucket management commands", + TraverseChildren: true, + Run: seeHelp, } // BucketCreateFlags define the Create Command diff --git a/cmd/influx/main.go b/cmd/influx/main.go index 39a59ab2bb0..64f8cfe0d5c 100644 --- a/cmd/influx/main.go +++ b/cmd/influx/main.go @@ -25,6 +25,7 @@ const maxTCPConnections = 128 func main() { influxCmd := influxCmd() if err := influxCmd.Execute(); err != nil { + seeHelp(influxCmd, nil) os.Exit(1) } } @@ -72,15 +73,44 @@ func out(w io.Writer) genericCLIOptfn { } } +func fetchSubCommand(parent *cobra.Command, args []string) *cobra.Command { + var err error + var cmd *cobra.Command + + // Workaround FAIL with "go test -v" or "cobra.test -test.v", see #155 + if args == nil && filepath.Base(os.Args[0]) != "cobra.test" { + args = os.Args[1:] + } + + if parent.TraverseChildren { + cmd, _, err = parent.Traverse(args) + } else { + cmd, _, err = parent.Find(args) + } + // return nil if any errs + if err != nil { + return nil + } + return cmd +} + +func seeHelp(c *cobra.Command, args []string) { + if c = fetchSubCommand(c, args); c == nil { + return //return here, since cobra already handles the error + } + c.Printf("See '%s -h' for help\n", c.CommandPath()) +} + func influxCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "influx", - Short: "Influx Client", + Use: "influx", + Short: "Influx Client", + SilenceUsage: true, Run: func(cmd *cobra.Command, args []string) { if err := checkSetup(flags.host); err != nil { fmt.Printf("Note: %v\n", internal.ErrorFmt(err)) } - cmd.Usage() + seeHelp(cmd, args) }, } diff --git a/cmd/influx/organization.go b/cmd/influx/organization.go index 77cda746391..fe4db74b040 100644 --- a/cmd/influx/organization.go +++ b/cmd/influx/organization.go @@ -17,7 +17,7 @@ func organizationCmd() *cobra.Command { Use: "org", Aliases: []string{"organization"}, Short: "Organization management commands", - Run: organizationF, + Run: seeHelp, } cmd.AddCommand( @@ -31,10 +31,6 @@ func organizationCmd() *cobra.Command { return cmd } -func organizationF(cmd *cobra.Command, args []string) { - cmd.Usage() -} - // Create Command type OrganizationCreateFlags struct { name string @@ -298,7 +294,7 @@ func orgMembersCmd() *cobra.Command { cmd := &cobra.Command{ Use: "members", Short: "Organization membership commands", - Run: organizationF, + Run: seeHelp, } cmd.AddCommand( diff --git a/cmd/influx/task.go b/cmd/influx/task.go index 7ecbc67fc6e..16f53d8cff9 100644 --- a/cmd/influx/task.go +++ b/cmd/influx/task.go @@ -25,24 +25,20 @@ func taskF(cmd *cobra.Command, args []string) error { return fmt.Errorf("local flag not supported for task command") } - cmd.Usage() + seeHelp(cmd, args) return nil } var logCmd = &cobra.Command{ Use: "log", Short: "Log related commands", - Run: func(cmd *cobra.Command, args []string) { - cmd.Usage() - }, + Run: seeHelp, } var runCmd = &cobra.Command{ Use: "run", Short: "Run related commands", - Run: func(cmd *cobra.Command, args []string) { - cmd.Usage() - }, + Run: seeHelp, } func init() { diff --git a/cmd/influx/user.go b/cmd/influx/user.go index 6f0923aa2f1..343cb44dc27 100644 --- a/cmd/influx/user.go +++ b/cmd/influx/user.go @@ -15,9 +15,7 @@ func userCmd() *cobra.Command { cmd := &cobra.Command{ Use: "user", Short: "User management commands", - Run: func(cmd *cobra.Command, args []string) { - cmd.Usage() - }, + Run: seeHelp, } cmd.AddCommand( userCreateCmd(), diff --git a/cmd/influx/write.go b/cmd/influx/write.go index 8258a831bb5..5bd013a9af6 100644 --- a/cmd/influx/write.go +++ b/cmd/influx/write.go @@ -69,17 +69,14 @@ func fluxWriteF(cmd *cobra.Command, args []string) error { ctx := context.Background() if writeFlags.Org != "" && writeFlags.OrgID != "" { - cmd.Usage() return fmt.Errorf("please specify one of org or org-id") } if writeFlags.Bucket != "" && writeFlags.BucketID != "" { - cmd.Usage() return fmt.Errorf("please specify one of bucket or bucket-id") } if !models.ValidPrecision(writeFlags.Precision) { - cmd.Usage() return fmt.Errorf("invalid precision") } diff --git a/go.mod b/go.mod index a6e8a2575f4..7ebeb72508a 100644 --- a/go.mod +++ b/go.mod @@ -55,7 +55,6 @@ require ( github.com/mattn/go-zglob v0.0.1 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 github.com/mileusna/useragent v0.0.0-20190129205925-3e331f0949a5 - github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mna/pigeon v1.0.1-0.20180808201053-bb0192cfc2ae github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae // indirect github.com/nats-io/gnatsd v1.3.0 @@ -75,10 +74,10 @@ require ( github.com/prometheus/common v0.6.0 github.com/prometheus/procfs v0.0.3 // indirect github.com/satori/go.uuid v1.2.0 - github.com/spf13/cast v1.2.0 - github.com/spf13/cobra v0.0.3 + github.com/spf13/cast v1.3.0 + github.com/spf13/cobra v0.0.5 github.com/spf13/pflag v1.0.3 - github.com/spf13/viper v1.2.1 + github.com/spf13/viper v1.3.2 github.com/stretchr/testify v1.4.0 github.com/tcnksm/go-input v0.0.0-20180404061846-548a7d7a8ee8 github.com/testcontainers/testcontainers-go v0.0.0-20190108154635-47c0da630f72 diff --git a/go.sum b/go.sum index 8a67b610b13..e70d4def3c2 100644 --- a/go.sum +++ b/go.sum @@ -39,6 +39,7 @@ github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db h1:nxAtV4Vaj github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= github.com/apex/log v1.1.0 h1:J5rld6WVFi6NxA6m8GJ1LJqu3+GiTFIt3mYv27gdQWI= github.com/apex/log v1.1.0/go.mod h1:yA770aXIDQrhVOIGurT/pVdfCpSq1GQV/auzMN5fzvY= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -75,6 +76,10 @@ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A= github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -313,8 +318,6 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/mapstructure v1.0.0 h1:vVpGvMXJPqSDh2VYHF7gsfQj8Ncx+Xw5Y1KHeTRY+7I= -github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= @@ -385,6 +388,7 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= @@ -406,18 +410,18 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.2.0 h1:HHl1DSRbEQN2i8tJmtS6ViPyHx35+p51amrdsiTCrkg= -github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.2 h1:Fy0orTDgHdbnzHcsOgfCN4LtHf0ec3wwtiwJqwvf3Gc= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.2.1 h1:bIcUwXqLseLF3BDAZduuNfekWG87ibtFxi59Bq+oI9M= -github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= +github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -442,8 +446,10 @@ github.com/uber/jaeger-client-go v2.15.0+incompatible h1:NP3qsSqNxh8VYr956ur1N/1 github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v1.5.0+incompatible h1:QsjOHVbRaYpt001rdkD/nNjuaSTWI+oxlMUJUIZmzR4= github.com/uber/jaeger-lib v1.5.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/willf/bitset v1.1.9 h1:GBtFynGY9ZWZmEC9sWuu41/7VBXPFCOAbCbqTflOg9c= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= @@ -516,10 +522,10 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181030150119-7e31e0c00fa0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb h1:pf3XwC90UUdNPYWZdFjhGBE7DUFuK3Ct1zWmZ65QN30= golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=