UNPKG

@launchql/cli

Version:
117 lines (116 loc) 4.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.commands = void 0; const pg_cache_1 = require("pg-cache"); // Commands const admin_users_1 = __importDefault(require("./commands/admin-users")); const clear_1 = __importDefault(require("./commands/clear")); const deploy_1 = __importDefault(require("./commands/deploy")); const explorer_1 = __importDefault(require("./commands/explorer")); const export_1 = __importDefault(require("./commands/export")); const extension_1 = __importDefault(require("./commands/extension")); const init_1 = __importDefault(require("./commands/init")); const install_1 = __importDefault(require("./commands/install")); const kill_1 = __importDefault(require("./commands/kill")); const migrate_1 = __importDefault(require("./commands/migrate")); const package_1 = __importDefault(require("./commands/package")); const plan_1 = __importDefault(require("./commands/plan")); const remove_1 = __importDefault(require("./commands/remove")); const revert_1 = __importDefault(require("./commands/revert")); const server_1 = __importDefault(require("./commands/server")); const tag_1 = __importDefault(require("./commands/tag")); const verify_1 = __importDefault(require("./commands/verify")); const analyze_1 = __importDefault(require("./commands/analyze")); const rename_1 = __importDefault(require("./commands/rename")); const package_2 = require("./package"); const utils_1 = require("./utils"); const withPgTeardown = (fn, skipTeardown = false) => async (...args) => { try { await fn(...args); } finally { if (!skipTeardown) { await (0, pg_cache_1.teardownPgPools)(); } } }; const createCommandMap = (skipPgTeardown = false) => { const pgt = (fn) => withPgTeardown(fn, skipPgTeardown); return { 'admin-users': pgt(admin_users_1.default), clear: pgt(clear_1.default), deploy: pgt(deploy_1.default), verify: pgt(verify_1.default), revert: pgt(revert_1.default), remove: pgt(remove_1.default), init: pgt(init_1.default), extension: pgt(extension_1.default), plan: pgt(plan_1.default), export: pgt(export_1.default), package: pgt(package_1.default), tag: pgt(tag_1.default), kill: pgt(kill_1.default), install: pgt(install_1.default), migrate: pgt(migrate_1.default), analyze: pgt(analyze_1.default), rename: pgt(rename_1.default), // These manage their own connection lifecycles server: server_1.default, explorer: explorer_1.default }; }; const commands = async (argv, prompter, options) => { if (argv.version || argv.v) { const pkg = (0, package_2.readAndParsePackageJson)(); console.log(pkg.version); process.exit(0); } let { first: command, newArgv } = (0, utils_1.extractFirst)(argv); // Show usage if explicitly requested but no command specified if ((argv.help || argv.h || command === 'help') && !command) { console.log(utils_1.usageText); process.exit(0); } // Show usage for help command specifically if (command === 'help') { console.log(utils_1.usageText); process.exit(0); } const commandMap = createCommandMap(options?.skipPgTeardown); // Prompt if no command provided if (!command) { const answer = await prompter.prompt(argv, [ { type: 'autocomplete', name: 'command', message: 'What do you want to do?', options: Object.keys(commandMap) } ]); command = answer.command; } // Prompt for working directory newArgv = await prompter.prompt(newArgv, [ { type: 'text', name: 'cwd', message: 'Working directory', required: false, default: process.cwd(), useDefault: true } ]); const commandFn = commandMap[command]; if (!commandFn) { console.error(`Unknown command: ${command}`); console.log(utils_1.usageText); process.exit(1); } await commandFn(newArgv, prompter, options); prompter.close(); return argv; }; exports.commands = commands;