diff --git a/internal/config/store.go b/internal/config/store.go index cf02967..9375bcf 100644 --- a/internal/config/store.go +++ b/internal/config/store.go @@ -4,19 +4,12 @@ import ( "encoding/base64" "encoding/json" "errors" - "fmt" "os" - "path/filepath" "slices" "strings" "sync" ) -func envWritebackEnabled() bool { - v := strings.ToLower(strings.TrimSpace(os.Getenv("DS2API_ENV_WRITEBACK"))) - return v == "1" || v == "true" || v == "yes" || v == "on" -} - type Store struct { mu sync.RWMutex cfg Config @@ -240,49 +233,12 @@ func (s *Store) saveLocked() error { return nil } -func writeConfigFile(path string, cfg Config) error { - persistCfg := cfg.Clone() - persistCfg.ClearAccountTokens() - b, err := json.MarshalIndent(persistCfg, "", " ") - if err != nil { - return err - } - return writeConfigBytes(path, b) -} - -func writeConfigBytes(path string, b []byte) error { - dir := filepath.Dir(path) - if dir == "." || dir == "" { - return os.WriteFile(path, b, 0o644) - } - if err := os.MkdirAll(dir, 0o755); err != nil { - return fmt.Errorf("mkdir config dir: %w", err) - } - return os.WriteFile(path, b, 0o644) -} - func (s *Store) IsEnvBacked() bool { s.mu.RLock() defer s.mu.RUnlock() return s.fromEnv } -func (s *Store) IsEnvWritebackEnabled() bool { - return envWritebackEnabled() -} - -func (s *Store) HasEnvConfigSource() bool { - rawCfg := strings.TrimSpace(os.Getenv("DS2API_CONFIG_JSON")) - if rawCfg == "" { - rawCfg = strings.TrimSpace(os.Getenv("CONFIG_JSON")) - } - return rawCfg != "" -} - -func (s *Store) ConfigPath() string { - return s.path -} - func (s *Store) SetVercelSync(hash string, ts int64) error { return s.Update(func(c *Config) error { c.VercelSyncHash = hash diff --git a/internal/config/store_env_writeback.go b/internal/config/store_env_writeback.go new file mode 100644 index 0000000..35e315c --- /dev/null +++ b/internal/config/store_env_writeback.go @@ -0,0 +1,51 @@ +package config + +import ( + "encoding/json" + "fmt" + "os" + "path/filepath" + "strings" +) + +func envWritebackEnabled() bool { + v := strings.ToLower(strings.TrimSpace(os.Getenv("DS2API_ENV_WRITEBACK"))) + return v == "1" || v == "true" || v == "yes" || v == "on" +} + +func (s *Store) IsEnvWritebackEnabled() bool { + return envWritebackEnabled() +} + +func (s *Store) HasEnvConfigSource() bool { + rawCfg := strings.TrimSpace(os.Getenv("DS2API_CONFIG_JSON")) + if rawCfg == "" { + rawCfg = strings.TrimSpace(os.Getenv("CONFIG_JSON")) + } + return rawCfg != "" +} + +func (s *Store) ConfigPath() string { + return s.path +} + +func writeConfigFile(path string, cfg Config) error { + persistCfg := cfg.Clone() + persistCfg.ClearAccountTokens() + b, err := json.MarshalIndent(persistCfg, "", " ") + if err != nil { + return err + } + return writeConfigBytes(path, b) +} + +func writeConfigBytes(path string, b []byte) error { + dir := filepath.Dir(path) + if dir == "." || dir == "" { + return os.WriteFile(path, b, 0o644) + } + if err := os.MkdirAll(dir, 0o755); err != nil { + return fmt.Errorf("mkdir config dir: %w", err) + } + return os.WriteFile(path, b, 0o644) +}