mirror of
https://github.com/lorsanstand/HomeOps-Hub.git
synced 2026-06-19 17:45:17 +03:00
43 lines
834 B
Go
43 lines
834 B
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/ilyakaznacheev/cleanenv"
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
type Config struct {
|
|
LogLevel string `env:"LOG_LEVEL" env-default:"INFO"`
|
|
Mode string `env:"MODE" env-default:"DEV"`
|
|
Port int `env:"PORT" env-default:"9000"`
|
|
Heartbeat int `env:"HEARTBEAT" env-default:"5"`
|
|
}
|
|
|
|
func NewConfig() (*Config, error) {
|
|
var cfg Config
|
|
|
|
if err := cleanenv.ReadConfig(".env", &cfg); err != nil {
|
|
log.Printf("failed read config: %v", err)
|
|
|
|
if err = cleanenv.ReadEnv(&cfg); err != nil {
|
|
return nil, fmt.Errorf("env read failed: %v", err)
|
|
}
|
|
}
|
|
|
|
return &cfg, nil
|
|
}
|
|
|
|
func (c *Config) GetLogLevel() zerolog.Level {
|
|
level, err := zerolog.ParseLevel(c.LogLevel)
|
|
if err != nil {
|
|
return zerolog.InfoLevel
|
|
}
|
|
return level
|
|
}
|
|
|
|
func (c *Config) GetMode() string {
|
|
return c.Mode
|
|
}
|