新增配置模块
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
package main
|
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