新增配置模块

This commit is contained in:
zyj
2026-03-06 17:23:25 +08:00
parent 17eea8e75e
commit 74aa6aa1ec
3 changed files with 114 additions and 1 deletions

71
config/config.go Normal file
View File

@@ -0,0 +1,71 @@
package config
import (
"fmt"
"os"
"gopkg.in/yaml.v3"
)
type Project struct {
Name string `yaml:"name"`
Path string `yaml:"path"`
Enabled bool `yaml:"enabled"` // 可选,默认 true
}
type User struct {
Username string `yaml:"username"`
Token string `yaml:"token"` // 可选:未来扩展 API 功能
Projects []Project `yaml:"projects"`
}
type Platform struct {
BaseURL string `yaml:"base_url"` // GitHub/Gitee 可为空Gitea 需要
Users []User `yaml:"users"`
}
type Settings struct {
Concurrency int `yaml:"concurrency"`
NetworkCheck bool `yaml:"network_check"`
LogLevel string `yaml:"log_level"`
}
type AppConfig struct {
Platforms map[string]Platform `yaml:"platforms"`
Settings Settings `yaml:"settings"`
}
// LoadConfig 从 config.yaml 文件加载配置
func LoadConfig() (*AppConfig, error) {
file, err := os.Open("config.yaml")
if err != nil {
return nil, err
}
defer file.Close()
var appConfig *AppConfig
err = yaml.NewDecoder(file).Decode(&appConfig)
if err != nil {
return nil, err
}
return appConfig, nil
}
// SaveConfig 将配置保存到 config.yaml 文件
func SaveConfig(config *AppConfig) error {
file, err := os.OpenFile("config.yaml", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644)
if err != nil {
return err
}
defer file.Close()
enc := yaml.NewEncoder(file)
enc.SetIndent(2)
if err := enc.Encode(config); err != nil {
return fmt.Errorf("写入配置文件失败: %w", err)
}
return enc.Close()
}