如何在Golang urfave CLI中将标志值传递给子命令

时间:2019-02-27 02:40:14

标签: go

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

1 个答案:

答案 0 :(得分:0)

每个命令可以选择指定一个“子命令”。子命令的类型为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工具可能需要用于所有命令的某种配置很有用。例如与之对话的服务器地址。