Skip to content

Commit

Permalink
feat(lift): use shared plugins definition for lift enhancers
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed Jan 22, 2025
1 parent 07e9d73 commit 6c83ced
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 29 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
"packageManager": "[email protected]+sha512.11dff29565d2297c74e7c594a9762581bde969f0aa5cbe6f5b3644bf008a16c065ece61094d9ffbb81125be38df8e1ba43eb8244b3d30c61eb797e9a2440e3ec",
"dependencies": {
"@form8ion/codecov": "6.2.0",
"@form8ion/core": "4.8.0",
"@form8ion/cucumber-scaffolder": "4.0.0",
"@form8ion/github": "2.0.0",
"@form8ion/github-actions-node-ci": "5.0.1",
Expand Down Expand Up @@ -81,7 +82,6 @@
"devDependencies": {
"@cucumber/cucumber": "11.2.0",
"@form8ion/commitlint-config": "2.0.3",
"@form8ion/core": "4.8.0",
"@form8ion/eslint-config": "7.0.12",
"@form8ion/eslint-config-cucumber": "1.4.1",
"@form8ion/eslint-config-mocha": "3.0.6",
Expand Down
18 changes: 18 additions & 0 deletions src/commands/common/plugins.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import * as renovatePlugin from '@form8ion/renovate-scaffolder';
import * as githubPlugin from '@form8ion/github';

import {javascriptPluginFactory} from './enhanced-plugins.js';

export default function (decisions) {
return {
dependencyUpdaters: {
Renovate: renovatePlugin
},
languages: {
JavaScript: javascriptPluginFactory(decisions)
},
vcsHosts: {
GitHub: githubPlugin
}
};
}
32 changes: 32 additions & 0 deletions src/commands/common/plugins.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import * as renovatePlugin from '@form8ion/renovate-scaffolder';
import * as githubPlugin from '@form8ion/github';

import any from '@travi/any';
import {describe, expect, it, vi} from 'vitest';
import {when} from 'jest-when';

import {javascriptPluginFactory} from './enhanced-plugins.js';
import plugins from './plugins.js';

vi.mock('./enhanced-plugins.js');

describe('plugins', () => {
const decisions = any.simpleObject();

it('defines the project plugins', () => {
const jsPlugin = any.simpleObject();
when(javascriptPluginFactory).calledWith(decisions).mockReturnValue(jsPlugin);

expect(plugins(decisions)).toEqual({
dependencyUpdaters: {
Renovate: renovatePlugin
},
languages: {
JavaScript: jsPlugin
},
vcsHosts: {
GitHub: githubPlugin
}
});
});
});
14 changes: 5 additions & 9 deletions src/commands/lift/command.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
import {ungroupObject} from '@form8ion/core';
import {lift} from '@form8ion/lift';
import {
lift as liftRenovate,
test as renovatePredicate,
scaffold as scaffoldRenovate
} from '@form8ion/renovate-scaffolder';
import {scaffold as scaffoldRenovate} from '@form8ion/renovate-scaffolder';
import {scaffold as scaffoldCucumber} from '@form8ion/cucumber-scaffolder';
import {test as jsApplicabilityTest} from '@form8ion/javascript';
import {removeGreenkeeper} from '@form8ion/remove-greenkeeper';
import {lift as liftGithubActionsCI, test as githubActionsCiApplicabilityTest} from '@form8ion/github-actions-node-ci';
import {replace as replaceTravisCiWithGithubActions} from '@form8ion/replace-travis-ci-with-github-actions';
import {scaffold as scaffoldOssfScorecard} from '@form8ion/ossf-scorecard';
import {lift as liftJetbrains, test as jetbrainsInUse} from '@form8ion/jetbrains';

import {getEnhancedCodecovScaffolder, javascript as liftJavascript, prettier} from './enhanced-lifters.js';
import projectPlugins from '../common/plugins.js';
import {getEnhancedCodecovScaffolder, prettier} from './enhanced-lifters.js';
import {unitTesting} from './enhanced-scaffolders.js';

export function handler({decisions}) {
Expand All @@ -29,8 +26,7 @@ export function handler({decisions}) {
'OSSF Scorecard': scaffoldOssfScorecard
},
enhancers: {
JavaScript: {test: jsApplicabilityTest, lift: liftJavascript},
Renovate: {test: renovatePredicate, lift: liftRenovate},
...ungroupObject(projectPlugins({})),
'GitHub Actions CI': {test: githubActionsCiApplicabilityTest, lift: liftGithubActionsCI},
JetBrains: {test: jetbrainsInUse, lift: liftJetbrains}
}
Expand Down
32 changes: 14 additions & 18 deletions src/commands/lift/command.test.js
Original file line number Diff line number Diff line change
@@ -1,40 +1,37 @@
import {ungroupObject} from '@form8ion/core';
import * as lifter from '@form8ion/lift';
import {
lift as liftRenovate,
test as renovatePredicate,
scaffold as scaffoldRenovate
} from '@form8ion/renovate-scaffolder';
import {scaffold as scaffoldRenovate} from '@form8ion/renovate-scaffolder';
import {scaffold as scaffoldCucumber} from '@form8ion/cucumber-scaffolder';
import {removeGreenkeeper} from '@form8ion/remove-greenkeeper';
import {replace as replaceTravisCiWithGithubActions} from '@form8ion/replace-travis-ci-with-github-actions';
import {test as jsApplicabilityTest} from '@form8ion/javascript';
import {lift as liftGithubActionsCI, test as githubActionsCiApplicabilityTest} from '@form8ion/github-actions-node-ci';
import {scaffold as scaffoldOssfScorecard} from '@form8ion/ossf-scorecard';
import {lift as liftJetbrains, test as jetbrainsInUse} from '@form8ion/jetbrains';

import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
import {describe, expect, it, vi} from 'vitest';
import any from '@travi/any';
import {when} from 'jest-when';

import projectPlugins from '../common/plugins.js';
import {unitTesting} from './enhanced-scaffolders.js';
import * as enhancedLifters from './enhanced-lifters.js';
import {command, describe as commandDescription, handler} from './index.js';

describe('lift command', () => {
beforeEach(() => {
vi.mock('@form8ion/lift');
vi.mock('./enhanced-lifters.js');
});

afterEach(() => {
vi.clearAllMocks();
});
vi.mock('@form8ion/core');
vi.mock('@form8ion/lift');
vi.mock('../common/plugins.js');
vi.mock('./enhanced-lifters.js');

describe('lift command', () => {
it('should define the lift command', async () => {
const liftingResults = any.simpleObject();
const decisions = any.simpleObject();
const projectPluginGroups = any.objectWithKeys(any.listOf(any.word), {factory: any.simpleObject});
const codecovScaffolder = () => undefined;
const ungroupedPlugins = any.simpleObject();
when(ungroupObject).calledWith(projectPluginGroups).mockReturnValue(ungroupedPlugins);
enhancedLifters.getEnhancedCodecovScaffolder.mockReturnValue(codecovScaffolder);
when(projectPlugins).calledWith({}).mockReturnValue(projectPluginGroups);
when(lifter.lift)
.calledWith({
decisions,
Expand All @@ -49,8 +46,7 @@ describe('lift command', () => {
'OSSF Scorecard': scaffoldOssfScorecard
},
enhancers: {
JavaScript: {test: jsApplicabilityTest, lift: enhancedLifters.javascript},
Renovate: {test: renovatePredicate, lift: liftRenovate},
...ungroupedPlugins,
'GitHub Actions CI': {test: githubActionsCiApplicabilityTest, lift: liftGithubActionsCI},
JetBrains: {test: jetbrainsInUse, lift: liftJetbrains}
}
Expand Down

0 comments on commit 6c83ced

Please sign in to comment.