From 227d1e2a9244b340593dcc7934c5d8746858dc23 Mon Sep 17 00:00:00 2001 From: Jason Bao Date: Mon, 3 Nov 2025 14:56:11 -0800 Subject: [PATCH] Fix config missing --- .gitignore | 1 + cmd/root.go | 35 ++++++++++++++++++++++++++++------- configs/configs.go | 11 +++++++++++ 3 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 configs/configs.go diff --git a/.gitignore b/.gitignore index 0e65b83..f1c5326 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor/ cli +major diff --git a/cmd/root.go b/cmd/root.go index eaf008b..d7fd682 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,8 +1,10 @@ package cmd import ( + "encoding/json" "os" + "github.com/major-technology/cli/configs" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -39,14 +41,33 @@ func init() { } func initConfig() { - if cfgFile != "" { - viper.SetConfigFile(cfgFile) + // Use embedded config based on defaultConfig variable + var configData []byte + if defaultConfig == "configs/prod.json" { + configData = configs.ProdConfig } else { - home, err := os.UserHomeDir() + configData = configs.LocalConfig + } + + // Parse embedded config into viper + var config map[string]interface{} + if err := json.Unmarshal(configData, &config); err != nil { cobra.CheckErr(err) - viper.AddConfigPath(home) - viper.SetConfigType("yaml") - viper.SetConfigName(".cli") } - cobra.CheckErr(viper.ReadInConfig()) + + for key, value := range config { + viper.Set(key, value) + } + + // Allow user to override with custom config file if specified + if cfgFile != "" && cfgFile != defaultConfig { + if _, err := os.Stat(cfgFile); err == nil { + viper.SetConfigFile(cfgFile) + // Don't exit on error, just use embedded defaults + _ = viper.MergeInConfig() + } + } + + viper.SetEnvPrefix("MAJOR") + viper.AutomaticEnv() } diff --git a/configs/configs.go b/configs/configs.go new file mode 100644 index 0000000..83217d9 --- /dev/null +++ b/configs/configs.go @@ -0,0 +1,11 @@ +package configs + +import ( + _ "embed" +) + +//go:embed prod.json +var ProdConfig []byte + +//go:embed local.json +var LocalConfig []byte