github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/cmd/gdg-generate/cli/root.go (about) 1 package cli 2 3 import ( 4 assets "github.com/esnet/gdg/config" 5 "github.com/esnet/gdg/internal/config" 6 appconfig "github.com/esnet/gdg/internal/log" 7 "github.com/esnet/gdg/internal/templating" 8 "github.com/spf13/cobra" 9 "log" 10 "log/slog" 11 "os" 12 ) 13 14 var ( 15 cfgFile string 16 tplCfgFile string 17 template templating.Templating 18 rootCmd = &cobra.Command{ 19 Use: "gdg-generate", 20 Short: "Generates dashboard templates for use with GDG given a valid configuration", 21 Long: `Generates dashboard templates for use with GDG given a valid configuration`, 22 } 23 ) 24 25 func init() { 26 cobra.OnInitialize(initConfig) 27 rootCmd.CompletionOptions.DisableDefaultCmd = true 28 29 rootCmd.PersistentFlags().StringP("config", "c", "", "config file (default: config/importer.yml)") 30 rootCmd.PersistentFlags().StringP("template-config", "", "", "GDG Template configuration file override. (default: config/templates.yml)") 31 } 32 33 func initConfig() { 34 var err error 35 cfgFile, err = rootCmd.Flags().GetString("config") 36 if err != nil { 37 log.Fatal("unable to get config file") 38 } 39 tplCfgFile, err = rootCmd.Flags().GetString("template-config") 40 if err != nil { 41 log.Fatal("unable to get template config file") 42 } 43 44 defaultConfiguration, err := assets.GetFile("importer-example.yml") 45 if err != nil { 46 slog.Warn("unable to load default configuration, no fallback") 47 } 48 49 config.InitGdgConfig(cfgFile, defaultConfiguration) 50 config.InitTemplateConfig(tplCfgFile) 51 cfg := config.Config() 52 appconfig.InitializeAppLogger(os.Stdout, os.Stderr, cfg.IsDebug()) 53 template = templating.NewTemplate() 54 } 55 56 func Execute() { 57 if err := rootCmd.Execute(); err != nil { 58 log.Fatal(err.Error()) 59 } 60 }