Skip to content

Commit 9b4f1ef

Browse files
authored
Merge pull request #1064 from form8ion/alpha
2 parents ccbb834 + c62eeb4 commit 9b4f1ef

File tree

9 files changed

+28
-193
lines changed

9 files changed

+28
-193
lines changed

.github/workflows/node-ci.yml

-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ jobs:
3030
strategy:
3131
matrix:
3232
node:
33-
- 14.15.0
34-
- 14
3533
- 16.0.0
3634
- 16
3735
steps:

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ a wrapper.
7373
#### Import
7474

7575
```javascript
76-
import {lift, scaffold, questionNames} from '@form8ion/project';
76+
import {lift, questionNames, scaffold} from '@form8ion/project';
7777
```
7878

7979
#### Execute

example.js

+3-9
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,13 @@
33
import {promises as fs} from 'fs';
44
import {resolve} from 'path';
55
import stubbedFs from 'mock-fs';
6-
import {lift, scaffold, questionNames} from './lib/index.js';
6+
import {lift, questionNames, scaffold} from './lib/index.js';
77

88
// #### Execute
99

10-
// remark-usage-ignore-next 8
10+
// remark-usage-ignore-next 2
1111
(async () => {
12-
const projectTemplatePath = [__dirname, 'templates'];
13-
stubbedFs({
14-
templates: {
15-
'README.mustache': await fs.readFile(resolve(...projectTemplatePath, 'README.mustache')),
16-
'editorconfig.txt': await fs.readFile(resolve(...projectTemplatePath, 'editorconfig.txt'))
17-
}
18-
});
12+
stubbedFs({templates: {'editorconfig.txt': await fs.readFile(resolve(__dirname, 'templates', 'editorconfig.txt'))}});
1913

2014
await scaffold({
2115
decisions: {

package-lock.json

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

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"license": "MIT",
55
"version": "0.0.0-semantically-released",
66
"engines": {
7-
"node": "^14.15 || ^16"
7+
"node": "^16"
88
},
99
"author": "Matt Travi <[email protected]> (https://matt.travi.org/)",
1010
"repository": "form8ion/project",
@@ -53,7 +53,7 @@
5353
}
5454
},
5555
"dependencies": {
56-
"@form8ion/core": "^1.6.0-alpha.2",
56+
"@form8ion/core": "^2.0.0",
5757
"@form8ion/execa-wrapper": "^1.0.0",
5858
"@form8ion/nodegit-wrapper": "^1.1.0-alpha.1",
5959
"@form8ion/overridable-prompts": "^1.1.0",

src/readme-test.js

+7-112
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
import {promises as fs} from 'fs';
21
import any from '@travi/any';
32
import * as readme from '@form8ion/readme';
43
import sinon from 'sinon';
54
import {assert} from 'chai';
65
import scaffoldReadme from './readme';
76

8-
const badgeFactory = () => ({img: any.url(), link: any.url(), text: any.sentence()});
9-
const consumerBadges = any.objectWithKeys(any.listOf(any.word), {factory: badgeFactory});
10-
const statusBadges = any.objectWithKeys(any.listOf(any.word), {factory: badgeFactory});
11-
const contributionBadges = any.objectWithKeys(any.listOf(any.word), {factory: badgeFactory});
12-
137
suite('scaffold readme', () => {
148
let sandbox;
159
const projectName = any.word();
@@ -19,118 +13,19 @@ suite('scaffold readme', () => {
1913
setup(() => {
2014
sandbox = sinon.createSandbox();
2115

16+
sandbox.stub(readme, 'scaffold');
2217
sandbox.stub(readme, 'lift');
23-
sandbox.stub(fs, 'writeFile');
2418
});
2519

2620
teardown(() => sandbox.restore());
2721

28-
test('that the README has a top-level heading of the project name and includes the description', async () => {
29-
const badges = {consumer: {}, status: {}, contribution: {}};
30-
31-
await scaffoldReadme({projectName, projectRoot, description, badges});
32-
33-
assert.calledWith(
34-
fs.writeFile,
35-
`${projectRoot}/README.md`,
36-
sinon.match(`# ${projectName}
37-
38-
${description}`)
39-
);
40-
assert.calledWith(readme.lift, {projectRoot, results: {badges}});
41-
});
42-
43-
suite('documentation', () => {
44-
const markdownWithBackticksAndForwardSlashes = `\`\`\`sh${any.sentence()}\`\`\`https://any.url`;
45-
46-
test('that usage docs are shown after the contributing badges', async () => {
47-
const usageDocs = markdownWithBackticksAndForwardSlashes;
48-
const badges = {consumer: consumerBadges, status: statusBadges, contribution: contributionBadges};
49-
50-
await scaffoldReadme({
51-
projectRoot,
52-
badges,
53-
documentation: {usage: usageDocs}
54-
});
55-
56-
assert.calledWith(
57-
fs.writeFile,
58-
`${projectRoot}/README.md`,
59-
sinon.match(`
60-
<!--status-badges start -->
61-
<!--status-badges end -->
62-
63-
## Usage
64-
65-
<!--consumer-badges start -->
66-
<!--consumer-badges end -->
67-
68-
${usageDocs}
69-
70-
<!--contribution-badges start -->
71-
<!--contribution-badges end -->
72-
`)
73-
);
74-
});
75-
76-
test('that consumer badges are lifted to top level when toc is present and no usage content', async () => {
77-
const toc = `${any.word()} \`${any.word()}\` ${any.word()}`;
78-
const badges = {consumer: consumerBadges, status: statusBadges, contribution: contributionBadges};
79-
80-
await scaffoldReadme({
81-
projectRoot,
82-
badges,
83-
documentation: {toc}
84-
});
85-
86-
assert.calledWith(
87-
fs.writeFile,
88-
`${projectRoot}/README.md`,
89-
sinon.match(`
90-
<!--status-badges start -->
91-
<!--status-badges end -->
92-
93-
<!--consumer-badges start -->
94-
<!--consumer-badges end -->
95-
96-
## Table of Contents
97-
98-
${toc}
99-
100-
<!--contribution-badges start -->
101-
<!--contribution-badges end -->
102-
`)
103-
);
104-
});
105-
106-
test('that contribution docs are shown after the contributing badges', async () => {
107-
const contributingDocs = markdownWithBackticksAndForwardSlashes;
108-
const badges = {consumer: consumerBadges, status: statusBadges, contribution: contributionBadges};
109-
110-
await scaffoldReadme({
111-
projectRoot,
112-
badges,
113-
documentation: {contributing: contributingDocs}
114-
});
115-
116-
assert.calledWith(
117-
fs.writeFile,
118-
`${projectRoot}/README.md`,
119-
sinon.match(`
120-
<!--status-badges start -->
121-
<!--status-badges end -->
122-
123-
<!--consumer-badges start -->
124-
<!--consumer-badges end -->
125-
126-
## Contributing
22+
test('that the README created and lifted', async () => {
23+
const badges = any.simpleObject();
24+
const documentation = any.simpleObject();
12725

128-
<!--contribution-badges start -->
129-
<!--contribution-badges end -->
26+
await scaffoldReadme({projectName, projectRoot, description, badges, documentation});
13027

131-
${contributingDocs}
132-
`)
133-
);
134-
});
28+
assert.calledWith(readme.scaffold, {projectRoot, projectName, description});
29+
assert.calledWith(readme.lift, {projectRoot, results: {badges, documentation}});
13530
});
13631
});

src/readme.js

+3-18
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,7 @@
1-
import {promises as fs} from 'fs';
2-
import path from 'path';
3-
4-
import filedirname from 'filedirname';
5-
import mustache from 'mustache';
6-
import {info} from '@travi/cli-messages';
7-
import {lift as liftReadme} from '@form8ion/readme';
8-
9-
const [, __dirname] = filedirname();
1+
import {lift as liftReadme, scaffold as scaffoldReadme} from '@form8ion/readme';
102

113
export default async function ({projectName, projectRoot, description, badges, documentation}) {
12-
info('Generating README');
13-
14-
const initialRender = mustache.render(
15-
await fs.readFile(path.resolve(__dirname, '..', 'templates/README.mustache'), 'utf8'),
16-
{projectName, description, documentation}
17-
);
18-
19-
await fs.writeFile(`${projectRoot}/README.md`, initialRender);
4+
await scaffoldReadme({projectRoot, projectName, description});
205

21-
return liftReadme({projectRoot, results: {badges}});
6+
return liftReadme({projectRoot, results: {badges, documentation}});
227
}

templates/README.mustache

-37
This file was deleted.

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

+1-4
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@ Before({timeout: 20 * 1000}, async function () {
2828

2929
stubbedFs({
3030
node_modules: stubbedNodeModules,
31-
templates: {
32-
'README.mustache': await fs.readFile(resolve(...projectTemplatePath, 'README.mustache')),
33-
'editorconfig.txt': await fs.readFile(resolve(...projectTemplatePath, 'editorconfig.txt'))
34-
}
31+
templates: {'editorconfig.txt': await fs.readFile(resolve(...projectTemplatePath, 'editorconfig.txt'))}
3532
});
3633
});
3734

0 commit comments

Comments
 (0)