From 8999a128e7a602ef91eeefa4a42f392c632125aa Mon Sep 17 00:00:00 2001 From: Jose Carlos Moro Date: Wed, 20 Oct 2021 18:08:32 +0200 Subject: [PATCH] Add stores command --- 02-refactor-to-cobra/cmd/beers-cli/main.go | 1 + 02-refactor-to-cobra/internal/cli/stores.go | 41 +++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 02-refactor-to-cobra/internal/cli/stores.go diff --git a/02-refactor-to-cobra/cmd/beers-cli/main.go b/02-refactor-to-cobra/cmd/beers-cli/main.go index 4b3ae21..e074938 100644 --- a/02-refactor-to-cobra/cmd/beers-cli/main.go +++ b/02-refactor-to-cobra/cmd/beers-cli/main.go @@ -8,5 +8,6 @@ import ( func main() { rootCmd := &cobra.Command{Use: "beers-cli"} rootCmd.AddCommand(cli.InitBeersCmd()) + 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..7a037be --- /dev/null +++ b/02-refactor-to-cobra/internal/cli/stores.go @@ -0,0 +1,41 @@ +package cli + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +type CobraStoreFn func(cmd *cobra.Command, args []string) + +var stores = map[string]string{ + "01DC9ZAPGKEQJS4P4A48EG3P43": "Mercadona", + "01DC9ZB23EW0J0ARAER09SJDKC": "Carrefour", + "01DC9ZB89V1PQD977ZE6QXSQHH": "Alcampo", +} + +const idStoreFlag = "store" + +func InitStoresCmd() *cobra.Command { + storesCmd := &cobra.Command{ + Use: "stores", + Short: "Print data about stores", + Run: runStoresFn(), + } + + storesCmd.Flags().StringP(idStoreFlag, "s", "", "id of the store") + + return storesCmd +} + +func runStoresFn() CobraStoreFn { + return func(cmd *cobra.Command, args []string) { + store, _ := cmd.Flags().GetString(idStoreFlag) + + if store != "" { + fmt.Println(stores[store]) + } else { + fmt.Println(stores) + } + } +}