From 64b22425678c4ed35cd6dbd5e5fd354ae8532ed8 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Tue, 3 Dec 2024 15:22:35 -0600 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Move=20cli=20code=20to=20i?= =?UTF-8?q?nternal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/convids/main.go | 19 +++++++---------- internal/cli/convids/flags.go | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 internal/cli/convids/flags.go diff --git a/cmd/convids/main.go b/cmd/convids/main.go index b8b82ac..caaf276 100644 --- a/cmd/convids/main.go +++ b/cmd/convids/main.go @@ -9,28 +9,23 @@ import ( e "codeberg.org/danjones000/utils/cli/err" "codeberg.org/danjones000/utils/cli/spin" "codeberg.org/danjones000/utils/convids" - "github.com/spf13/pflag" + ccli "codeberg.org/danjones000/utils/internal/cli/convids" ) const dataPath = "shows.yml" func main() { - loop := pflag.BoolP("loop", "l", false, "Loop") - help := pflag.BoolP("help", "h", false, "Get Help") - dryRun := pflag.BoolP("dry-run", "d", false, "Do a dry run") - pflag.Parse() - - if *help { - pflag.Usage() - os.Exit(2) + flags, err := ccli.ParseFlags(os.Args[0], os.Args[1:]) + e.HandleErr(err) + if *ccli.Help { + flags.Usage() } ctx, done := c.SelfCancelingContextFromBackground() defer done() var walker convids.ShowWalker - if *dryRun { - *loop = false + if *ccli.DryRun { walker = convids.DryRun(os.Stdout) } else { gs := convids.GetShow(ctx) @@ -52,7 +47,7 @@ func main() { groupPrinter := convids.PrintGroupName(os.Stdout) - if *loop { + if *ccli.Loop { fmt.Println("looping") for err == nil { err = convids.WalkFiles(data, false, groupPrinter, walker) diff --git a/internal/cli/convids/flags.go b/internal/cli/convids/flags.go new file mode 100644 index 0000000..af2b2af --- /dev/null +++ b/internal/cli/convids/flags.go @@ -0,0 +1,39 @@ +package convids + +import ( + "fmt" + + "github.com/spf13/pflag" +) + +var Help *bool +var Loop *bool +var DryRun *bool + +func GetFlags(name string) *pflag.FlagSet { + flags := pflag.NewFlagSet(name, pflag.ExitOnError) + + Help = flags.BoolP("help", "h", false, "Get Help") + Loop = flags.BoolP("loop", "l", false, "Loop") + DryRun = flags.BoolP("dry-run", "d", false, "Do a dry run (won't loop)") + + flags.Usage = func() { + fmt.Printf("Usage of %s:\n", name) + flags.PrintDefaults() + } + return flags +} + +func ParseFlags(name string, args []string) (*pflag.FlagSet, error) { + flags := GetFlags(name) + err := flags.Parse(args) + if err != nil { + return nil, err + } + + if *DryRun { + flags.Set("loop", "false") + } + + return flags, nil +}