Files
eiblog/cmd/backup/config/config.go
2025-11-12 09:43:48 +08:00

71 lines
1.3 KiB
Go

package config
import (
"os"
"path/filepath"
"strings"
"github.com/eiblog/eiblog/pkg/config"
"github.com/sirupsen/logrus"
"gopkg.in/yaml.v3"
)
// Config config
type Config struct {
config.APIMode
Database config.Database // 数据库配置
BackupTo string // 备份到, default: qiniu
Interval string // 备份周期, default: 7d
Validity int // 备份保留时间, default: 60
Qiniu config.Qiniu // 七牛OSS配置
}
// Conf 配置
var Conf Config
// load config file
func init() {
// run mode
mode := config.RunModeProd
if m := os.Getenv("RUN_MODE"); m != "" {
mode = config.RunMode(m)
if !mode.IsRunMode() {
panic("config: unsupported env RUN_MODE: " + mode)
}
}
logrus.Infof("Run mode:%s", mode)
// 加载配置文件
etc, err := config.WorkEtcPath()
if err != nil {
panic(err)
}
path := filepath.Join(etc, "app.yml")
data, err := os.ReadFile(path)
if err != nil {
panic(err)
}
err = yaml.Unmarshal(data, &Conf)
if err != nil {
panic(err)
}
Conf.RunMode = mode
// read env
readDatabaseEnv()
}
func readDatabaseEnv() {
key := strings.ToUpper(Conf.Name) + "_DB_DRIVER"
if d := os.Getenv(key); d != "" {
Conf.Database.Driver = d
}
key = strings.ToUpper(Conf.Name) + "_DB_SOURCE"
if s := os.Getenv(key); s != "" {
Conf.Database.Source = s
}
}