File size: 766 Bytes
eb3f11e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // Commander tree mutation helpers used by lazy command replacement.
import type { Command } from "commander";
/** Remove an exact Command instance from a parent program. */
function removeCommand(program: Command, command: Command): boolean {
const commands = program.commands as Command[];
const index = commands.indexOf(command);
if (index < 0) {
return false;
}
commands.splice(index, 1);
return true;
}
/** Remove a command by primary name or alias. */
export function removeCommandByName(program: Command, name: string): boolean {
const existing = program.commands.find(
(command) => command.name() === name || command.aliases().includes(name),
);
if (!existing) {
return false;
}
return removeCommand(program, existing);
}
|