backuptarget: pseudo target for import and restore

This commit is contained in:
Girish Ramakrishnan
2025-08-01 23:20:51 +02:00
parent 3cabbc1328
commit a01e1bad0f
8 changed files with 90 additions and 77 deletions

View File

@@ -27,7 +27,6 @@ const apps = require('./apps.js'),
fs = require('fs'),
iputils = require('./iputils.js'),
manifestFormat = require('@cloudron/manifest-format'),
mounts = require('./mounts.js'),
os = require('os'),
path = require('path'),
paths = require('./paths.js'),
@@ -331,13 +330,11 @@ async function installCommand(app, args, progressCallback) {
await progressCallback({ percent: 65, message: 'Downloading backup and restoring addons' });
await services.setupAddons(app, app.manifest.addons);
await services.clearAddons(app, app.manifest.addons);
const backupConfig = restoreConfig.backupConfig;
const mountObject = await backupTargets.setupManagedStorage(backupConfig, `/mnt/appimport-${app.id}`);
if (mountObject) await progressCallback({ percent: 70, message: 'Setting up mount for importing' });
backupConfig.rootPath = backupTargets.getRootPath(backupConfig, `/mnt/appimport-${app.id}`);
const backupTarget = restoreConfig.backupTarget;
await backupTargets.storageApi(backupTarget).setup(backupTarget.config);
await backuptask.downloadApp(app, restoreConfig, (progress) => { progressCallback({ percent: 75, message: progress.message }); });
await apps.loadConfig(app);
if (mountObject) await mounts.removeMount(mountObject);
await backupTargets.storageApi(backupTarget).teardown(backupTarget.config);
await progressCallback({ percent: 75, message: 'Restoring addons' });
await services.restoreAddons(app, app.manifest.addons);
} else { // clone and restore