я создаю небольшой инструмент 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, который у вас есть, и просто установить его напрямую (и только для этого запуска). - person elithrar   schedule 04.08.2014