1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package toml
- import (
- "errors"
- "fmt"
- "os"
- "path/filepath"
- "github.com/spf13/viper"
- )
- // CreateFileIfNotExists 创建文件,如果文件已存在则返回错误
- func CreateFileIfNotExists(filename string) error {
- // 获取当前工作目录
- projectDir, err := os.Getwd()
- if err != nil {
- return errors.New("无法获取当前工作目录: " + err.Error())
- }
- fmt.Println("当前工作目录", projectDir)
- // 检查文件是否存在
- if _, err := os.Stat(filename); err == nil {
- return errors.New("文件已存在")
- } else if !os.IsNotExist(err) {
- return err // 返回其他错误
- }
- // 确保目录存在
- dir := filepath.Dir(filename)
- if err := os.MkdirAll(dir, os.ModePerm); err != nil {
- return errors.New("无法创建目录: " + err.Error())
- }
- // 创建文件
- file, err := os.Create(filename)
- if err != nil {
- return errors.New("无法创建文件: " + err.Error())
- }
- defer file.Close()
- return nil
- }
- // CreateTOMLGoups 在指定的 TOML 文件中创建组
- func CreateTOMLGoups(filename string, groups map[string]interface{}) error {
- v := viper.New()
- v.SetConfigFile(filename)
- v.SetConfigType("toml")
- // 检查文件是否存在
- if _, err := os.Stat(filename); os.IsNotExist(err) {
- return errors.New("文件不存在")
- }
- // 读取现有的配置文件
- if err := v.ReadInConfig(); err != nil {
- return errors.New("无法读取配置文件: " + err.Error())
- }
- // 打印读取的配置以进行调试
- fmt.Println("现有配置:", v.AllSettings())
- // 设置组和默认值
- for group, defaultValue := range groups {
- if !v.IsSet(group) { // 仅在组不存在时设置
- fmt.Println("设置组:", group)
- v.Set(group, defaultValue)
- }
- }
- // 强制写入文件
- if err := v.WriteConfigAs(filename); err != nil {
- return errors.New("无法写入配置文件: " + err.Error())
- }
- // 打印写入后的配置以进行调试
- fmt.Println("更新后的配置:", v.AllSettings())
- return nil
- }
|