mirror of
https://github.com/black-ant/Ant-Browser.git
synced 2026-07-14 18:48:55 +08:00
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package backend
|
|
|
|
import (
|
|
appconfig "ant-chrome/backend/internal/config"
|
|
apptray "ant-chrome/backend/internal/tray"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"time"
|
|
)
|
|
|
|
type Config = appconfig.Config
|
|
type TrayCallbacks = apptray.Callbacks
|
|
|
|
func LoadConfig(path string) (*Config, error) {
|
|
cfg, err := appconfig.Load(path)
|
|
repairedConfig := false
|
|
if err == nil {
|
|
return cfg, nil
|
|
}
|
|
|
|
// 配置文件存在但内容损坏时,自动备份并重建默认配置,避免启动阶段反复报错。
|
|
if data, readErr := os.ReadFile(path); readErr == nil && len(data) > 0 {
|
|
backupPath := fmt.Sprintf("%s.broken-%s", path, time.Now().Format("20060102-150405"))
|
|
if writeErr := os.WriteFile(backupPath, data, 0644); writeErr != nil {
|
|
return appconfig.DefaultConfig(), fmt.Errorf("加载配置失败: %w;备份损坏配置失败: %v", err, writeErr)
|
|
}
|
|
}
|
|
|
|
defaultCfg := appconfig.DefaultConfig()
|
|
repairedConfig = true
|
|
if repairedConfig {
|
|
if saveErr := os.MkdirAll(filepath.Dir(path), 0755); saveErr != nil {
|
|
return defaultCfg, fmt.Errorf("加载配置失败: %w;创建配置目录失败: %v", err, saveErr)
|
|
}
|
|
if saveErr := defaultCfg.Save(path); saveErr != nil {
|
|
return defaultCfg, fmt.Errorf("加载配置失败: %w;重建默认配置失败: %v", err, saveErr)
|
|
}
|
|
}
|
|
return defaultCfg, nil
|
|
}
|
|
|
|
func DefaultConfig() *Config {
|
|
return appconfig.DefaultConfig()
|
|
}
|
|
|
|
func RunTray(cb TrayCallbacks) {
|
|
apptray.Run(cb)
|
|
}
|
|
|
|
func QuitTray() {
|
|
apptray.Quit()
|
|
}
|