我在https://github.com/urfave/cli使用urfave 用两个子命令创建一个CLI。 我可以使用子命令创建CLI, 但我真的不知道如何定义标志。 全局标志和局部标志有什么区别?
答案 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工具可能需要用于所有命令的某种配置很有用。例如与之对话的服务器地址。