UNPKG

@launchql/cli

Version:
100 lines (95 loc) 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@launchql/core"); const logger_1 = require("@launchql/logger"); const env_1 = require("@launchql/env"); const pg_env_1 = require("pg-env"); const utils_1 = require("../utils"); const deployed_changes_1 = require("../utils/deployed-changes"); const cli_error_1 = require("../utils/cli-error"); const log = new logger_1.Logger('revert'); const revertUsageText = ` LaunchQL Revert Command: lql revert [OPTIONS] Revert database changes and migrations. Options: --help, -h Show this help message --recursive Revert recursively through dependencies --package <name> Revert specific package --to <target> Revert to specific change or tag --to Interactive selection of deployed changes --tx Use transactions (default: true) --cwd <directory> Working directory (default: current directory) Examples: lql revert Revert latest changes lql revert --to @v1.0.0 Revert to specific tag lql revert --to Interactive selection from deployed changes `; exports.default = async (argv, prompter, _options) => { // Show usage if explicitly requested if (argv.help || argv.h) { console.log(revertUsageText); process.exit(0); } const database = await (0, utils_1.getTargetDatabase)(argv, prompter, { message: 'Select database' }); const questions = [ { name: 'yes', type: 'confirm', message: 'Are you sure you want to proceed?', required: true }, { name: 'tx', type: 'confirm', message: 'Use Transaction?', useDefault: true, default: true, required: false } ]; let { yes, recursive, cwd, tx } = await prompter.prompt(argv, questions); if (!yes) { log.info('Operation cancelled.'); return; } log.debug(`Using current directory: ${cwd}`); let packageName; if (recursive && argv.to !== true) { packageName = await (0, deployed_changes_1.selectDeployedPackage)(database, argv, prompter, log, 'revert'); if (!packageName) { await (0, cli_error_1.cliExitWithError)('No package found to revert'); } } const pkg = new core_1.LaunchQLPackage(cwd); const opts = (0, env_1.getEnvOptions)({ pg: (0, pg_env_1.getPgEnvOptions)({ database }), deployment: { useTx: tx } }); let target; if (argv.to === true) { target = await (0, deployed_changes_1.selectDeployedChange)(database, argv, prompter, log, 'revert'); if (!target) { await (0, cli_error_1.cliExitWithError)('No target selected, operation cancelled'); } } else if (packageName && argv.to) { target = `${packageName}:${argv.to}`; } else if (packageName) { target = packageName; } else if (argv.package && argv.to) { target = `${argv.package}:${argv.to}`; } else if (argv.package) { target = argv.package; } await pkg.revert(opts, target, recursive); log.success('Revert complete.'); return argv; };