/* * Copyright (C) 2023-2024 * Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung * * Lizenziert unter der EUPL, Version 1.2 oder - sobald * diese von der Europäischen Kommission genehmigt wurden - * Folgeversionen der EUPL ("Lizenz"); * Sie dürfen dieses Werk ausschließlich gemäß * dieser Lizenz nutzen. * Eine Kopie der Lizenz finden Sie hier: * * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * * Sofern nicht durch anwendbare Rechtsvorschriften * gefordert oder in schriftlicher Form vereinbart, wird * die unter der Lizenz verbreitete Software "so wie sie * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - * ausdrücklich oder stillschweigend - verbreitet. * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ package config import ( "gopkg.in/yaml.v3" "log" "os" "testing" "fmt" ) const ( defaultConfig = "config.yml" testFilePath = "testdata/" activeProfile = "ACTIVE_PROFILE" ) type Config struct { Http struct { Server struct { Port int `yaml:"port"` } `yaml:"server"` } `yaml:"http"` Grpc struct { Server struct { Mock bool `yaml:"mock"` Port int `yaml:"port"` } `yaml:"server"` Router struct { Port int `yaml:"port"` } `yaml:"router"` } `yaml:"grpc"` Logging struct { Level string `yaml:"level"` } `yaml:"logging"` } func LoadConfig(configFilePath ...string) Config { var config Config configFile := defaultConfig env := os.Getenv(activeProfile) if env != "" { configFile = fmt.Sprintf("config-%s.yml", env) } fp := fmt.Sprintf("config/%s", configFile) if len(configFilePath) > 0 { fp = configFilePath[0] } else if testing.Testing() { fp = testFilePath+configFile } file, err := os.ReadFile(fp) if err != nil { log.Fatalf("FATAL: error reading YAML file: %v", err) } err = yaml.Unmarshal(file, &config) if err != nil { log.Fatalf("FATAL: error unmarshalling YAML file: %v", err) } return config }