diff --git a/.changeset/little-spiders-develop.md b/.changeset/little-spiders-develop.md new file mode 100644 index 000000000..c5d0854f6 --- /dev/null +++ b/.changeset/little-spiders-develop.md @@ -0,0 +1,5 @@ +--- +'@codeshift/cli': minor +--- + +Allows to use the sequence flag in a monorepo development context diff --git a/packages/cli/src/main.ts b/packages/cli/src/main.ts index 5e9072c84..fba8c0c51 100644 --- a/packages/cli/src/main.ts +++ b/packages/cli/src/main.ts @@ -73,9 +73,19 @@ export default async function main(paths: string[], flags: Flags) { selectedConfig.config.transforms && selectedConfig.config.transforms[answers.codemod.selection] ) { - transforms.push( - selectedConfig.config.transforms[answers.codemod.selection], - ); + if (flags.sequence) { + Object.entries( + selectedConfig.config.transforms as Record, + ) + .filter(([key]) => + semver.satisfies(key, `>=${answers.codemod.selection}`), + ) + .forEach(([, path]) => transforms.push(path)); + } else { + transforms.push( + selectedConfig.config.transforms[answers.codemod.selection], + ); + } } else if ( selectedConfig.config.presets && selectedConfig.config.presets[answers.codemod.selection] @@ -115,7 +125,9 @@ export default async function main(paths: string[], flags: Flags) { const answers = await inquirer.prompt([getConfigPrompt(config)]); if (config.transforms && config.transforms[answers.codemod]) { - transforms.push(config.transforms[answers.codemod]); + Object.entries(config.transforms) + .filter(([key]) => semver.satisfies(key, `>=${answers.codemod}`)) + .forEach(([, path]) => transforms.push(path)); } else if (config.presets && config.presets[answers.codemod]) { transforms.push(config.presets[answers.codemod]); }