From 167bda5e1fc0f2c78bbcb06ba944be079dd76266 Mon Sep 17 00:00:00 2001 From: Matt Travi Date: Tue, 14 Jan 2025 17:44:56 -0600 Subject: [PATCH] feat(scaffold): apply language lifters after scaffolding a new project BREAKING CHANGE: language lifters are now applied as part of the project scaffolding projects, so steps should be taken to avoid conflicts with any previous executions of those lifters --- src/scaffolder.js | 2 +- src/scaffolder.test.js | 2 +- .../features/step_definitions/common-steps.js | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/scaffolder.js b/src/scaffolder.js index 158c3b84..7b8dde7a 100644 --- a/src/scaffolder.js +++ b/src/scaffolder.js @@ -63,7 +63,7 @@ export async function scaffold(options) { projectRoot, vcs: vcsResults.vcs, results: mergedResults, - enhancers: {...dependencyUpdaters, ...vcsHosts} + enhancers: {...dependencyUpdaters, ...vcsHosts, ...languages} }); if (language && language.verificationCommand) { diff --git a/src/scaffolder.test.js b/src/scaffolder.test.js index 00b699fa..0e902624 100644 --- a/src/scaffolder.test.js +++ b/src/scaffolder.test.js @@ -133,7 +133,7 @@ describe('project scaffolder', () => { projectRoot: projectPath, vcs, results: mergedResults, - enhancers: {...dependencyUpdaters, ...vcsHosts} + enhancers: {...dependencyUpdaters, ...vcsHosts, ...languages} }); expect(resultsReporter.reportResults).toHaveBeenCalledWith(mergedResults); }); diff --git a/test/integration/features/step_definitions/common-steps.js b/test/integration/features/step_definitions/common-steps.js index 2dc6f9b2..2bf3868e 100644 --- a/test/integration/features/step_definitions/common-steps.js +++ b/test/integration/features/step_definitions/common-steps.js @@ -52,6 +52,8 @@ When(/^the project is scaffolded$/, async function () { this.projectName = 'project-name'; this.projectDescription = any.sentence(); + this.languageLiftResults = any.simpleObject(); + await scaffold({ plugins: { ...this.updatePlugin && { @@ -66,6 +68,16 @@ When(/^the project is scaffolded$/, async function () { info(`Scaffolding ${chosenLanguage} language details for ${projectName}`); return this.languageScaffolderResults; + }, + test: ({projectRoot}) => { + info(`Determining if project at ${projectRoot} uses the ${chosenLanguage} language`); + + return true; + }, + lift: ({projectRoot}) => { + info(`Applying the ${chosenLanguage} language lifter to the project at ${projectRoot}`); + + return this.languageLiftResults; } } }