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  }