Files
Ant-Browser/backend/app_backup_initialize.go
ant-black 70132417ad publish: 1.2.0 snapshot (f3d7ec5)
channel: master

version: 1.2.0

source-ref: D:\code\open_source\ant-chrome master

source-commit: f3d7ec5

merged-public-base: 3d264eb
2026-05-05 18:08:10 +08:00

68 lines
1.8 KiB
Go

package backend
import (
"ant-chrome/backend/internal/config"
"ant-chrome/backend/internal/logger"
"fmt"
"os"
"strings"
)
func (a *App) backupInitializeLocked(applyReload bool) (map[string]interface{}, error) {
log := logger.New("Backup")
a.backupStopRuntimeForMaintenance()
defaultCfg := config.DefaultConfig()
oldCfg := a.config
if oldCfg == nil {
oldCfg = config.DefaultConfig()
}
activeDBPath := a.backupResolveDBPath(oldCfg)
keepFiles := map[string]struct{}{
backupNormalizePath(activeDBPath): {},
backupNormalizePath(activeDBPath + "-wal"): {},
backupNormalizePath(activeDBPath + "-shm"): {},
}
if err := defaultCfg.Save(a.resolveAppPath("config.yaml")); err != nil {
return nil, fmt.Errorf("写入默认配置失败: %w", err)
}
a.config = defaultCfg
a.applyRuntimeConfig(defaultCfg.Runtime)
_ = os.Remove(a.resolveAppPath("proxies.yaml"))
if err := a.backupClearBusinessTables(); err != nil {
return nil, err
}
cleared := make([]string, 0, 3)
dataRoot := a.resolveAppPath("data")
if err := backupRemoveContentsExcept(dataRoot, keepFiles); err == nil {
cleared = append(cleared, dataRoot)
}
oldUserRoot := a.backupResolveUserDataRoot(oldCfg)
newUserRoot := a.backupResolveUserDataRoot(defaultCfg)
for _, p := range backupUniqueNonEmpty([]string{oldUserRoot, newUserRoot}) {
if backupSamePath(p, dataRoot) {
continue
}
if err := backupRemoveContentsExcept(p, keepFiles); err == nil {
cleared = append(cleared, p)
}
}
if applyReload {
if err := a.backupReloadAfterMutation(); err != nil {
return nil, err
}
}
log.Info("系统初始化完成", logger.F("cleared_dirs", strings.Join(cleared, ";")))
return map[string]interface{}{
"cancelled": false,
"resetDone": true,
"clearedDirs": cleared,
"message": "系统已初始化到默认状态",
}, nil
}