diff --git a/packages/codemods/src/index.ts b/packages/codemods/src/index.ts index 3f35deafd5..86ba4e5bb3 100644 --- a/packages/codemods/src/index.ts +++ b/packages/codemods/src/index.ts @@ -24,14 +24,29 @@ import { version } from '../package.json'; async function main(argv: string[]) { program.name('backstage-codemods').version(version); + const applyCommand = program + .command('apply ') + .description('Apply a codemod to target directories'); + for (const codemod of codemods) { - program - .command(`${codemod.name} `) + applyCommand + .command(`${codemod.name} `) .description(codemod.description) .option('-d, --dry', 'Dry run, no changes written to files') .action(createCodemodAction(codemod.name)); } + program + .command('list') + .description('List available codemods') + .action(() => { + const maxNameLength = Math.max(...codemods.map(m => m.name.length)); + for (const codemod of codemods) { + const paddedName = codemod.name.padEnd(maxNameLength, ' '); + console.log(`${paddedName} - ${codemod.description}`); + } + }); + program.on('command:*', () => { console.log(); console.log(chalk.red(`Invalid command: ${program.args.join(' ')}`));