refactor(config): pass environment variables to config loader

Ayman Bagabas created

Change summary

internal/cmd/logs.go                 | 2 +-
internal/cmd/server.go               | 2 +-
internal/config/init.go              | 4 ++--
internal/config/load.go              | 3 +--
internal/llm/provider/openai_test.go | 2 +-
internal/server/proto.go             | 2 +-
6 files changed, 7 insertions(+), 8 deletions(-)

Detailed changes

internal/cmd/logs.go 🔗

@@ -46,7 +46,7 @@ var logsCmd = &cobra.Command{
 		log.SetLevel(log.DebugLevel)
 		log.SetOutput(os.Stdout)
 
-		cfg, err := config.Load(cwd, dataDir, false)
+		cfg, err := config.Load(cwd, dataDir, false, os.Environ())
 		if err != nil {
 			return fmt.Errorf("failed to load configuration: %v", err)
 		}

internal/cmd/server.go 🔗

@@ -35,7 +35,7 @@ var serverCmd = &cobra.Command{
 			return fmt.Errorf("failed to get debug flag: %v", err)
 		}
 
-		cfg, err := config.Load("", dataDir, debug)
+		cfg, err := config.Load("", dataDir, debug, os.Environ())
 		if err != nil {
 			return fmt.Errorf("failed to load configuration: %v", err)
 		}

internal/config/init.go 🔗

@@ -16,8 +16,8 @@ type ProjectInitFlag struct {
 	Initialized bool `json:"initialized"`
 }
 
-func Init(workingDir, dataDir string, debug bool) (*Config, error) {
-	cfg, err := Load(workingDir, dataDir, debug)
+func Init(workingDir, dataDir string, debug bool, envs []string) (*Config, error) {
+	cfg, err := Load(workingDir, dataDir, debug, envs)
 	if err != nil {
 		return nil, err
 	}

internal/config/load.go 🔗

@@ -42,7 +42,7 @@ func LoadReader(fd io.Reader) (*Config, error) {
 }
 
 // Load loads the configuration from the default paths.
-func Load(workingDir, dataDir string, debug bool) (*Config, error) {
+func Load(workingDir, dataDir string, debug bool, envs []string) (*Config, error) {
 	configPaths := lookupConfigs(workingDir)
 
 	cfg, err := loadFromConfigPaths(configPaths)
@@ -65,7 +65,6 @@ func Load(workingDir, dataDir string, debug bool) (*Config, error) {
 	}
 	cfg.knownProviders = providers
 
-	envs := os.Environ()
 	// Configure providers
 	valueResolver := NewShellVariableResolver(envs)
 	cfg.resolver = valueResolver

internal/llm/provider/openai_test.go 🔗

@@ -17,7 +17,7 @@ import (
 )
 
 func TestMain(m *testing.M) {
-	_, err := config.Init(".", "", true)
+	_, err := config.Init(".", "", true, os.Environ())
 	if err != nil {
 		panic("Failed to initialize config: " + err.Error())
 	}

internal/server/proto.go 🔗

@@ -548,7 +548,7 @@ func (c *controllerV1) handlePostInstances(w http.ResponseWriter, r *http.Reques
 	}
 
 	id := uuid.New().String()
-	cfg, err := config.Init(args.Path, args.DataDir, args.Debug)
+	cfg, err := config.Init(args.Path, args.DataDir, args.Debug, args.Env)
 	if err != nil {
 		c.logError(r, "failed to initialize config", "error", err)
 		jsonError(w, http.StatusBadRequest, fmt.Sprintf("failed to initialize config: %v", err))