From ba29e7d8dc38b3f972d6c86ef35ad1e33c9a9dd4 Mon Sep 17 00:00:00 2001 From: Connor van Spronssen Date: Tue, 26 Nov 2024 21:29:40 +0100 Subject: [PATCH] Allow global flags to go after the subcommand --- main.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 1f5f013..bcb1123 100644 --- a/main.go +++ b/main.go @@ -39,9 +39,13 @@ func init() { func main() { flag.Parse() - applyGlobalFlags() args := flag.Args() + + if len(args) < 1 { + listSubCommands() + } + cmdName := args[0] var err error @@ -50,14 +54,18 @@ func main() { switch cmdName { case "migrate:db": reset := flag.Bool("reset", false, "Migrate from a clean database. Warning: this will delete existing data") + registerGlobalFlags(flag) flag.Parse(args[1:]) + applyGlobalFlags() err = migrate_db.Main(*reset) break case "remote:sync": reset := flag.Bool("reset", false, "Synchronise all data, instead of starting from the last sync token") + registerGlobalFlags(flag) flag.Parse(args[1:]) + applyGlobalFlags() err = remote_sync.Sync(*reset) break @@ -70,6 +78,12 @@ func main() { } } +func registerGlobalFlags(fset *flag.FlagSet) { + flag.VisitAll(func(f *flag.Flag) { + fset.Var(f.Value, f.Name, f.Usage) + }) +} + func applyGlobalFlags() { if *verbose { logger.SetLogLevel(logger.LOG_VERBOSE)