github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/cmd/gdg-generate/cli/templates.go (about) 1 package cli 2 3 import ( 4 "fmt" 5 "github.com/jedib0t/go-pretty/v6/table" 6 "github.com/spf13/cobra" 7 "log" 8 "log/slog" 9 "os" 10 ) 11 12 var tplCmd = &cobra.Command{ 13 Use: "template", 14 Aliases: []string{"tpl", "templates"}, 15 Short: "Templating Utilities", 16 Long: `Templating Utilities`, 17 } 18 19 var listTemplatesCmd = &cobra.Command{ 20 Use: "list", 21 Short: "List current templates", 22 Long: `List current templates`, 23 Run: func(cmd *cobra.Command, args []string) { 24 templates := template.ListTemplates() 25 slog.Info("Available templates for current configuration", 26 slog.String("template-config", tplCfgFile), 27 slog.String("gdg-config", cfgFile)) 28 for ndx, t := range templates { 29 slog.Info(fmt.Sprintf("%d: %s", ndx+1, t)) 30 } 31 }, 32 } 33 34 var generateTemplatesCmd = &cobra.Command{ 35 Use: "generate", 36 Aliases: []string{}, 37 Short: "Generate current templates", 38 Long: `Generate current templates`, 39 Run: func(cmd *cobra.Command, args []string) { 40 templateFilter, _ := cmd.Flags().GetString("template") 41 payload, err := template.Generate(templateFilter) 42 if err != nil { 43 log.Fatal("Failed to generate templates", slog.Any("err", err)) 44 } 45 46 tableObj := table.NewWriter() 47 tableObj.SetOutputMirror(os.Stdout) 48 tableObj.SetStyle(table.StyleLight) 49 50 tableObj.AppendHeader(table.Row{"Template Name", "Output"}) 51 count := 0 52 for key, val := range payload { 53 count += len(val) 54 for _, file := range val { 55 tableObj.AppendRow(table.Row{key, file}) 56 } 57 } 58 slog.Info("Generate dashboards for the given templates", 59 slog.Any("template-count", len(payload)), 60 slog.Any("dashboard-count", count)) 61 tableObj.Render() 62 }, 63 } 64 65 func init() { 66 rootCmd.AddCommand(tplCmd) 67 tplCmd.AddCommand(listTemplatesCmd) 68 tplCmd.AddCommand(generateTemplatesCmd) 69 generateTemplatesCmd.PersistentFlags().StringP("template", "t", "", "Specify template name, optional. Default is to operate on all configured templates that are found.") 70 }