Files
test_deploy/internal/config/config.go
Alex Shevchuk d84487d238 1
2025-08-18 17:12:04 +03:00

54 lines
1.0 KiB
Go

package config
import (
"errors"
"fmt"
"os"
"github.com/ilyakaznacheev/cleanenv"
)
var (
ErrInternal = errors.New("can not load config")
ErrMarshaling = errors.New("can not marshal config path")
)
func MustLoad(version, commit, date string) *Config {
cfg, err := loadConfig()
if err != nil {
panic(err)
}
cfg.Build.Version = version
cfg.Build.Commit = commit
cfg.Build.Date = date
return cfg
}
func loadConfig() (*Config, error) {
if _, err := os.Stat(ConfigBasePath); os.IsNotExist(err) {
return nil, fmt.Errorf("no config file found")
}
var localConfig LocalDeploy
if err := cleanenv.ReadConfig(ConfigBasePath, &localConfig); err != nil {
return nil, fmt.Errorf("error reading local config: %w", err)
}
for _, env := range localConfig.Deploy.Env {
if err := os.Setenv(env.Name, env.Value); err != nil {
return nil, fmt.Errorf("error setting env %s: %w", env.Name, err)
}
}
var cfg Config
if err := cleanenv.ReadConfig(ConfigBasePath, &cfg); err != nil {
return nil, err
}
return &cfg, nil
}