diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index aeb3cf60509b..bdef3492fdd8 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -14,6 +14,7 @@ type FixId = string; interface FixOptions { fixId?: FixId; + list?: boolean; yes?: boolean; dryRun?: boolean; useNpm?: boolean; @@ -37,22 +38,27 @@ type FixSummary = { failed: Record; }; -export const automigrate = async ({ fixId, dryRun, yes, useNpm, force }: FixOptions = {}) => { - const packageManager = JsPackageManagerFactory.getPackageManager({ useNpm, force }); +const logAvailableMigrations = () => { + const availableFixes = allFixes.map((f) => chalk.yellow(f.id)).join(', '); + logger.info(`\nThe following migrations are available: ${availableFixes}`); +}; + +export const automigrate = async ({ fixId, dryRun, yes, useNpm, force, list }: FixOptions = {}) => { + if (list) { + logAvailableMigrations(); + return; + } + const fixes = fixId ? allFixes.filter((f) => f.id === fixId) : allFixes; if (fixId && fixes.length === 0) { - const availableFixes = allFixes.map((f) => chalk.yellow(f.id)).join(', '); - logger.info( - dedent` - 📭 No migrations found for ${chalk.magenta(fixId)}. - - The following migrations are available: ${availableFixes} - ` - ); + logger.info(`📭 No migrations found for ${chalk.magenta(fixId)}.`); + logAvailableMigrations(); return; } + const packageManager = JsPackageManagerFactory.getPackageManager({ useNpm, force }); + logger.info('🔎 checking possible migrations..'); const fixResults = {} as Record; const fixSummary: FixSummary = { succeeded: [], failed: {}, manual: [], skipped: [] }; diff --git a/code/lib/cli/src/generate.ts b/code/lib/cli/src/generate.ts index 63b4f788fde6..5637d5ffb09e 100644 --- a/code/lib/cli/src/generate.ts +++ b/code/lib/cli/src/generate.ts @@ -191,6 +191,7 @@ program .option('-n --dry-run', 'Only check for fixes, do not actually run them') .option('--package-manager ', 'Force package manager') .option('-N --use-npm', 'Use npm as package manager (deprecated)') + .option('-l --list', 'List available migrations') .action(async (fixId, options) => { await automigrate({ fixId, ...options }).catch((e) => { logger.error(e);