From 036e472e8d542833e07f731f533bde5b66c28957 Mon Sep 17 00:00:00 2001 From: Diego Date: Thu, 13 Apr 2023 11:53:01 +0200 Subject: [PATCH] Adding stores cmd --- 02-refactor-to-cobra/cmd/stores-cli/main.go | 12 ++++++ 02-refactor-to-cobra/internal/cli/stores.go | 42 +++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 02-refactor-to-cobra/cmd/stores-cli/main.go create mode 100644 02-refactor-to-cobra/internal/cli/stores.go diff --git a/02-refactor-to-cobra/cmd/stores-cli/main.go b/02-refactor-to-cobra/cmd/stores-cli/main.go new file mode 100644 index 0000000..1169aff --- /dev/null +++ b/02-refactor-to-cobra/cmd/stores-cli/main.go @@ -0,0 +1,12 @@ +package main + +import ( + "github.com/CodelyTV/golang-examples/02-refactor-to-cobra/internal/cli" + "github.com/spf13/cobra" +) + +func main() { + rootCmd := &cobra.Command{Use: "stores-cli"} + rootCmd.AddCommand(cli.InitStoresCmd()) + rootCmd.Execute() +} diff --git a/02-refactor-to-cobra/internal/cli/stores.go b/02-refactor-to-cobra/internal/cli/stores.go new file mode 100644 index 0000000..267d18e --- /dev/null +++ b/02-refactor-to-cobra/internal/cli/stores.go @@ -0,0 +1,42 @@ +package cli + +import ( + "fmt" + "github.com/spf13/cobra" +) + +// CobraFn function definion of run cobra command +type CobraAFn func(cmd *cobra.Command, args []string) + +var stores = map[string]string{ + "01DC9ZAPGKEQJS4P4A48EG3P43": "Mercadona", + "01DC9ZB23EW0J0ARAER09SJDKC": "Carrefour", + "01DC9ZB89V1PQD977ZE6QXSQHH": "Alcampo", +} + +const idAFlag = "id" + +// InitStoresCmd initialize stores command +func InitStoresCmd() *cobra.Command { + storesCmd := &cobra.Command{ + Use: "stores", + Short: "Print data about beer stores", + Run: runStoresFn(), + } + + storesCmd.Flags().StringP(idFlag, "i", "", "id of the beer store") + + return storesCmd +} + +func runStoresFn() CobraAFn { + return func(cmd *cobra.Command, args []string) { + id, _ := cmd.Flags().GetString(idAFlag) + + if id != "" { + fmt.Println(stores[id]) + } else { + fmt.Println(stores) + } + } +}