()
| 232 | } |
| 233 | |
| 234 | export function applyPendingDataDirMigration(): { success: boolean; skipped?: boolean; error?: string } { |
| 235 | const config = readStorageConfig() |
| 236 | const pending = config.pendingDataDirMigration |
| 237 | if (!pending) return { success: true, skipped: true } |
| 238 | |
| 239 | const result = runPendingDataDirMigration(pending, { |
| 240 | writeUserDataDir(dir) { |
| 241 | writeConfigField('data', 'user_data_dir', dir) |
| 242 | writeConfigField('data', 'electron_migration_done', true) |
| 243 | _userDataDir = dir |
| 244 | }, |
| 245 | clearPendingMigration() { |
| 246 | const latest = readStorageConfig() |
| 247 | writeStorageConfig({ ...latest, pendingDataDirMigration: undefined }) |
| 248 | }, |
| 249 | markPendingDeleteDir(dir) { |
| 250 | const latest = readStorageConfig() |
| 251 | writeStorageConfig({ ...latest, pendingDeleteDir: dir }) |
| 252 | }, |
| 253 | log(message) { |
| 254 | writeMigrationLog(getLogsDir(), message, ensureDir) |
| 255 | }, |
| 256 | }) |
| 257 | |
| 258 | if (!result.success) { |
| 259 | const error = result.errors.join('; ') || '数据目录迁移失败' |
| 260 | console.warn('[Paths] Pending data dir migration failed:', error) |
| 261 | writeMigrationLog( |
| 262 | getLogsDir(), |
| 263 | `切换目录迁移失败: 从 ${pending.from} 到 ${pending.to},复制 ${result.copied} 项,跳过 ${result.skipped} 项,错误 ${result.errors.length} 项: ${error}`, |
| 264 | ensureDir |
| 265 | ) |
| 266 | return { success: false, error } |
| 267 | } |
| 268 | |
| 269 | writeMigrationLog( |
| 270 | getLogsDir(), |
| 271 | `切换目录迁移成功: 从 ${pending.from} 到 ${pending.to},复制 ${result.copied} 项,跳过 ${result.skipped} 项`, |
| 272 | ensureDir |
| 273 | ) |
| 274 | return { success: true } |
| 275 | } |
| 276 | |
| 277 | /** |
| 278 | * 清理待删除的旧数据目录(应用启动时调用) |
no test coverage detected