package helpers import ( "os" "github.com/golobby/dotenv" ) type Config struct { DryRun bool `env:"DRY_RUN"` Hetzner struct { ApiToken string `env:"HETZNER_API_TOKEN"` } } var configParsed bool var config Config func GetConfig() (Config, error) { if configParsed { return config, nil } return parseConfig() } func parseConfig() (Config, error) { file, err := os.Open(".env") if err != nil { return config, err } err = dotenv.NewDecoder(file).Decode(&config) if err != nil { return config, err } configParsed = true return config, err }