UNPKG

@neo-one/node-data-backup

Version:

NEO•ONE node data path backup and restore.

49 lines (47 loc) 6.2 kB
"use strict"; 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=