Files
EvoBGP/internal/config/config.go
T
DenozordecandCursor 3f0dd6c234 docs(runtime-logs): implement runtime log management features
Добавлены новые возможности для работы с файловыми логами Docker-сервисов:
- Эндпоинты для получения списка логов и хвоста лог-файла.
- Очистка лог-файлов с возможностью выбора режима (truncate или delete) и запись в аудит очистки.
- Обновлена документация и конфигурация для поддержки новых функций.

Co-authored-by: Cursor <[email protected]>
2026-06-12 19:04:53 +07:00

46 lines
1.3 KiB
Go

// Package config loads control-plane settings from the environment (see architecture plan §1).
package config
import (
"os"
"path/filepath"
"strings"
)
// Env holds shared process configuration for cmd/* entrypoints.
type Env struct {
HTTPAddr string
ServiceName string
GitSHA string
// DatabaseURL is the PostgreSQL DSN when SQL-backed repositories are wired (empty in dev).
DatabaseURL string
// BrokerURL is NATS/Redis when the reference profile uses a message broker (empty in microVPS).
BrokerURL string
// RuntimeLogsDir is the absolute host path to Docker runtime log files (evobgp-all only).
RuntimeLogsDir string
}
// Load reads EVOBGP_* environment variables with safe defaults.
func Load() Env {
e := Env{
HTTPAddr: ":8080",
}
if v := strings.TrimSpace(os.Getenv("EVOBGP_HTTP_ADDR")); v != "" {
e.HTTPAddr = v
}
if v := strings.TrimSpace(os.Getenv("EVOBGP_SERVICE")); v != "" {
e.ServiceName = v
}
e.GitSHA = strings.TrimSpace(os.Getenv("EVOBGP_GIT_SHA"))
e.DatabaseURL = strings.TrimSpace(os.Getenv("EVOBGP_DATABASE_URL"))
e.BrokerURL = strings.TrimSpace(os.Getenv("EVOBGP_BROKER_URL"))
if v := strings.TrimSpace(os.Getenv("EVOBGP_RUNTIME_LOGS_DIR")); v != "" {
if abs, err := filepath.Abs(v); err == nil {
e.RuntimeLogsDir = abs
} else {
e.RuntimeLogsDir = v
}
}
return e
}