1
0
镜像自地址 https://github.com/tuna/tunasync.git 已同步 2025-12-06 06:26:46 +00:00

feature(worker): implemented multi-file configrations. closing #23

这个提交包含在:
bigeagle
2016-05-03 16:52:38 +08:00
父节点 4f3a91cda7
当前提交 5c8d90608c
共有 5 个文件被更改,包括 111 次插入31 次删除

查看文件

@@ -3,6 +3,7 @@ package worker
import (
"errors"
"os"
"path/filepath"
"github.com/BurntSushi/toml"
)
@@ -30,12 +31,13 @@ func (p *providerEnum) UnmarshalText(text []byte) error {
return nil
}
// Worker config options
// Config represents worker config options
type Config struct {
Global globalConfig `toml:"global"`
Manager managerConfig `toml:"manager"`
Server serverConfig `toml:"server"`
Cgroup cgroupConfig `toml:"cgroup"`
Include includeConfig `toml:"include"`
Mirrors []mirrorConfig `toml:"mirrors"`
}
@@ -67,6 +69,14 @@ type cgroupConfig struct {
Group string `toml:"group"`
}
type includeConfig struct {
IncludeMirrors string `toml:"include_mirrors"`
}
type includedMirrorConfig struct {
Mirrors []mirrorConfig `toml:"mirrors"`
}
type mirrorConfig struct {
Name string `toml:"name"`
Provider providerEnum `toml:"provider"`
@@ -98,5 +108,22 @@ func LoadConfig(cfgFile string) (*Config, error) {
logger.Errorf(err.Error())
return nil, err
}
if cfg.Include.IncludeMirrors != "" {
includedFiles, err := filepath.Glob(cfg.Include.IncludeMirrors)
if err != nil {
logger.Errorf(err.Error())
return nil, err
}
for _, f := range includedFiles {
var incMirCfg includedMirrorConfig
if _, err := toml.DecodeFile(f, &incMirCfg); err != nil {
logger.Errorf(err.Error())
return nil, err
}
cfg.Mirrors = append(cfg.Mirrors, incMirCfg.Mirrors...)
}
}
return cfg, nil
}