英文:
Named Positional Arguments in Cobra
问题
我有以下的Cobra子命令:
package stripeCommands
import (
"fmt"
"cmd/cliConstants"
"github.com/spf13/cobra"
"log"
)
var (
deleteCustomerCommand = &cobra.Command{
Use: "delete",
Short: "Delete Stripe customer(s) by ids.",
Args: cobra.MinimumNArgs(1),
ArgAliases: []string{"stripe_customer_id"},
PreRun: func(cmd *cobra.Command, args []string) {
},
Run: func(cmd *cobra.Command, args []string) {
log.Printf("IDs: %v", args)
},
}
)
func init() {
flags := deleteCustomerCommand.Flags()
// -k|--stripe-api-key|STRIPE_API_KEY
flags.StringP(cliConstants.CLIFlagStripeAPIKey, "k", "",
fmt.Sprintf("The Stripe API key. [env: %s]", cliConstants.EnvVarStripeAPIKey))
}
这个命令可以通过./my-app stripe customers delete -k $STRIPE_API_KEY $CUSTOMER_ID_1 $CUSTOMER_ID_2
来调用。
虽然cobra.MinimumNArgs(1)
确保我至少得到一个位置参数,但我找不到一种方法将其显示在帮助文档中:
Error: requires at least 1 arg(s), only received 0
Usage:
my-app stripe customers delete [flags]
Flags:
-h, --help help for delete
-k, --stripe-api-key string The Stripe API key. [env: stripe_api_key]
2021/09/13 12:00:39 Failed to execute command: requires at least 1 arg(s), only received 0
有没有办法告诉Cobra在帮助文档中显示位置参数,像这样:
Usage:
my-app stripe customers delete [flags] customer_id [...customer_id]
目前的帮助文档对于向用户显示应该传递什么作为位置参数并不是很有帮助。
英文:
I have the following Cobra sub-command:
package stripeCommands
import (
"fmt"
"cmd/cliConstants"
"github.com/spf13/cobra"
"log"
)
var (
deleteCustomerCommand = &cobra.Command{
Use: "delete",
Short: "Delete Stripe customer(s) by ids.",
Args: cobra.MinimumNArgs(1),
ArgAliases: []string{"stripe_customer_id"},
PreRun: func(cmd *cobra.Command, args []string) {
},
Run: func(cmd *cobra.Command, args []string) {
log.Printf("IDs: %v", args)
},
}
)
func init() {
flags := deleteCustomerCommand.Flags()
// -k|--stripe-api-key|STRIPE_API_KEY
flags.StringP(cliConstants.CLIFlagStripeAPIKey, "k", "",
fmt.Sprintf("The Stripe API key. [env: %s]", cliConstants.EnvVarStripeAPIKey))
}
The idea is to call this via ./my-app stripe customers delete -k $STRIPE_API_KEY $CUSTOMER_ID_1 $CUSTOMER_ID_2
.
While cobra.MinimumNArgs(1)
does ensure I get at least one positional argument, I can't find a way to make this show up in the help documentation:
Error: requires at least 1 arg(s), only received 0
Usage:
my-app stripe customers delete [flags]
Flags:
-h, --help help for delete
-k, --stripe-api-key string The Stripe API key. [env: stripe_api_key]
2021/09/13 12:00:39 Failed to execute command: requires at least 1 arg(s), only received 0
Is there a way to tell Cobra to display positional args in the help like:
Usage:
my-app stripe customers delete [flags] customer_id [...customer_id]
Right now the help documentation is not very helpful in displaying to the user what they should pass as positional arguments.
答案1
得分: 1
将您的命令的Use
字段设置为:
deleteCustomerCommand = &cobra.Command{
Use: "delete [flags] customer_id [...customer_id]",
...
有关如何使用它的完整详细信息可以在cmd.UseLine()
的代码中找到:
https://github.com/spf13/cobra/blob/v1.2.1/command.go#L1245
英文:
Set the Use
field for your command to :
deleteCustomerCommand = &cobra.Command{
Use: "delete [flags] customer_id [...customer_id]",
...
The complete details of how it is used can be found in the code for cmd.UseLine()
:
https://github.com/spf13/cobra/blob/v1.2.1/command.go#L1245
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论