package config import "runtime" type Config struct { App AppConfig Rabbit RabbitMQConfig Metrics MetricsConfig } type AppConfig struct { Mode string LogLvl string ChanLen uint ExternalBrowser string NumCPUs int TaskTimeoutSeconds int } type RabbitMQConfig struct { Host string Port uint16 User string Pass string Vhost string LoggingEnabled bool TaskSourceQueue string TaskResultQueue string } type MetricsConfig struct { Host string Port string GinMode string } func New() *Config { return &Config{ App: AppConfig{ Mode: getEnv("APP_MODE", "dev"), LogLvl: getEnv("APP_LOG_LVL", "debug"), ChanLen: getEnvUint("APP_CHANNEL_LEN", 100), ExternalBrowser: getEnv("APP_EXTERNAL_BROWSER", "http://10.0.0.4:13000"), NumCPUs: getEnvInt("APP_NUMCPUS", runtime.NumCPU()), TaskTimeoutSeconds: getEnvInt("APP_TASK_TIMEOUT_SECONDS", 60), }, Rabbit: RabbitMQConfig{ Host: getEnv("RABBIT_HOST", "10.0.0.4"), Port: getEnvPort("RABBIT_PORT", 5672), User: getEnv("RABBIT_USER", "parser-mandarake-dev"), Pass: getEnv("RABBIT_PASS", "dev-pass"), Vhost: getEnv("RABBIT_VHOST", "taskProcessorDevHost"), LoggingEnabled: getEnvBool("RABBIT_LOGGING_ENABLED", true), TaskSourceQueue: getEnv("TASK_SOURCE_QUEUE", "task-publisher-mandarake"), TaskResultQueue: getEnv("TASK_RESULT_QUEUE", "tasks-results"), }, Metrics: MetricsConfig{ Host: getEnv("METRICS_HOST", "0.0.0.0"), Port: getEnv("METRICS_PORT", "19080"), GinMode: getEnv("METRICS_GIN_MODE", "dev"), }, } }