@launchql/cli
Version:
LaunchQL CLI
93 lines (92 loc) • 3.27 kB
JavaScript
"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 package_1 = require("./package");
const utils_1 = require("./utils");
// Commands
const deploy_1 = __importDefault(require("./commands/deploy"));
const server_1 = __importDefault(require("./commands/server"));
const explorer_1 = __importDefault(require("./commands/explorer"));
const verify_1 = __importDefault(require("./commands/verify"));
const revert_1 = __importDefault(require("./commands/revert"));
const init_1 = __importDefault(require("./commands/init"));
const extension_1 = __importDefault(require("./commands/extension"));
const plan_1 = __importDefault(require("./commands/plan"));
const install_1 = __importDefault(require("./commands/install"));
const export_1 = __importDefault(require("./commands/export"));
const package_2 = __importDefault(require("./commands/package"));
const kill_1 = __importDefault(require("./commands/kill"));
const server_utils_1 = require("@launchql/server-utils");
const withPgTeardown = (fn) => async (...args) => {
try {
await fn(...args);
}
finally {
await (0, server_utils_1.teardownPgPools)();
}
};
const pgt = withPgTeardown;
const commandMap = {
deploy: pgt(deploy_1.default),
verify: pgt(verify_1.default),
revert: pgt(revert_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_2.default),
kill: pgt(kill_1.default),
install: pgt(install_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_1.readAndParsePackageJson)();
console.log(pkg.version);
process.exit(0);
}
let { first: command, newArgv } = (0, utils_1.extractFirst)(argv);
// Show usage if explicitly requested
if (argv.help || argv.h || command === 'help') {
console.log(utils_1.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(utils_1.usageText);
process.exit(1);
}
await commandFn(newArgv, prompter, options);
prompter.close();
return argv;
};
exports.commands = commands;