@launchql/cli
Version:
LaunchQL CLI
117 lines (116 loc) • 4.44 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 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;