8ffa0531d6
构建上传工具 / build (push) Successful in 1m10s
- 新增 ClearFilesNoPrompt 配置项用于控制是否提示清空文件 - 实现临时文件目录(tmp)管理,优先处理未上传完的文件 - 添加文件复制功能,支持快速零拷贝技术 - 实现文件清空提示机制,支持用户确认操作 - 优化文件上传流程,添加进度跟踪和状态更新 - 过滤掉大小为0的文件,避免无效上传 - 修改数据结构名称提升代码可读性
84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
|
|
"github.com/fsnotify/fsnotify"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
type Config struct {
|
|
Url string `json:"url" mapstructure:"url"`
|
|
Token string `json:"token" mapstructure:"token"`
|
|
ThreadCount int `json:"thread_count" mapstructure:"thread-count"`
|
|
HandleFileCount int `json:"handle_file_count" mapstructure:"handle-file-count"`
|
|
IsRunOnStart bool `json:"is_run_on_start" mapstructure:"is-run-on-start"`
|
|
CheckDir string `json:"check_dir" mapstructure:"check-dir"`
|
|
ClearFilesNoPrompt bool `json:"clear_files_no_prompt" mapstructure:"clear-files-no-prompt"`
|
|
}
|
|
|
|
var APPConfig Config
|
|
var configMu sync.Mutex
|
|
|
|
const (
|
|
Url = "url"
|
|
Token = "token"
|
|
ThreadCount = "thread-count"
|
|
HandleFileCount = "handle-file-count"
|
|
IsRunOnStart = "is-run-on-start"
|
|
CheckDir = "check-dir"
|
|
ClearFilesNoPrompt = "clear-files-no-prompt"
|
|
)
|
|
|
|
func InitConfig() {
|
|
// 设置默认配置
|
|
defaultConfig := Config{
|
|
Url: "http://127.0.0.1:8080",
|
|
Token: "",
|
|
ThreadCount: 10,
|
|
HandleFileCount: 25,
|
|
IsRunOnStart: false,
|
|
CheckDir: "",
|
|
ClearFilesNoPrompt: false,
|
|
}
|
|
viper.SetDefault(Url, defaultConfig.Url)
|
|
viper.SetDefault(Token, defaultConfig.Token)
|
|
viper.SetDefault(ThreadCount, defaultConfig.ThreadCount)
|
|
viper.SetDefault(HandleFileCount, defaultConfig.HandleFileCount)
|
|
viper.SetDefault(IsRunOnStart, defaultConfig.IsRunOnStart)
|
|
viper.SetDefault(CheckDir, defaultConfig.CheckDir)
|
|
viper.SetDefault(ClearFilesNoPrompt, defaultConfig.ClearFilesNoPrompt)
|
|
|
|
//设置配置文件名和路径 ./config.toml
|
|
viper.AddConfigPath(".")
|
|
viper.SetConfigName("config")
|
|
viper.SetConfigType("toml")
|
|
viper.SafeWriteConfig() //安全写入默认配置
|
|
|
|
//读取配置文件
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
fmt.Errorf("无法读取配置文件: %w", err)
|
|
}
|
|
if err := viper.Unmarshal(&APPConfig); err != nil {
|
|
fmt.Errorf("无法解析配置: %w", err)
|
|
}
|
|
|
|
viper.WatchConfig()
|
|
viper.OnConfigChange(func(e fsnotify.Event) {
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
fmt.Errorf("无法读取配置文件: %w", err)
|
|
}
|
|
if err := viper.Unmarshal(&APPConfig); err != nil {
|
|
fmt.Errorf("无法解析配置: %w", err)
|
|
}
|
|
})
|
|
}
|
|
|
|
func WriteConfig(key string, value any) {
|
|
configMu.Lock()
|
|
viper.Set(key, value)
|
|
viper.WriteConfig()
|
|
configMu.Unlock()
|
|
}
|