diff --git a/workhorse/internal/config/config.go b/workhorse/internal/config/config.go index 562ea05bfd0bba42a2dd6d23e891c78faffa0b48..c3b55c2a6e5a5854e72a953b8fad67f9a2803d34 100644 --- a/workhorse/internal/config/config.go +++ b/workhorse/internal/config/config.go @@ -162,6 +162,20 @@ func NewDefaultConfig() *Config { } } +func LoadConfigFromFile(file *string) (*Config, error) { + tomlData := "" + + if *file != "" { + buf, err := os.ReadFile(*file) + if err != nil { + return nil, fmt.Errorf("file: %v", err) + } + tomlData = string(buf) + } + + return LoadConfig(tomlData) +} + func LoadConfig(data string) (*Config, error) { cfg := NewDefaultConfig() diff --git a/workhorse/internal/config/config_test.go b/workhorse/internal/config/config_test.go index d3f000217254afd72841141f79ddab09920c455f..6127a5aae550caf0db2ada6bc54d8f3f3918d1a7 100644 --- a/workhorse/internal/config/config_test.go +++ b/workhorse/internal/config/config_test.go @@ -1,6 +1,7 @@ package config import ( + "os" "path/filepath" "testing" @@ -196,3 +197,30 @@ func TestDefaultConfig(t *testing.T) { require.Equal(t, uint64(250000), cfg.ImageResizerConfig.MaxFilesize) } + +func TestLoadConfigFromFile(t *testing.T) { + config := ` +[image_resizer] +max_filesize = 350000 +` + + fileName := createTempFile(t, []byte(config)) + + cfg, err := LoadConfigFromFile(&fileName) + require.NoError(t, err) + + require.Equal(t, uint64(350000), cfg.ImageResizerConfig.MaxFilesize) +} + +func createTempFile(t *testing.T, contents []byte) string { + t.Helper() + + tmpFile, err := os.CreateTemp(t.TempDir(), "config.toml") + require.NoError(t, err) + defer tmpFile.Close() + + _, err = tmpFile.Write(contents) + require.NoError(t, err) + + return tmpFile.Name() +} diff --git a/workhorse/main.go b/workhorse/main.go index 0c470d36e3e30cfd15fdcab57b3c0e3a48af6dfd..4d14d60df92da5fe0934cd3b2ae93c024b45ba37 100644 --- a/workhorse/main.go +++ b/workhorse/main.go @@ -138,16 +138,7 @@ func buildConfig(arg0 string, args []string) (*bootConfig, *config.Config, error cfg.CableBackend = cfg.Backend } - tomlData := "" - if *configFile != "" { - buf, err := os.ReadFile(*configFile) - if err != nil { - return nil, nil, fmt.Errorf("configFile: %v", err) - } - tomlData = string(buf) - } - - cfgFromFile, err := config.LoadConfig(tomlData) + cfgFromFile, err := config.LoadConfigFromFile(configFile) if err != nil { return nil, nil, fmt.Errorf("configFile: %v", err) }