我正在开发一个小型的CLI工具,用于在开发或生产环境中启动我的应用程序。
我希望它能够按照以下方式工作:
```` ````
我希望它能够按照以下方式工作:
```` ````
app run --dev or app run --prod
目前它仅在我的命令之前解析标记,而不是在我的命令之后解析标记。 因此,这个可以工作。
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 操作,直接设置(并且仅针对该运行)即可。 - elithrar