package main import ( "os" "strconv" "github.com/joho/godotenv" ) func getEnv(key, defaultValue string) string { value := os.Getenv(key) if value == "" { return defaultValue } return value } func getEnvInt(key string, defaultValue int) int { value := os.Getenv(key) if value == "" { return defaultValue } parsed, err := strconv.Atoi(value) if err != nil { return defaultValue } return parsed } var ( nsqHost string nsqPort int nsqLookupHost string nsqLookupPort int stage1Workers int stage2Workers int stage3Workers int serverPort string serverMode bool stage string clickhouseHost string clickhouseDatabase string clickhouseUsername string clickhousePassword string ) func initConfig() error { godotenv.Load() nsqHost = getEnv("NSQ_HOST", "127.0.0.1") nsqPort = getEnvInt("NSQ_PORT", 4150) nsqLookupHost = getEnv("NSQ_LOOKUP_HOST", "127.0.0.1") nsqLookupPort = getEnvInt("NSQ_LOOKUP_PORT", 4160) stage1Workers = getEnvInt("STAGE1_WORKERS", 24) stage2Workers = getEnvInt("STAGE2_WORKERS", 48) stage3Workers = getEnvInt("STAGE3_WORKERS", 48) serverPort = getEnv("SERVER_PORT", "3000") serverMode = getEnv("SERVER", "false") == "true" stage = getEnv("STAGE", "") clickhouseHost = getEnv("CLICKHOUSE_HOST", "127.0.0.1") clickhouseDatabase = getEnv("CLICKHOUSE_DATABASE", "zkill") clickhouseUsername = getEnv("CLICKHOUSE_USERNAME", "default") clickhousePassword = getEnv("CLICKHOUSE_PASSWORD", "") return nil }