diff options
| author | Leonardo Bishop <me@leonardobishop.net> | 2025-08-07 12:00:20 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.net> | 2025-08-07 15:06:27 +0100 |
| commit | 0d47544d12656be9eb853f8323f0da19eec2316c (patch) | |
| tree | ca83669434a6ab6c0baf8b48bd22971b1d237dc7 | |
| parent | 1c542bd35b0e5f6ca4e4b92cc849bd652b901f8d (diff) | |
Update directories fig searches
| -rw-r--r-- | walrss/internal/state/state.go | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/walrss/internal/state/state.go b/walrss/internal/state/state.go index 522e1bf..1fe33ee 100644 --- a/walrss/internal/state/state.go +++ b/walrss/internal/state/state.go @@ -3,12 +3,13 @@ package state import ( "errors" "fmt" + "os" + "strings" + "github.com/kkyr/fig" "github.com/rs/zerolog" "github.com/rs/zerolog/log" "github.com/uptrace/bun" - "os" - "strings" ) type State struct { @@ -48,23 +49,19 @@ type Config struct { Debug bool `fig:"debug"` } +const walrssConfigDirEnv = "WALRSS_CONFIG_DIR" const configFilename = "config.yaml" func LoadConfig() (*Config, error) { - // If the file doesn't exist, Fig will throw a hissy fit, so we should create a blank one if it doesn't exist - if _, err := os.Stat(configFilename); err != nil { - if errors.Is(err, os.ErrNotExist) { - // If the file doesn't have contents, Fig will throw an EOF, despite `touch config.yaml` working fine. idk lol - if err := os.WriteFile(configFilename, []byte("{}"), 0777); err != nil { - return nil, err - } - } else { - return nil, err - } + var configDirs []string + + if config := os.Getenv(walrssConfigDirEnv); config != "" { + configDirs = append(configDirs, config) } + configDirs = append(configDirs, ".") cfg := new(Config) - if err := fig.Load(cfg); err != nil { + if err := fig.Load(cfg, fig.Dirs(configDirs...), fig.File(configFilename)); err != nil { return nil, err } |
