package config
import (
"flag"
"k8s.io/klog/v2"
)
// Config holds all application configuration derived from flags.
type Config struct {
Port uint
NodeID string
RESTPort uint
SnapshotFile string
ConfigDir string
DBConnStr string
EnableCertIssuance bool
WebrootPath string
}
// Global configuration variable.
var cfg Config
// InitFlags initializes and binds all command-line flags.
func InitFlags() {
klog.InitFlags(nil)
flag.UintVar(&cfg.Port, "port", 18000, "xDS management server port")
flag.StringVar(&cfg.NodeID, "nodeID", "test-id", "Node ID")
flag.UintVar(&cfg.RESTPort, "rest-port", 8080, "REST API server port")
flag.StringVar(&cfg.SnapshotFile, "snapshot-file", "", "Optional initial snapshot JSON/YAML file")
flag.StringVar(&cfg.ConfigDir, "config-dir", "data/config", "Optional directory containing multiple config files")
flag.StringVar(&cfg.DBConnStr, "db", "", "Optional database connection string for config persistence")
flag.BoolVar(&cfg.EnableCertIssuance, "enable-cert-issuance", false, "Enable Let's Encrypt certificate issuance on startup")
flag.StringVar(&cfg.WebrootPath, "webroot-path", "data/acme", "Local path to serve the HTTP-01 challenge file (required if enabled)")
}
// GetConfig returns the application configuration.
func GetConfig() *Config {
return &cfg
}