Cobra 更改帮助模板中的用法行

Usage如果在 Go 中的 cobra 命令上调用帮助函数,我希望能够设置该行以指定要传递的参数 NEEDS。


这是常规帮助标志输出的内容:


Cancel the order specified by the order id by submitting a cancel order.

Optionally, an account ID may be supplied as well for extra measure.


Usage:

  gbutil orders cancel [flags]


Flags:

  -a, --account_id string   the account id that the order belongs to

  -h, --help                help for cancel


Global Flags:

      --config string   config file (default is $HOME/.gbutil.yaml)

我想:


Cancel the order specified by the order id by submitting a cancel order.

Optionally, an account ID may be supplied as well for extra measure.


Usage:

  gbutil orders cancel <order_id> [flags]


Flags:

  -a, --account_id string   the account id that the order belongs to

  -h, --help                help for cancel


Global Flags:

      --config string   config file (default is $HOME/.gbutil.yaml)

我试过SetUsageTemplate在init()函数中使用,但它删除了部分标志:


orderscancelCmd.SetUsageTemplate(strings.Replace(orderscancelCmd.UsageString(), "gbutil orders cancel [flags]", "gbutil orders cancel <order_id> [flags]", 1))

这导致:


Cancel the order specified by the order id by submitting a cancel order.

Optionally, an account ID may be supplied as well for extra measure.


Usage:

  gbutil orders cancel <order_id> [flags]


Flags:

  -a, --account_id string   the account id that the order belongs to

我在哪里丢失了-h标志和有关的附加信息Global Flags。


如果他们不通过以下方式提供 arg,我可以让它工作:


        if err := cobra.ExactArgs(1)(cmd, args); err != nil {

            fmt.Println(strings.Replace(cmd.UsageString(), "gbutil orders cancel [flags]", "gbutil orders cancel <order_id> [flags]", 1))

            return

        }

但随后-h标志仍然输出错误的用法行。


有没有办法做到这一点?提前致谢!


莫回无
浏览 110回答 1
1回答

青春有我

更改用法名称的外观。您可以将其传递给cobra.Command.Use参数。所以对你来说它可能看起来像这样:var cmdCancel = &cobra.Command{&nbsp; &nbsp; Use:&nbsp; &nbsp;"cancel <order_id>",&nbsp; &nbsp; Args: cobra.ExactArgs(1), // make sure that only one arg can be passed&nbsp; &nbsp; // Your logic here}&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP