package config import ( "os" "path/filepath" "gopkg.in/yaml.v3" ) // DefaultConfig 返回 SunHPC 的默认配置结构体 func DefaultConfig() *Config { return &Config{ DB: DBConfig{ Type: "sqlite", Path: "/var/lib/sunhpc", // SQLite 数据库存放目录 Name: "sunhpc.db", // 数据库文件名 User: "", // SQLite 不需要 Password: "", Host: "", Port: 0, Socket: "", Verbose: false, }, Log: LogConfig{ Level: "info", Format: "text", // or "json" Output: "stdout", FilePath: "/var/log/sunhpc/sunhpc.log", }, Cluster: ClusterConfig{ Name: "default-cluster", AdminEmail: "admin@example.com", TimeZone: "Asia/Shanghai", NodePrefix: "node", }, } } // WriteDefaultConfig 将默认配置写入指定路径 // 如果目录不存在,会自动创建(需有权限) // 如果文件已存在且非空,会返回错误(除非调用方先删除) func WriteDefaultConfig(path string) error { // 确保目录存在 dir := filepath.Dir(path) if err := os.MkdirAll(dir, 0755); err != nil { return err } // 生成默认配置 cfg := DefaultConfig() // 序列化为 YAML data, err := yaml.Marshal(cfg) if err != nil { return err } // 写入文件(0644 权限) return os.WriteFile(path, data, 0644) }