From 45111321b2d7bcb77c014fb41a78360b18efe139 Mon Sep 17 00:00:00 2001 From: Hazel Noack Date: Fri, 11 Jul 2025 15:08:33 +0200 Subject: [PATCH] added scanning for config file --- go.mod | 1 + go.sum | 2 ++ internal/rendering/config.go | 35 +++++++++++++++++++++++++++++++++-- main.go | 2 +- config.toml => startpage.toml | 0 tmp/build-errors.log | 2 +- 6 files changed, 38 insertions(+), 4 deletions(-) rename config.toml => startpage.toml (100%) diff --git a/go.mod b/go.mod index 4b7cafc..53e3d7b 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.24.2 require github.com/labstack/echo/v4 v4.13.4 require ( + github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f // indirect github.com/labstack/gommon v0.4.2 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/go.sum b/go.sum index 27dd88a..ada8512 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU= +github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0= github.com/labstack/echo/v4 v4.13.4 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcXEA= github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ= github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= diff --git a/internal/rendering/config.go b/internal/rendering/config.go index 0b30b1c..24193dc 100644 --- a/internal/rendering/config.go +++ b/internal/rendering/config.go @@ -1,12 +1,16 @@ package rendering import ( + "errors" + "fmt" "maps" "os" + "path/filepath" "slices" - "github.com/pelletier/go-toml" "gitea.elara.ws/Hazel/transfem-startpage/internal/diyhrt" + "github.com/kirsle/configdir" + "github.com/pelletier/go-toml" ) type RenderingConfig struct { @@ -65,9 +69,36 @@ func (rc *RenderingConfig) LoadDiyHrt(listings []diyhrt.Listing) { rc.Stores = rc.StoreFilter.Filter(slices.Collect(maps.Values(existingStores))) } -func (rc *RenderingConfig) LoadConfigFile(file string) error { + +func (rc *RenderingConfig) ScanForConfigFile(profile string) error { + profileFile := profile + ".toml" + + configPath := configdir.LocalConfig("startpage") + configFile := filepath.Join(configPath, profileFile) + + if err := rc.LoadConfigFile(configFile); !errors.Is(err, os.ErrNotExist) { + return err + } + + if err := rc.LoadConfigFile(profileFile); !errors.Is(err, os.ErrNotExist) { + return err + } + + if err := rc.LoadConfigFile("." + profileFile); !errors.Is(err, os.ErrNotExist) { + return err + } + + return errors.New("No config file found") +} func (rc *RenderingConfig) LoadConfigFile(file string) error { + if _, err := os.Stat(file); err != nil { + return err + } + + fmt.Println("loading config file: " + file) + + content, err := os.ReadFile(file) if err != nil { diff --git a/main.go b/main.go index 7d2b2b3..3253e95 100644 --- a/main.go +++ b/main.go @@ -42,7 +42,7 @@ func getIndex(c echo.Context) error { func main() { fmt.Println("running transfem startpage") - CurrentRenderingConfig.LoadConfigFile("config.toml") + CurrentRenderingConfig.ScanForConfigFile("startpage") err := FetchDiyHrt() if err != nil { diff --git a/config.toml b/startpage.toml similarity index 100% rename from config.toml rename to startpage.toml diff --git a/tmp/build-errors.log b/tmp/build-errors.log index 370d558..d79c371 100644 --- a/tmp/build-errors.log +++ b/tmp/build-errors.log @@ -1 +1 @@ -exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 \ No newline at end of file +exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 \ No newline at end of file