Files
GitPilot/config/config.go
2026-03-06 17:23:25 +08:00

72 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()
}