From 9a3e2abc3b896a7776d24ab6e2f84a80d0ed5649 Mon Sep 17 00:00:00 2001 From: Josh McSavaney Date: Wed, 5 Feb 2025 11:20:59 -0500 Subject: [PATCH] Use flag.CommandLine for flags. (#132) The custom flagset adds unnecessary complexity and doesn't mesh with the simpler `flag.Type` functions. --- googet.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/googet.go b/googet.go index 3004f58..860d9c5 100644 --- a/googet.go +++ b/googet.go @@ -60,6 +60,9 @@ var ( proxyServer string allowUnsafeURL bool lockFile string + + // Optional function to handle flag parsing. If unset, we use flag.Parse. + flagParse func() ) type packageMap map[string]string @@ -471,15 +474,16 @@ func obtainLock(lockFile string) error { } func main() { - ggFlags := flag.NewFlagSet(filepath.Base(os.Args[0]), flag.ContinueOnError) - ggFlags.StringVar(&rootDir, "root", os.Getenv(envVar), "googet root directory") - ggFlags.BoolVar(&noConfirm, "noconfirm", false, "skip confirmation") - ggFlags.BoolVar(&verbose, "verbose", false, "print info level logs to stdout") - ggFlags.BoolVar(&systemLog, "system_log", true, "log to Linux Syslog or Windows Event Log") - ggFlags.BoolVar(&showVer, "version", false, "display GooGet version and exit") - - if err := ggFlags.Parse(os.Args[1:]); err != nil && err != flag.ErrHelp { - logger.Fatal(err) + flag.StringVar(&rootDir, "root", os.Getenv(envVar), "googet root directory") + flag.BoolVar(&noConfirm, "noconfirm", false, "skip confirmation") + flag.BoolVar(&verbose, "verbose", false, "print info level logs to stdout") + flag.BoolVar(&systemLog, "system_log", true, "log to Linux Syslog or Windows Event Log") + flag.BoolVar(&showVer, "version", false, "display GooGet version and exit") + + if flagParse != nil { + flagParse() + } else { + flag.Parse() } if showVer { @@ -487,7 +491,7 @@ func main() { os.Exit(0) } - cmdr := subcommands.NewCommander(ggFlags, "googet") + cmdr := subcommands.NewCommander(flag.CommandLine, "googet") cmdr.Register(cmdr.FlagsCommand(), "") cmdr.Register(cmdr.CommandsCommand(), "") cmdr.Register(cmdr.HelpCommand(), "") @@ -508,7 +512,7 @@ func main() { cmdr.ImportantFlag("noconfirm") nonLockingCommands := []string{"help", "commands", "flags"} - if ggFlags.NArg() == 0 || goolib.ContainsString(ggFlags.Args()[0], nonLockingCommands) { + if flag.NArg() == 0 || goolib.ContainsString(flag.Args()[0], nonLockingCommands) { os.Exit(int(cmdr.Execute(context.Background()))) }