rsync: make processSyncerChange a local function
This commit is contained in:
@@ -68,29 +68,6 @@ async function addFile(sourceFile, encryption, uploader, progressCallback) {
|
||||
await uploader.finish();
|
||||
}
|
||||
|
||||
async function processSyncerChange(change, backupTarget, remotePath, dataLayout, progressCallback) {
|
||||
debug('sync: processing task: %j', change);
|
||||
// the empty task.path is special to signify the directory
|
||||
const destPath = change.path && backupTarget.encryption?.encryptedFilenames ? hush.encryptFilePath(change.path, backupTarget.encryption) : change.path;
|
||||
const fullPath = path.join(remotePath, destPath);
|
||||
|
||||
if (change.operation === 'removedir') {
|
||||
debug(`Removing directory ${fullPath}`);
|
||||
await backupTargets.storageApi(backupTarget).removeDir(backupTarget.config, fullPath, progressCallback);
|
||||
} else if (change.operation === 'remove') {
|
||||
debug(`Removing ${fullPath}`);
|
||||
await backupTargets.storageApi(backupTarget).remove(backupTarget.config, fullPath);
|
||||
} else if (change.operation === 'add') {
|
||||
await promiseRetry({ times: 5, interval: 20000, debug }, async (retryCount) => {
|
||||
progressCallback({ message: `Adding ${change.path}` + (retryCount > 1 ? ` (Try ${retryCount})` : '') });
|
||||
debug(`Adding ${change.path} position ${change.position} try ${retryCount}`);
|
||||
|
||||
const uploader = await backupTargets.storageApi(backupTarget).upload(backupTarget.config, fullPath);
|
||||
await addFile(dataLayout.toLocalPath('./' + change.path), backupTarget.encryption, uploader, progressCallback);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async function sync(backupTarget, remotePath, dataLayout, progressCallback) {
|
||||
assert.strictEqual(typeof backupTarget, 'object');
|
||||
assert.strictEqual(typeof remotePath, 'string');
|
||||
@@ -104,6 +81,29 @@ async function sync(backupTarget, remotePath, dataLayout, progressCallback) {
|
||||
const changes = await syncer.sync(dataLayout, { cacheFile });
|
||||
debug(`sync: processing ${changes.delQueue.length} deletes and ${changes.addQueue.length} additions`);
|
||||
|
||||
async function processSyncerChange(change) {
|
||||
debug('sync: processing task: %j', change);
|
||||
// the empty task.path is special to signify the directory
|
||||
const destPath = change.path && backupTarget.encryption?.encryptedFilenames ? hush.encryptFilePath(change.path, backupTarget.encryption) : change.path;
|
||||
const fullPath = path.join(remotePath, destPath);
|
||||
|
||||
if (change.operation === 'removedir') {
|
||||
debug(`Removing directory ${fullPath}`);
|
||||
await backupTargets.storageApi(backupTarget).removeDir(backupTarget.config, fullPath, progressCallback);
|
||||
} else if (change.operation === 'remove') {
|
||||
debug(`Removing ${fullPath}`);
|
||||
await backupTargets.storageApi(backupTarget).remove(backupTarget.config, fullPath);
|
||||
} else if (change.operation === 'add') {
|
||||
await promiseRetry({ times: 5, interval: 20000, debug }, async (retryCount) => {
|
||||
progressCallback({ message: `Adding ${change.path}` + (retryCount > 1 ? ` (Try ${retryCount})` : '') });
|
||||
debug(`Adding ${change.path} position ${change.position} try ${retryCount}`);
|
||||
|
||||
const uploader = await backupTargets.storageApi(backupTarget).upload(backupTarget.config, fullPath);
|
||||
await addFile(dataLayout.toLocalPath('./' + change.path), backupTarget.encryption, uploader, progressCallback);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const [delError] = await safe(async.eachLimit(changes.delQueue, concurrency, async (change) => await processSyncerChange(change, backupTarget, remotePath, dataLayout, progressCallback)));
|
||||
debug('sync: done processing deletes. error: %o', delError);
|
||||
if (delError) throw delError;
|
||||
|
||||
Reference in New Issue
Block a user