UNPKG

@launchql/cli

Version:
65 lines (62 loc) 2.13 kB
import { extractFirst } from '../utils'; import deps from './migrate/deps'; // Migrate subcommands import init from './migrate/init'; import list from './migrate/list'; import status from './migrate/status'; const subcommandMap = { init, status, list, deps }; const migrateUsageText = ` LaunchQL Migrate Commands: launchql migrate init Initialize migration tracking in database launchql migrate status Show current migration status launchql migrate list List all changes (deployed and pending) launchql migrate deps Show change dependencies Options: --help, -h Show this help message --cwd Working directory (default: current directory) `; export default async (argv, prompter, options) => { let { first: subcommand, newArgv } = extractFirst(argv); // Show usage if explicitly requested if (argv.help || argv.h || subcommand === 'help') { console.log(migrateUsageText); process.exit(0); } // Prompt if no subcommand provided if (!subcommand) { const answer = await prompter.prompt(argv, [ { type: 'autocomplete', name: 'subcommand', message: 'What migrate operation do you want to perform?', options: Object.keys(subcommandMap).map(cmd => ({ name: cmd, value: cmd, description: getSubcommandDescription(cmd) })) } ]); subcommand = answer.subcommand; } const subcommandFn = subcommandMap[subcommand]; if (!subcommandFn) { console.error(`Unknown migrate subcommand: ${subcommand}`); console.log(migrateUsageText); process.exit(1); } await subcommandFn(newArgv, prompter, options); }; function getSubcommandDescription(cmd) { const descriptions = { init: 'Initialize migration tracking in database', status: 'Show current migration status', list: 'List all changes (deployed and pending)', deps: 'Show change dependencies' }; return descriptions[cmd] || ''; }