UNPKG

@launchql/cli

Version:
86 lines (85 loc) 2.54 kB
import { readAndParsePackageJson } from './package'; import { extractFirst, usageText } from './utils'; // Commands import deploy from './commands/deploy'; import server from './commands/server'; import explorer from './commands/explorer'; import verify from './commands/verify'; import revert from './commands/revert'; import init from './commands/init'; import extension from './commands/extension'; import plan from './commands/plan'; import install from './commands/install'; import _export from './commands/export'; import _package from './commands/package'; import kill from './commands/kill'; import { teardownPgPools } from '@launchql/server-utils'; const withPgTeardown = (fn) => async (...args) => { try { await fn(...args); } finally { await teardownPgPools(); } }; const pgt = withPgTeardown; const commandMap = { deploy: pgt(deploy), verify: pgt(verify), revert: pgt(revert), init: pgt(init), extension: pgt(extension), plan: pgt(plan), export: pgt(_export), package: pgt(_package), kill: pgt(kill), install: pgt(install), // These manage their own connection lifecycles server, explorer }; export const commands = async (argv, prompter, options) => { if (argv.version || argv.v) { const pkg = readAndParsePackageJson(); console.log(pkg.version); process.exit(0); } let { first: command, newArgv } = extractFirst(argv); // Show usage if explicitly requested if (argv.help || argv.h || command === 'help') { console.log(usageText); process.exit(0); } // 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(usageText); process.exit(1); } await commandFn(newArgv, prompter, options); prompter.close(); return argv; };