apptask: delete app dir files when restoring
also, better deleteAppDir logs
This commit is contained in:
@@ -125,16 +125,22 @@ async function deleteAppDir(app, options) {
|
|||||||
|
|
||||||
const resolvedAppDataDir = stat.isSymbolicLink() ? safe.fs.readlinkSync(appDataDir) : appDataDir;
|
const resolvedAppDataDir = stat.isSymbolicLink() ? safe.fs.readlinkSync(appDataDir) : appDataDir;
|
||||||
|
|
||||||
|
debug(`deleteAppDir - removing files in ${resolvedAppDataDir}`);
|
||||||
|
|
||||||
if (safe.fs.existsSync(resolvedAppDataDir)) {
|
if (safe.fs.existsSync(resolvedAppDataDir)) {
|
||||||
const entries = safe.fs.readdirSync(resolvedAppDataDir);
|
const entries = safe.fs.readdirSync(resolvedAppDataDir);
|
||||||
if (!entries) throw new BoxError(BoxError.FS_ERROR, `Error listing ${resolvedAppDataDir}: ${safe.error.message}`);
|
if (!entries) throw new BoxError(BoxError.FS_ERROR, `Error listing ${resolvedAppDataDir}: ${safe.error.message}`);
|
||||||
|
|
||||||
// remove only files. directories inside app dir are currently volumes managed by the addons
|
// remove only files. any directories inside app dir are currently volumes managed by the addons
|
||||||
// we cannot delete those dirs anyway because of perms
|
// besides, we cannot delete those dirs anyway because of perms
|
||||||
entries.forEach(function (entry) {
|
for (const entry of entries) {
|
||||||
const stat = safe.fs.statSync(path.join(resolvedAppDataDir, entry));
|
const fullPath = path.join(resolvedAppDataDir, entry);
|
||||||
if (stat && !stat.isDirectory()) safe.fs.unlinkSync(path.join(resolvedAppDataDir, entry));
|
const stat = safe.fs.statSync(fullPath);
|
||||||
});
|
if (stat && !stat.isDirectory()) {
|
||||||
|
safe.fs.unlinkSync(fullPath);
|
||||||
|
debug(`deleteAppDir - ${fullPath} ${safe.error?.message || ''}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if this fails, it's probably because the localstorage/redis addons have not cleaned up properly
|
// if this fails, it's probably because the localstorage/redis addons have not cleaned up properly
|
||||||
@@ -286,7 +292,7 @@ async function installCommand(app, args, progressCallback) {
|
|||||||
}
|
}
|
||||||
await services.teardownAddons(app, addonsToRemove);
|
await services.teardownAddons(app, addonsToRemove);
|
||||||
|
|
||||||
if (!restoreConfig || restoreConfig.remotePath) { // in-place import should not delete data dir
|
if (!restoreConfig || restoreConfig.remotePath || restoreConfig.backupId) { // install/import/restore but not in-place import should delete data dir
|
||||||
await deleteAppDir(app, { removeDirectory: false }); // do not remove any symlinked appdata dir
|
await deleteAppDir(app, { removeDirectory: false }); // do not remove any symlinked appdata dir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user