登录
首页 >  Golang >  Go问答

如何在 golang urfave cli 中将标志参数传递给子命令

来源:stackoverflow

时间:2024-03-20 23:18:43 104浏览 收藏

在使用 urfave cli 创建带有子命令的 CLI 时,可以指定标志参数。全局标志适用于所有命令和子命令,而局部标志仅适用于特定的子命令。要实现类似“cli-tool command1 command2 --command2flag”的目标,可以使用嵌套命令结构,其中子命令 command2 包含其自己的标志,例如 --command2flag。

问题内容

我正在 https://github.com/urfave/cli 使用 urfave 创建带有两个子命令的 CLI。 我可以使用子命令创建 CLI, 但我真的不知道如何定义标志。 全局标志和局部标志有什么区别?


解决方案


每个命令都可以选择指定一个“子命令”。子命令的类型为 command,它允许嵌套/组合命令。

实现类似的目标:

cli-tool command1 command2 --command2flag

你可以有一个像这样的命令结构:

app := &cli.App{
    //...
    Commands: []*cli.Command{
      {
        Name:    "command1",
        Usage:   // ...
        Action:  //...
        SubCommand: []cli.Command{
           {
               Name: "command2"
               Flags: []cli.Flag{
                  cli.StringFlag{
                     Name: "command2flag"
                     // ...
                  },
               },
           },
        },
      },
    //...
    }

您可以在此处看到 command2 嵌套在 command1 的子命令中。 command2 的标志仅适用于 command2。这是本地标志的示例。

全局标志将应用于每个命令和子命令。这对于 cli 工具可能需要用于所有命令的某种配置很有用。例如与之通信的服务器地址等。

今天关于《如何在 golang urfave cli 中将标志参数传递给子命令》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>