diff --git a/cmd/ctrld/cli.go b/cmd/ctrld/cli.go index a5ca76f..cd9cc6c 100644 --- a/cmd/ctrld/cli.go +++ b/cmd/ctrld/cli.go @@ -146,26 +146,7 @@ func initCLI() { } noConfigStart := isNoConfigStart(cmd) writeDefaultConfig := !noConfigStart && configBase64 == "" - configs := []struct { - name string - written bool - }{ - // For compatibility, we check for config.toml first, but only read it if exists. - {"config", false}, - {"ctrld", writeDefaultConfig}, - } - - dir, err := userHomeDir() - if err != nil { - mainLog.Fatal().Msgf("failed to get config dir: %v", err) - } - for _, config := range configs { - ctrld.SetConfigNameWithPath(v, config.name, dir) - v.SetConfigFile(configPath) - if readConfigFile(config.written) { - break - } - } + tryReadingConfig(writeDefaultConfig) readBase64Config(configBase64) processNoConfigFlags(noConfigStart) @@ -285,12 +266,12 @@ func initCLI() { setWorkingDirectory(sc, dir) if configPath == "" && writeDefaultConfig { defaultConfigFile = filepath.Join(dir, defaultConfigFile) - v.SetConfigFile(defaultConfigFile) } sc.Arguments = append(sc.Arguments, "--homedir="+dir) } - readConfigFile(writeDefaultConfig && cdUID == "") + tryReadingConfig(writeDefaultConfig) + if err := v.Unmarshal(&cfg); err != nil { mainLog.Fatal().Msgf("failed to unmarshal config: %v", err) } @@ -909,3 +890,26 @@ func userHomeDir() (string, error) { } return dir, nil } + +func tryReadingConfig(writeDefaultConfig bool) { + configs := []struct { + name string + written bool + }{ + // For compatibility, we check for config.toml first, but only read it if exists. + {"config", false}, + {"ctrld", writeDefaultConfig}, + } + + dir, err := userHomeDir() + if err != nil { + mainLog.Fatal().Msgf("failed to get config dir: %v", err) + } + for _, config := range configs { + ctrld.SetConfigNameWithPath(v, config.name, dir) + v.SetConfigFile(configPath) + if readConfigFile(config.written) { + break + } + } +}