From eb88800f9bea4fd244b31dbb77fe5cf589f8ab4d Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 19 Dec 2022 16:02:41 +0100 Subject: [PATCH 1/2] CLI: fix automigrate filtering --- code/lib/cli/src/automigrate/index.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 5ab50dc5106..aeb3cf60509 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -6,7 +6,7 @@ import dedent from 'ts-dedent'; import { JsPackageManagerFactory, type PackageManagerName } from '../js-package-manager'; import type { Fix } from './fixes'; -import { fixes } from './fixes'; +import { fixes as allFixes } from './fixes'; const logger = console; @@ -39,13 +39,25 @@ type FixSummary = { export const automigrate = async ({ fixId, dryRun, yes, useNpm, force }: FixOptions = {}) => { const packageManager = JsPackageManagerFactory.getPackageManager({ useNpm, force }); - const filtered = fixId ? fixes.filter((f) => f.id === fixId) : fixes; + 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} + ` + ); + return; + } logger.info('🔎 checking possible migrations..'); const fixResults = {} as Record; const fixSummary: FixSummary = { succeeded: [], failed: {}, manual: [], skipped: [] }; - for (let i = 0; i < filtered.length; i += 1) { + for (let i = 0; i < fixes.length; i += 1) { const f = fixes[i] as Fix; let result; From 5dcfbf211138d81d567e5e7a3ebfecdc460e4d13 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 19 Dec 2022 17:18:57 +0100 Subject: [PATCH 2/2] CLI: add --list to automigrate command --- code/lib/cli/src/automigrate/index.ts | 28 ++++++++++++++++----------- code/lib/cli/src/generate.ts | 1 + 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index aeb3cf60509..a77e12b9a75 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 null; + } + 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} - ` - ); - return; + logger.info(`📭 No migrations found for ${chalk.magenta(fixId)}.`); + logAvailableMigrations(); + return null; } + 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 63b4f788fde..5637d5ffb09 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);