From 79c6a1ea8a211dc8f8f3acaaf398bdb34c8329d6 Mon Sep 17 00:00:00 2001 From: bdoerfchen Date: Thu, 24 Jul 2025 21:19:40 +0200 Subject: [PATCH 1/3] feat: add name formatter --- core/output/formatter.go | 1 + core/output/name.go | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 core/output/name.go diff --git a/core/output/formatter.go b/core/output/formatter.go index f5f0583..bacbd2b 100644 --- a/core/output/formatter.go +++ b/core/output/formatter.go @@ -12,4 +12,5 @@ var Formatters = map[string]interfaces.Formatter{ "csv": &TableFormatter{HideSummary: true, RenderFormat: tableFormatCSV}, "html": &TableFormatter{HideSummary: true, RenderFormat: tableFormatHTML}, "markdown": &TableFormatter{HideSummary: true, RenderFormat: tableFormatMarkdown}, + "name": &NameFormatter{}, } diff --git a/core/output/name.go b/core/output/name.go new file mode 100644 index 0000000..32ee4aa --- /dev/null +++ b/core/output/name.go @@ -0,0 +1,21 @@ +package output + +import ( + "bytes" + "io" + + "git.bissendorf.co/bissendorf/unifood/m/v2/core/interfaces" +) + +type NameFormatter struct{} + +func (f *NameFormatter) Format(list *interfaces.ResourceList) (io.Reader, error) { + var buffer = make([]byte, 0, 1024) + outputBuffer := bytes.NewBuffer(buffer) + + for _, item := range list.Items { + outputBuffer.WriteString(item.ItemName() + "\r\n") + } + + return outputBuffer, nil +} -- 2.49.0 From 5205ddf0946fb025ed309749b03b7770666afc4c Mon Sep 17 00:00:00 2001 From: bdoerfchen Date: Thu, 24 Jul 2025 21:20:02 +0200 Subject: [PATCH 2/3] feat: output available output formatters in help page --- cmd/root.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmd/root.go b/cmd/root.go index 1ff55d1..3f7eb12 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -4,8 +4,12 @@ import ( "context" "fmt" "log/slog" + "maps" "os" + "slices" + "strings" + "git.bissendorf.co/bissendorf/unifood/m/v2/core/output" "git.bissendorf.co/bissendorf/unifood/m/v2/core/services/jlog" "github.com/spf13/cobra" ) @@ -15,6 +19,7 @@ var rootCmd = &cobra.Command{ Short: "Unifood is a CLI for retrieving restaurant information", Long: ``, Run: func(cmd *cobra.Command, args []string) { + _ = cmd.Help() }, } @@ -30,11 +35,17 @@ func Execute() { func initRootCmd() { var appConfig AppConfig + // Compile list of available formatters + formatters := slices.AppendSeq([]string{}, maps.Keys(output.Formatters)) + formattersList := fmt.Sprintf("(available: %s)", strings.Join(formatters, ", ")) + + // Add persistent flags rootCmd.PersistentFlags().BoolVarP(&appConfig.OutputVerbose, "verbose", "v", false, "Enable verbose output") - rootCmd.PersistentFlags().StringVarP(&appConfig.OutputFormatter, "output", "o", "table", "Set output format") + rootCmd.PersistentFlags().StringVarP(&appConfig.OutputFormatter, "output", "o", "table", "Set output format "+formattersList) rootCmd.PersistentFlags().BoolVar(&appConfig.OutputOrderReverse, "reverse", false, "Reverses output item order") rootCmd.PersistentFlags().BoolVar(&appConfig.PrintConfig, "print-config", false, "Enable printing the application config") + // Create logger and add child commands logger := jlog.New(slog.LevelDebug) ctx := jlog.ContextWith(context.Background(), logger) -- 2.49.0 From cdd3216f46fa87fbfa9395ba5c93ad0f5b0471e7 Mon Sep 17 00:00:00 2001 From: bdoerfchen Date: Thu, 24 Jul 2025 23:37:42 +0200 Subject: [PATCH 3/3] feat: add completion for output flag --- cmd/root.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index 3f7eb12..de32991 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -45,6 +45,9 @@ func initRootCmd() { rootCmd.PersistentFlags().BoolVar(&appConfig.OutputOrderReverse, "reverse", false, "Reverses output item order") rootCmd.PersistentFlags().BoolVar(&appConfig.PrintConfig, "print-config", false, "Enable printing the application config") + // Add flag completions + rootCmd.RegisterFlagCompletionFunc("output", cobra.FixedCompletions(formatters, cobra.ShellCompDirectiveNoFileComp)) + // Create logger and add child commands logger := jlog.New(slog.LevelDebug) ctx := jlog.ContextWith(context.Background(), logger) -- 2.49.0