aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--walrss/internal/state/state.go23
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
}