64 lines
1.3 KiB
Go

package config
import (
"fmt"
"log"
"os"
legacy "weatherstation/internal/config"
)
type Config struct {
Addr string
UIServeDir string
BigscreenDir string
TemplateDir string
StaticDir string
DevEnableCORS bool
Legacy *legacy.Config
}
func Load() Config {
lg := legacy.GetConfig()
port := lg.Server.WebPort
if port <= 0 {
port = 8080
}
cfg := Config{
Addr: fmt.Sprintf(":%d", port),
UIServeDir: "core/frontend/dist/ui",
BigscreenDir: "core/frontend/dist/bigscreen",
TemplateDir: "templates",
StaticDir: "static",
DevEnableCORS: true,
Legacy: lg,
}
if v := os.Getenv("CORE_ADDR"); v != "" {
cfg.Addr = v
}
if v := os.Getenv("CORE_UI_DIR"); v != "" {
cfg.UIServeDir = v
}
if v := os.Getenv("CORE_BIGSCREEN_DIR"); v != "" {
cfg.BigscreenDir = v
}
if v := os.Getenv("CORE_TEMPLATE_DIR"); v != "" {
cfg.TemplateDir = v
}
if v := os.Getenv("CORE_STATIC_DIR"); v != "" {
cfg.StaticDir = v
}
if v := os.Getenv("CORE_ENABLE_CORS"); v != "" {
if v == "0" || v == "false" {
cfg.DevEnableCORS = false
} else {
cfg.DevEnableCORS = true
}
}
log.Printf("config: addr=%s ui=%s bigscreen=%s tpl=%s static=%s cors=%v", cfg.Addr, cfg.UIServeDir, cfg.BigscreenDir, cfg.TemplateDir, cfg.StaticDir, cfg.DevEnableCORS)
return cfg
}