Skip to content

Commit 6dd29a1

Browse files
committed
feat(predicate): added the function to determine if the lifter should be applied
1 parent 496c705 commit 6dd29a1

File tree

9 files changed

+62
-34
lines changed

9 files changed

+62
-34
lines changed

README.md

+8-5
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,20 @@ $ npm install @form8ion/java --save
5454
#### Import
5555

5656
```javascript
57-
import {scaffold} from '@form8ion/java';
57+
import {scaffold, lift, test} from '@form8ion/java';
5858
```
5959

6060
#### Execute
6161

6262
```javascript
6363
(async () => {
64-
await scaffold({
65-
projectRoot: process.cwd(),
66-
projectName: 'project-name'
67-
});
64+
const projectRoot = process.cwd();
65+
66+
await scaffold({projectRoot, projectName: 'project-name'});
67+
68+
if (await test({projectRoot})) {
69+
await lift({projectRoot, vcs: {}});
70+
}
6871
})();
6972
```
7073

example.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
// #### Import
22
// remark-usage-ignore-next
33
import stubbedFs from 'mock-fs';
4-
import {scaffold} from './lib/index.js';
4+
import {scaffold, lift, test} from './lib/index.js';
55

66
// remark-usage-ignore-next
77
stubbedFs();
88

99
// #### Execute
1010

1111
(async () => {
12-
await scaffold({
13-
projectRoot: process.cwd(),
14-
projectName: 'project-name'
15-
});
12+
const projectRoot = process.cwd();
13+
14+
await scaffold({projectRoot, projectName: 'project-name'});
15+
16+
if (await test({projectRoot})) {
17+
await lift({projectRoot, vcs: {}});
18+
}
1619
})();

package-lock.json

+4-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
"devDependencies": {
5252
"@cucumber/cucumber": "10.3.1",
5353
"@form8ion/commitlint-config": "1.0.69",
54-
"@form8ion/core": "4.2.0",
5554
"@form8ion/eslint-config": "7.0.8",
5655
"@form8ion/eslint-config-cucumber": "1.4.1",
5756
"@form8ion/remark-lint-preset": "6.0.2",
@@ -76,6 +75,7 @@
7675
"vitest": "1.2.2"
7776
},
7877
"dependencies": {
78+
"@form8ion/core": "^4.2.0",
7979
"fast-xml-parser": "^4.3.4"
8080
}
8181
}

src/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export {default as scaffold} from './scaffolder.js';
2-
export {lift} from './pom/index.js';
2+
export {lift, test} from './pom/index.js';

src/pom/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export {default as scaffold} from './scaffolder.js';
22
export {default as lift} from './lifter.js';
3+
export {default as test} from './predicate.js';

src/pom/predicate.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import {fileExists} from '@form8ion/core';
2+
3+
export default function ({projectRoot}) {
4+
return fileExists(`${projectRoot}/pom.xml`);
5+
}

src/pom/predicate.test.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import {fileExists} from '@form8ion/core';
2+
3+
import {afterEach, describe, it, vi, expect} from 'vitest';
4+
import any from '@travi/any';
5+
import {when} from 'jest-when';
6+
7+
import pomExists from './predicate.js';
8+
9+
vi.mock('@form8ion/core');
10+
11+
describe('maven predicate', () => {
12+
const projectRoot = any.string();
13+
14+
afterEach(() => {
15+
vi.clearAllMocks();
16+
});
17+
18+
it('should return `true` when a root pom exists', async () => {
19+
when(fileExists).calledWith(`${projectRoot}/pom.xml`).mockReturnValue(true);
20+
21+
expect(await pomExists({projectRoot})).toBe(true);
22+
});
23+
24+
it('should return `false` when a root pom does not exist', async () => {
25+
when(fileExists).calledWith(`${projectRoot}/pom.xml`).mockReturnValue(false);
26+
27+
expect(await pomExists({projectRoot})).toBe(false);
28+
});
29+
});

test/integration/features/step_definitions/common-steps.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import stubbedFs from 'mock-fs';
77
const __dirname = dirname(fileURLToPath(import.meta.url)); // eslint-disable-line no-underscore-dangle
88
const stubbedNodeModules = stubbedFs.load(resolve(__dirname, '..', '..', '..', '..', 'node_modules'));
99

10-
let scaffold, lift;
10+
let scaffold, lift, test;
1111

1212
Before(async function () {
1313
// eslint-disable-next-line import/no-extraneous-dependencies,import/no-unresolved
14-
({scaffold, lift} = await import('@form8ion/java'));
14+
({scaffold, lift, test} = await import('@form8ion/java'));
1515

1616
stubbedFs({
1717
node_modules: stubbedNodeModules
@@ -29,5 +29,7 @@ When('the project is scaffolded', async function () {
2929
});
3030

3131
When('the project is lifted', async function () {
32-
await lift({projectRoot: this.projectRoot, vcs: this.vcsDetails});
32+
if (await test({projectRoot: this.projectRoot})) {
33+
await lift({projectRoot: this.projectRoot, vcs: this.vcsDetails});
34+
}
3335
});

0 commit comments

Comments
 (0)