53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
const { PHASE_SUBCOMMANDS } = require('./command-aliases.generated.cjs');
|
|
|
|
function routePhaseCommand({ phase, args, cwd, raw, error }) {
|
|
const subcommand = args[1];
|
|
|
|
if (subcommand === 'next-decimal') {
|
|
phase.cmdPhaseNextDecimal(cwd, args[2], raw);
|
|
} else if (subcommand === 'add') {
|
|
let customId = null;
|
|
const descArgs = [];
|
|
for (let i = 2; i < args.length; i++) {
|
|
if (args[i] === '--id' && i + 1 < args.length) {
|
|
customId = args[i + 1];
|
|
i++;
|
|
} else {
|
|
descArgs.push(args[i]);
|
|
}
|
|
}
|
|
phase.cmdPhaseAdd(cwd, descArgs.join(' '), raw, customId);
|
|
} else if (subcommand === 'add-batch') {
|
|
const descFlagIdx = args.indexOf('--descriptions');
|
|
let descriptions;
|
|
if (descFlagIdx !== -1 && args[descFlagIdx + 1]) {
|
|
try {
|
|
descriptions = JSON.parse(args[descFlagIdx + 1]);
|
|
} catch {
|
|
error('--descriptions must be a JSON array');
|
|
}
|
|
} else {
|
|
descriptions = args.slice(2).filter(a => a !== '--raw');
|
|
}
|
|
phase.cmdPhaseAddBatch(cwd, descriptions, raw);
|
|
} else if (subcommand === 'insert') {
|
|
if (args.includes('--dry-run')) {
|
|
error('phase insert does not support --dry-run');
|
|
}
|
|
phase.cmdPhaseInsert(cwd, args[2], args.slice(3).join(' '), raw);
|
|
} else if (subcommand === 'remove') {
|
|
const forceFlag = args.includes('--force');
|
|
phase.cmdPhaseRemove(cwd, args[2], { force: forceFlag }, raw);
|
|
} else if (subcommand === 'complete') {
|
|
phase.cmdPhaseComplete(cwd, args[2], raw);
|
|
} else {
|
|
error(`Unknown phase subcommand. Available: ${PHASE_SUBCOMMANDS.filter((s) => s !== 'list-plans' && s !== 'list-artifacts' && s !== 'scaffold').join(', ')}`);
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
routePhaseCommand,
|
|
};
|