我正在使用urfave/cli在 Go 中构建 CLI 应用程序。
我想要的是在第一个命令之后给出的选项被视为参数而不是标志(以便我可以自己处理它们或将它们传递给其他可执行文件)。
使用时app.Action
(见下文),这是我得到的行为,但如果我使用,cli.Commands
则会出现错误。
package main
import (
"fmt"
"github.com/urfave/cli"
"log"
"os"
)
func main() {
app := cli.NewApp()
app.Commands = []cli.Command{
{
Name: "test",
Action: func(c *cli.Context) error {
fmt.Println("test", c.Args())
return nil
},
},
}
app.Action = func(c *cli.Context) error {
fmt.Println(c.Args())
return nil
}
err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}
输出:go run main.go cmd -f flag:
[cmd -f flag]
但go run main.go test cmd -f flag退出时出现错误,我希望它输出
test [cmd -f flag]
喵喔喔
相关分类