46 lines
719 B
Go
46 lines
719 B
Go
package helpers
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/golobby/dotenv"
|
|
)
|
|
|
|
type Config struct {
|
|
DryRun bool `env:"DRY_RUN"`
|
|
Hetzner struct {
|
|
ApiToken string `env:"HETZNER_API_TOKEN"`
|
|
}
|
|
PushOver struct {
|
|
Enable bool `env:"PUSHOVER_ENABLE"`
|
|
AppKey string `env:"PUSHOVER_APP_KEY"`
|
|
UserKey string `env:"PUSHOVER_USER_KEY"`
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|