新增配置模块
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
package main
|
||||
|
||||
func main() {}
|
||||
func main() {
|
||||
|
||||
}
|
||||
|
||||
40
config.yaml
Normal file
40
config.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
platforms:
|
||||
github:
|
||||
users:
|
||||
- username: "zz_main"
|
||||
token: "" # 可选:未来扩展 API 功能
|
||||
projects:
|
||||
- name: "projectA"
|
||||
path: "F:/Projects/github/projectA"
|
||||
- name: "projectB"
|
||||
path: "F:/Projects/github/projectB"
|
||||
|
||||
- username: "zz_work"
|
||||
token: ""
|
||||
projects:
|
||||
- name: "work-tool"
|
||||
path: "F:/Projects/github/work-tool"
|
||||
|
||||
gitee:
|
||||
users:
|
||||
- username: "zz_gitee"
|
||||
token: ""
|
||||
projects:
|
||||
- name: "gitee-demo"
|
||||
path: "F:/Projects/gitee/demo"
|
||||
|
||||
gitea:
|
||||
base_url: "http://192.168.1.10:3000"
|
||||
users:
|
||||
- username: "admin"
|
||||
token: ""
|
||||
projects:
|
||||
- name: "gitea-app"
|
||||
path: "F:/Projects/gitea/app"
|
||||
- name: "gitea-service"
|
||||
path: "F:/Projects/gitea/service"
|
||||
|
||||
settings:
|
||||
concurrency: 6
|
||||
network_check: true
|
||||
log_level: "info"
|
||||
71
config/config.go
Normal file
71
config/config.go
Normal 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()
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user