@neo-one/node-data-backup
Version:
NEO•ONE node data path backup and restore.
49 lines (47 loc) • 6.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const fs = tslib_1.__importStar(require("fs-extra"));
const path = tslib_1.__importStar(require("path"));
const getProvider_1 = require("./getProvider");
exports.restore = async ({ monitor: monitorIn, environment, options, }) => {
const monitor = monitorIn.at('node_data_restore');
const { dataPath, tmpPath, readyPath } = environment;
try {
await fs.access(readyPath, fs.constants.R_OK | fs.constants.W_OK);
monitor.log({
name: 'neo_restore_skip_exists',
message: 'Skipping restore beause it already exists',
});
return;
}
catch (error) {
if (error.code !== 'ENOENT') {
monitor.logError({
name: 'neo_restore_skip_exists',
message: 'Encountered error checking for existing restore.',
error,
});
throw error;
}
}
const provider = getProvider_1.getProvider({ environment, options });
if (provider === undefined) {
monitor.log({
name: 'neo_restore_skip_no_provider',
message: 'Skipping restore due to no provider',
});
return;
}
await monitor.captureSpanLog(async (span) => {
await Promise.all([fs.remove(dataPath), fs.remove(tmpPath)]);
await Promise.all([fs.ensureDir(tmpPath), fs.ensureDir(path.dirname(readyPath)), fs.ensureDir(dataPath)]);
await provider.restore(span);
await fs.remove(tmpPath);
await fs.writeFile(readyPath, 'ready');
}, {
name: 'neo_restore_execute',
trace: true,
});
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStCO0FBQy9CLG1EQUE2QjtBQUM3QiwrQ0FBNEM7QUFHL0IsUUFBQSxPQUFPLEdBQUcsS0FBSyxFQUFFLEVBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQ2xCLFdBQVcsRUFDWCxPQUFPLEdBS1IsRUFBRSxFQUFFO0lBQ0gsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUNyRCxJQUFJO1FBRUYsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDVixJQUFJLEVBQUUseUJBQXlCO1lBQy9CLE9BQU8sRUFBRSwyQ0FBMkM7U0FDckQsQ0FBQyxDQUFDO1FBRUgsT0FBTztLQUNSO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLHlCQUF5QjtnQkFDL0IsT0FBTyxFQUFFLGtEQUFrRDtnQkFDM0QsS0FBSzthQUNOLENBQUMsQ0FBQztZQUVILE1BQU0sS0FBSyxDQUFDO1NBQ2I7S0FDRjtJQUVELE1BQU0sUUFBUSxHQUFHLHlCQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNWLElBQUksRUFBRSw4QkFBOEI7WUFDcEMsT0FBTyxFQUFFLHFDQUFxQztTQUMvQyxDQUFDLENBQUM7UUFFSCxPQUFPO0tBQ1I7SUFFRCxNQUFNLE9BQU8sQ0FBQyxjQUFjLENBQzFCLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNiLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQyxFQUNEO1FBQ0UsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixLQUFLLEVBQUUsSUFBSTtLQUNaLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLW5vZGUtZGF0YS1iYWNrdXAvc3JjL3Jlc3RvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb25pdG9yIH0gZnJvbSAnQG5lby1vbmUvbW9uaXRvcic7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZ2V0UHJvdmlkZXIgfSBmcm9tICcuL2dldFByb3ZpZGVyJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCByZXN0b3JlID0gYXN5bmMgKHtcbiAgbW9uaXRvcjogbW9uaXRvckluLFxuICBlbnZpcm9ubWVudCxcbiAgb3B0aW9ucyxcbn06IHtcbiAgcmVhZG9ubHkgbW9uaXRvcjogTW9uaXRvcjtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICByZWFkb25seSBvcHRpb25zOiBPcHRpb25zO1xufSkgPT4ge1xuICBjb25zdCBtb25pdG9yID0gbW9uaXRvckluLmF0KCdub2RlX2RhdGFfcmVzdG9yZScpO1xuICBjb25zdCB7IGRhdGFQYXRoLCB0bXBQYXRoLCByZWFkeVBhdGggfSA9IGVudmlyb25tZW50O1xuICB0cnkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgYXdhaXQgZnMuYWNjZXNzKHJlYWR5UGF0aCwgZnMuY29uc3RhbnRzLlJfT0sgfCBmcy5jb25zdGFudHMuV19PSyk7XG4gICAgbW9uaXRvci5sb2coe1xuICAgICAgbmFtZTogJ25lb19yZXN0b3JlX3NraXBfZXhpc3RzJyxcbiAgICAgIG1lc3NhZ2U6ICdTa2lwcGluZyByZXN0b3JlIGJlYXVzZSBpdCBhbHJlYWR5IGV4aXN0cycsXG4gICAgfSk7XG5cbiAgICByZXR1cm47XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICBtb25pdG9yLmxvZ0Vycm9yKHtcbiAgICAgICAgbmFtZTogJ25lb19yZXN0b3JlX3NraXBfZXhpc3RzJyxcbiAgICAgICAgbWVzc2FnZTogJ0VuY291bnRlcmVkIGVycm9yIGNoZWNraW5nIGZvciBleGlzdGluZyByZXN0b3JlLicsXG4gICAgICAgIGVycm9yLFxuICAgICAgfSk7XG5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0UHJvdmlkZXIoeyBlbnZpcm9ubWVudCwgb3B0aW9ucyB9KTtcbiAgaWYgKHByb3ZpZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICBtb25pdG9yLmxvZyh7XG4gICAgICBuYW1lOiAnbmVvX3Jlc3RvcmVfc2tpcF9ub19wcm92aWRlcicsXG4gICAgICBtZXNzYWdlOiAnU2tpcHBpbmcgcmVzdG9yZSBkdWUgdG8gbm8gcHJvdmlkZXInLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgbW9uaXRvci5jYXB0dXJlU3BhbkxvZzxQcm9taXNlPHZvaWQ+PihcbiAgICBhc3luYyAoc3BhbikgPT4ge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZzLnJlbW92ZShkYXRhUGF0aCksIGZzLnJlbW92ZSh0bXBQYXRoKV0pO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZzLmVuc3VyZURpcih0bXBQYXRoKSwgZnMuZW5zdXJlRGlyKHBhdGguZGlybmFtZShyZWFkeVBhdGgpKSwgZnMuZW5zdXJlRGlyKGRhdGFQYXRoKV0pO1xuICAgICAgYXdhaXQgcHJvdmlkZXIucmVzdG9yZShzcGFuKTtcbiAgICAgIGF3YWl0IGZzLnJlbW92ZSh0bXBQYXRoKTtcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShyZWFkeVBhdGgsICdyZWFkeScpO1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25lb19yZXN0b3JlX2V4ZWN1dGUnLFxuICAgICAgdHJhY2U6IHRydWUsXG4gICAgfSxcbiAgKTtcbn07XG4iXX0=