From c8a4e8d413573a80edcb6f7aa3f8448879fc63e0 Mon Sep 17 00:00:00 2001 From: iPromKnight Date: Sat, 11 Jan 2025 02:43:42 +0000 Subject: [PATCH] refactor: env vars for override of file locations --- src/internal/config/config.go | 4 +++- src/internal/constants/constants.go | 6 ++++-- src/internal/environment/environment.go | 8 ++++++++ src/internal/rclone_manager/rclone.go | 8 ++++++-- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/internal/config/config.go b/src/internal/config/config.go index 6bacd28..b2b6de9 100644 --- a/src/internal/config/config.go +++ b/src/internal/config/config.go @@ -4,6 +4,7 @@ import ( "gopkg.in/yaml.v3" "os" "rclone-manager/internal/constants" + "rclone-manager/internal/environment" ) type Config struct { @@ -22,7 +23,8 @@ type Config struct { } func LoadConfig() (*Config, error) { - data, err := os.ReadFile(constants.YAMLPath) + yamlPath := environment.GetEnvWithFallback(constants.YAMLPathEnvVar, constants.DefaultYAMLPath) + data, err := os.ReadFile(yamlPath) if err != nil { return nil, err } diff --git a/src/internal/constants/constants.go b/src/internal/constants/constants.go index f510d2c..4e04ab8 100644 --- a/src/internal/constants/constants.go +++ b/src/internal/constants/constants.go @@ -28,6 +28,8 @@ const ( // Constants data files const ( - YAMLPath = "/data/config.yaml" - RcloneConf = "/data/rclone.conf" + YAMLPathEnvVar = "RCLONE_MANAGER_CONFIG_YAML" + DefaultYAMLPath = "/data/config.yaml" + RcloneConfEnvVar = "RCLONE_MANAGER_RCLONE_CONF" + DefaultRcloneConf = "/data/rclone.conf" ) diff --git a/src/internal/environment/environment.go b/src/internal/environment/environment.go index 4624690..ff952a6 100644 --- a/src/internal/environment/environment.go +++ b/src/internal/environment/environment.go @@ -25,6 +25,14 @@ func PrepareEnvironment(envVars map[string]string) []string { return mapToSlice(envMap) } +func GetEnvWithFallback(key, defaultValue string) string { + value := os.Getenv(key) + if value == "" { + return defaultValue + } + return value +} + func splitEnv(env string) []string { parts := make([]string, 2) idx := strings.Index(env, "=") diff --git a/src/internal/rclone_manager/rclone.go b/src/internal/rclone_manager/rclone.go index 2ef9f9d..f2b0dc4 100644 --- a/src/internal/rclone_manager/rclone.go +++ b/src/internal/rclone_manager/rclone.go @@ -4,6 +4,7 @@ import ( "github.com/rs/zerolog" "rclone-manager/internal/config" "rclone-manager/internal/constants" + "rclone-manager/internal/environment" "rclone-manager/internal/mount_manager" "rclone-manager/internal/serve_manager" "rclone-manager/internal/watcher" @@ -41,9 +42,12 @@ func InitializeRClone(logger zerolog.Logger) { go mount_manager.InitializeMountEndpoints(conf, logger, &processLock) } + yamlPath := environment.GetEnvWithFallback(constants.YAMLPathEnvVar, constants.DefaultYAMLPath) + rcloneConfPath := environment.GetEnvWithFallback(constants.RcloneConfEnvVar, constants.DefaultRcloneConf) + filesToWatch := []string{ - constants.YAMLPath, - constants.RcloneConf, + yamlPath, + rcloneConfPath, } watcher.StartNewFileWatcher(filesToWatch, reloadConfig, logger)