delete parent and child directry same time.

climb folder too much aflter deleting directory.
removeDir function bug.
This commit is contained in:
Nakagawa Atsushi 2021-11-26 18:26:19 +09:00
parent a9644610a0
commit 0c9da88683

16
dist/index.js vendored
View File

@ -3138,7 +3138,6 @@ class FTPSyncProvider {
}); });
} }
removeFolder(folderPath) { removeFolder(folderPath) {
var _a, _b;
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
this.logger.all(`removing folder "${folderPath + "/"}"`); this.logger.all(`removing folder "${folderPath + "/"}"`);
const path = this.getFileBreadcrumbs(folderPath + "/"); const path = this.getFileBreadcrumbs(folderPath + "/");
@ -3146,14 +3145,11 @@ class FTPSyncProvider {
this.logger.verbose(` no need to change dir`); this.logger.verbose(` no need to change dir`);
} }
else { else {
const relativeFolderPath = path.folders[((_a = path.folders) === null || _a === void 0 ? void 0 : _a.length) - 1] + "/"; this.logger.verbose(` removing folder "${path.folders.join("/") + "/"}"`);
this.logger.verbose(` removing folder "${relativeFolderPath}"`);
if (this.dryRun === false) { if (this.dryRun === false) {
yield utilities_1.retryRequest(this.logger, () => __awaiter(this, void 0, void 0, function* () { return yield this.client.removeDir(relativeFolderPath); })); yield utilities_1.retryRequest(this.logger, () => __awaiter(this, void 0, void 0, function* () { return yield this.client.removeDir(path.folders.join("/")); }));
} }
} }
// navigate back to the root folder
yield this.upDir((_b = path.folders) === null || _b === void 0 ? void 0 : _b.length);
this.logger.verbose(` completed`); this.logger.verbose(` completed`);
}); });
} }
@ -3193,8 +3189,12 @@ class FTPSyncProvider {
yield this.removeFile(file.name); yield this.removeFile(file.name);
} }
// delete old folders // delete old folders
let lastFileName = '///'
for (const file of diffs.delete.filter(item => item.type === "folder")) { for (const file of diffs.delete.filter(item => item.type === "folder")) {
yield this.removeFolder(file.name); if(!file.name.startsWith(lastFileName + '/')) {
yield this.removeFolder(file.name);
}
lastFileName = file.name
} }
this.logger.all(`----------------------------------------------------------------`); this.logger.all(`----------------------------------------------------------------`);
this.logger.all(`🎉 Sync complete. Saving current server state to "${this.serverPath + this.stateName}"`); this.logger.all(`🎉 Sync complete. Saving current server state to "${this.serverPath + this.stateName}"`);
@ -4122,7 +4122,7 @@ class Client {
await this.clearWorkingDir(); await this.clearWorkingDir();
if (remoteDirPath !== "/") { if (remoteDirPath !== "/") {
await this.cdup(); await this.cdup();
await this.removeEmptyDir(remoteDirPath); await this.removeEmptyDir(remoteDirPath.replace(/.*\//,''));
} }
}); });
} }