mirror of
https://github.com/black-ant/Ant-Browser.git
synced 2026-07-14 18:48:55 +08:00
channel: master
version: 1.2.0
source-ref: D:\code\open_source\ant-chrome master
source-commit: f3d7ec5
merged-public-base: 3d264eb
68 lines
1.8 KiB
Go
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
|
|
}
|