Skip to content
This repository has been archived by the owner on May 20, 2024. It is now read-only.

Commit

Permalink
improvement load config
Browse files Browse the repository at this point in the history
  • Loading branch information
azrod committed Dec 25, 2021
1 parent d396382 commit 11c61f7
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 44 deletions.
52 changes: 27 additions & 25 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ type CFG struct {
}

// LoadConfig reads configuration from file or environment variables.
func LoadConfig() (config CFG, err error) {
func LoadConfig() (config CFG) {

dir := os.Getenv("PATH_CONFIG_DIRECTORY")
file := os.Getenv("PATH_CONFIG_FILE")
Expand Down Expand Up @@ -87,34 +87,36 @@ func LoadConfig() (config CFG, err error) {
}
}

var ok bool

// try to read from environment variables
if os.Getenv("AWS_ACCESS_KEY_ID") != "" {
if _, ok = os.LookupEnv("AWS_ACCESS_KEY_ID"); ok {
log.Info().Msg("Reading AWS_ACCESS_KEY_ID from environment variables")
config.AWSAccount.Secret.AccessKeyID = os.Getenv("AWS_ACCESS_KEY_ID")
}

if os.Getenv("AWS_SECRET_ACCESS_KEY") != "" {
if _, ok = os.LookupEnv("AWS_SECRET_ACCESS_KEY"); ok {
log.Info().Msg("Reading AWS_SECRET_ACCESS_KEY from environment variables")
config.AWSAccount.Secret.SecretAccessKey = os.Getenv("AWS_SECRET_ACCESS_KEY")
}

if os.Getenv("AWS_REGION") != "" {
if _, ok = os.LookupEnv("AWS_REGION"); ok {
log.Info().Msg("Reading AWS_REGION from environment variables")
config.AWSAccount.Secret.Region = os.Getenv("AWS_REGION")
}

if os.Getenv("AWS_HOSTED_ZONE_ID") != "" {
if _, ok = os.LookupEnv("AWS_HOSTED_ZONE_ID"); ok {
log.Info().Msg("Reading AWS_HOSTED_ZONE_ID from environment variables")
config.AWSAccount.Record.HostedZoneID = os.Getenv("AWS_HOSTED_ZONE_ID")
}

if os.Getenv("AWS_RECORD_NAME") != "" {
if _, ok = os.LookupEnv("AWS_RECORD_NAME"); ok {
log.Info().Msg("Reading AWS_RECORD_NAME from environment variables")
config.AWSAccount.Record.Name = os.Getenv("AWS_HOSTED_ZONE_NAME")
}

// AWS_RECORD_TTL
if os.Getenv("AWS_RECORD_TTL") != "" {
if _, ok = os.LookupEnv("AWS_RECORD_TTL"); ok {
log.Info().Msg("Reading AWS_RECORD_TTL from environment variables")
ttl, err := strconv.Atoi(os.Getenv("AWS_RECORD_TTL"))
if err != nil {
Expand All @@ -125,43 +127,43 @@ func LoadConfig() (config CFG, err error) {
}

// AWS_RECORD_DOMAIN
if os.Getenv("AWS_RECORD_DOMAIN") != "" {
if _, ok = os.LookupEnv("AWS_RECORD_DOMAIN"); ok {
log.Info().Msg("Reading AWS_RECORD_DOMAIN from environment variables")
config.AWSAccount.Record.Domain = os.Getenv("AWS_RECORD_DOMAIN")
}

// AWS_RECORD_COMMENT
if os.Getenv("AWS_RECORD_COMMENT") != "" {
if _, ok = os.LookupEnv("AWS_RECORD_COMMENT"); ok {
log.Info().Msg("Reading AWS_RECORD_COMMENT from environment variables")
config.AWSAccount.Record.Comment = os.Getenv("AWS_RECORD_COMMENT")
}

// OVH_APPLICATION_KEY
if os.Getenv("OVH_APPLICATION_KEY") != "" {
if _, ok = os.LookupEnv("OVH_APPLICATION_KEY"); ok {
log.Info().Msg("Reading OVH_APPLICATION_KEY from environment variables")
config.OVHAccount.Secret.ApplicationKey = os.Getenv("OVH_APPLICATION_KEY")
}

// OVH_APPLICATION_SECRET
if os.Getenv("OVH_APPLICATION_SECRET") != "" {
if _, ok = os.LookupEnv("OVH_APPLICATION_SECRET"); ok {
log.Info().Msg("Reading OVH_APPLICATION_SECRET from environment variables")
config.OVHAccount.Secret.ApplicationSecret = os.Getenv("OVH_APPLICATION_SECRET")
}

// OVH_CONSUMER_KEY
if os.Getenv("OVH_CONSUMER_KEY") != "" {
if _, ok = os.LookupEnv("OVH_CONSUMER_KEY"); ok {
log.Info().Msg("Reading OVH_CONSUMER_KEY from environment variables")
config.OVHAccount.Secret.ConsumerKey = os.Getenv("OVH_CONSUMER_KEY")
}

// OVH_RECORD_NAME
if os.Getenv("OVH_RECORD_NAME") != "" {
if _, ok = os.LookupEnv("OVH_RECORD_NAME"); ok {
log.Info().Msg("Reading OVH_RECORD_NAME from environment variables")
config.OVHAccount.Record.Name = os.Getenv("OVH_RECORD_NAME")
}

// OVH_RECORD_TTL
if os.Getenv("OVH_RECORD_TTL") != "" {
if _, ok = os.LookupEnv("OVH_RECORD_TTL"); ok {
log.Info().Msg("Reading OVH_RECORD_TTL from environment variables")
ttl, err := strconv.Atoi(os.Getenv("OVH_RECORD_TTL"))
if err != nil {
Expand All @@ -172,31 +174,31 @@ func LoadConfig() (config CFG, err error) {
}

// OVH_RECORD_ZONE
if os.Getenv("OVH_RECORD_ZONE") != "" {
if _, ok = os.LookupEnv("OVH_RECORD_ZONE"); ok {
log.Info().Msg("Reading OVH_RECORD_ZONE from environment variables")
config.OVHAccount.Record.Zone = os.Getenv("OVH_RECORD_ZONE")
}

// CLOUDFLARE_API_KEY
if os.Getenv("CLOUDFLARE_API_KEY") != "" {
if _, ok = os.LookupEnv("CLOUDFLARE_API_KEY"); ok {
log.Info().Msg("Reading CLOUDFLARE_API_KEY from environment variables")
config.CLOUDFLAREAccount.Secret.APIKey = os.Getenv("CLOUDFLARE_API_KEY")
}

// CLOUDFLARE_EMAIL
if os.Getenv("CLOUDFLARE_EMAIL") != "" {
if _, ok = os.LookupEnv("CLOUDFLARE_EMAIL"); ok {
log.Info().Msg("Reading CLOUDFLARE_EMAIL from environment variables")
config.CLOUDFLAREAccount.Secret.Email = os.Getenv("CLOUDFLARE_EMAIL")
}

// CLOUDFLARE_RECORD_NAME
if os.Getenv("CLOUDFLARE_RECORD_NAME") != "" {
if _, ok = os.LookupEnv("CLOUDFLARE_RECORD_NAME"); ok {
log.Info().Msg("Reading CLOUDFLARE_RECORD_NAME from environment variables")
config.CLOUDFLAREAccount.Record.Name = os.Getenv("CLOUDFLARE_RECORD_NAME")
}

// CLOUDFLARE_RECORD_TTL
if os.Getenv("CLOUDFLARE_RECORD_TTL") != "" {
if _, ok = os.LookupEnv("CLOUDFLARE_RECORD_TTL"); ok {
log.Info().Msg("Reading CLOUDFLARE_RECORD_TTL from environment variables")
ttl, err := strconv.Atoi(os.Getenv("CLOUDFLARE_RECORD_TTL"))
if err != nil {
Expand All @@ -207,13 +209,13 @@ func LoadConfig() (config CFG, err error) {
}

// LOG_LEVEL
if os.Getenv("LOG_LEVEL") != "" {
if _, ok = os.LookupEnv("LOG_LEVEL"); ok {
log.Info().Msg("Reading LOG_LEVEL from environment variables")
config.Log.Level = os.Getenv("LOG_LEVEL")
}

// LOG_HUMANIZE
if os.Getenv("LOG_HUMANIZE") != "" {
if _, ok = os.LookupEnv("LOG_HUMANIZE"); ok {
log.Info().Msg("Reading LOG_HUMANIZE from environment variables")
// convert string to bool
humanize, err := strconv.ParseBool(os.Getenv("LOG_HUMANIZE"))
Expand All @@ -225,7 +227,7 @@ func LoadConfig() (config CFG, err error) {
}

// METRICS_ENABLE
if os.Getenv("METRICS_ENABLE") != "" {
if _, ok = os.LookupEnv("METRICS_ENABLE"); ok {
log.Info().Msg("Reading METRICS_ENABLE from environment variables")
// convert string to bool
enable, err := strconv.ParseBool(os.Getenv("METRICS_ENABLE"))
Expand All @@ -237,7 +239,7 @@ func LoadConfig() (config CFG, err error) {
}

// METRICS_PORT
if os.Getenv("METRICS_PORT") != "" {
if _, ok = os.LookupEnv("METRICS_PORT"); ok {
log.Info().Msg("Reading METRICS_PORT from environment variables")
port, err := strconv.Atoi(os.Getenv("METRICS_PORT"))
if err != nil {
Expand All @@ -248,11 +250,11 @@ func LoadConfig() (config CFG, err error) {
}

// METRICS_PATH
if os.Getenv("METRICS_PATH") != "" {
if _, ok = os.LookupEnv("METRICS_PATH"); ok {
log.Info().Msg("Reading METRICS_PATH from environment variables")
config.Metrics.Path = os.Getenv("METRICS_PATH")
}

return config, err
return config

}
32 changes: 17 additions & 15 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,35 @@ module github.com/azrod/updateip
go 1.17

require (
github.com/aws/aws-sdk-go v1.41.16
github.com/cloudflare/cloudflare-go v0.27.0
github.com/go-gandi/go-gandi v0.0.0-20211115090035-91883d21b10a
github.com/aws/aws-sdk-go v1.42.25
github.com/cloudflare/cloudflare-go v0.29.0
github.com/go-gandi/go-gandi v0.0.0-20211209105035-ba4c57c5f0cd
github.com/gorilla/mux v1.8.0
github.com/jpillora/go-tld v1.1.1
github.com/ovh/go-ovh v1.1.0
github.com/prometheus/client_golang v1.11.0
github.com/rs/zerolog v1.26.0
github.com/rs/zerolog v1.26.1
gopkg.in/yaml.v2 v2.4.0
)

require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.1 // indirect
github.com/golang/protobuf v1.4.3 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/kr/pretty v0.2.0 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.26.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e // indirect
golang.org/x/text v0.3.6 // indirect
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
google.golang.org/protobuf v1.26.0-rc.1 // indirect
gopkg.in/ini.v1 v1.57.0 // indirect
github.com/prometheus/common v0.32.1 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/rogpeppe/go-internal v1.6.1 // indirect
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f // indirect
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 // indirect
google.golang.org/protobuf v1.27.1 // indirect
gopkg.in/ini.v1 v1.66.2 // indirect
moul.io/http2curl v1.0.0 // indirect
)
5 changes: 1 addition & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ func main() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix

// Load config
c, err := config.LoadConfig()
if err != nil {
log.Fatal().Err(err).Msg("cannot load config")
}
c := config.LoadConfig()

if c.Log.Humanize {
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: time.RFC3339})
Expand Down

0 comments on commit 11c61f7

Please sign in to comment.