diff --git a/winget-source/sync-repo.js b/winget-source/sync-repo.js index 80bfea6..840d516 100644 --- a/winget-source/sync-repo.js +++ b/winget-source/sync-repo.js @@ -1,5 +1,5 @@ import async from 'async' -import { rm } from 'fs/promises' +import { rm, rename } from 'fs/promises' import { EX_IOERR, EX_TEMPFAIL, EX_UNAVAILABLE } from './sysexits.js'; import { @@ -17,9 +17,12 @@ const { parallelLimit, remote, sqlite3, winston } = setupEnvironment(); winston.info(`start syncing with ${remote}`); -syncFile('source.msix').catch(exitOnError(EX_UNAVAILABLE)).then(async _ => { +const tmpSourceFilename = 'source.msix.syncing'; +const sourceFilename = 'source.msix'; + +syncFile(tmpSourceFilename).catch(exitOnError(EX_UNAVAILABLE)).then(async _ => { const temp = await makeTempDirectory('winget-repo-'); - const database = await extractDatabaseFromBundle(getLocalPath('source.msix'), temp); + const database = await extractDatabaseFromBundle(getLocalPath(tmpSourceFilename), temp); const db = new sqlite3.Database(database, sqlite3.OPEN_READONLY, exitOnError(EX_IOERR)); db.all('SELECT * FROM pathparts', (error, rows) => { @@ -35,4 +38,6 @@ syncFile('source.msix').catch(exitOnError(EX_UNAVAILABLE)).then(async _ => { }); }); }); +}).then(() => { + rename(getLocalPath(tmpSourceFilename), getLocalPath(sourceFilename)) });