package configs import ( "github.com/joho/godotenv" "github.com/kelseyhightower/envconfig" ) type Config struct { JellyfinURL string `envconfig:"JELLYFIN_URL" required:"true"` JellyfinAPIKey string `envconfig:"JELLYFIN_API_KEY" required:"true"` JellyfinUserID string `envconfig:"JELLYFIN_USER_ID" required:"true"` TMDbAPIKey string `envconfig:"TMDB_API_KEY" required:"true"` LLMEnabled bool `envconfig:"LLM_ENABLED" default:"false"` LLMBaseURL string `envconfig:"LLM_BASE_URL" default:"http://localhost:11434/v1"` LLMAPIKey string `envconfig:"LLM_API_KEY" default:""` LLMModel string `envconfig:"LLM_MODEL" default:"llama3"` RadarrEnabled bool `envconfig:"RADARR_ENABLED" default:"false"` RadarrURL string `envconfig:"RADARR_URL"` RadarrAPIKey string `envconfig:"RADARR_API_KEY"` RadarrQualityProfile int `envconfig:"RADARR_QUALITY_PROFILE_ID" default:"1"` RadarrRootFolder string `envconfig:"RADARR_ROOT_FOLDER" default:"/movies"` CronEnabled bool `envconfig:"CRON_ENABLED" default:"false"` CronSchedule string `envconfig:"CRON_SCHEDULE" default:"0 3 * * *"` APIEnabled bool `envconfig:"API_ENABLED" default:"true"` APIPort int `envconfig:"API_PORT" default:"8080"` RecommendCount int `envconfig:"RECOMMEND_COUNT" default:"10"` MinRatedMovies int `envconfig:"MIN_RATED_MOVIES" default:"5"` } // Load reads .env (best-effort) then processes environment variables into a Config. func Load() (*Config, error) { _ = godotenv.Load() var cfg Config if err := envconfig.Process("", &cfg); err != nil { return nil, err } return &cfg, nil }