【发布时间】:2018-09-16 05:42:44
【问题描述】:
我正在构建一个小 cli 工具,用于在开发或生产中引导我的应用程序。
我希望它的工作方式是这样的:
app run --dev or app run --prod
Atm 它不会在我的命令之后但仅在我的命令之前解析标志。所以这行得通
app --dev run or app --prod run
任何想法如何解决这个问题,以便我可以在我的命令后使用它?这是我的代码
func main() {
//flag.Usage := usage
flag.Parse()
args := flag.Args()
if len(args) == 0 {
Usage()
os.Exit(0)
}
if *dev {
os.Setenv("ENV", "development")
}
if *prod {
os.Setenv("ENV", "production")
}
switch {
// Run
case args[0] == "run" && len(args) == 1:
os.Setenv("port", *port)
log.Printf("Booting in %s", os.Getenv("ENV"))
Run()
// Help
case args[0] == "help" && len(args) == 1:
Usage()
}
}
【问题讨论】:
-
为什么不直接打电话给
ENV=dev yourapp run- 这样可以避免你正在进行的奇怪的 SetEnv 舞蹈,直接设置它(并且只用于那个运行)。
标签: go flags command-line-interface