From 13711ebed5fe447e28ad2a95f8db383784d72a9d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 5 Jun 2021 18:51:34 +0200 Subject: [PATCH] codemods: move codemod executing in under `apply` command and add a `list` command Signed-off-by: Patrik Oldsberg --- packages/codemods/src/index.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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(' ')}`));