(journal: MigrationJournal)
| 1300 | }; |
| 1301 | |
| 1302 | const restoreAuthFromJournal = async (journal: MigrationJournal): Promise<void> => { |
| 1303 | await restoreKeychainBackupsFromJournal(journal); |
| 1304 | if (journal.authBackup && fs.existsSync(journal.authBackup)) { |
| 1305 | fs.mkdirSync(dirname(journal.authPath), { recursive: true, mode: 0o700 }); |
| 1306 | const tmp = `${journal.authPath}.restore-${journal.nonce}.tmp`; |
| 1307 | fs.copyFileSync(journal.authBackup, tmp); |
| 1308 | fsyncFileIfExists(tmp); |
| 1309 | await renameWithRetry(tmp, journal.authPath); |
| 1310 | } else if (!journal.authExisted) { |
| 1311 | fs.rmSync(journal.authPath, { force: true }); |
| 1312 | } |
| 1313 | fsyncDirectory(dirname(journal.authPath)); |
| 1314 | }; |
| 1315 | |
| 1316 | const cleanupKeychainBackups = async (journal: MigrationJournal): Promise<void> => { |
| 1317 | const keychain = makeKeychainProvider(keychainBaseServiceName()); |
no test coverage detected