Skip to content

Commit 5a705e9

Browse files
committed
perf(scaffold): scaffold readme and editorconfig earlier
1 parent cdaaa82 commit 5a705e9

File tree

2 files changed

+21
-22
lines changed

2 files changed

+21
-22
lines changed

src/scaffolder.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ export async function scaffold(options) {
3232
} = await promptForBaseDetails(projectRoot, decisions);
3333
const copyright = {year: copyrightYear, holder: copyHolder};
3434

35-
const vcs = await scaffoldGit(gitRepo, projectRoot, projectName, vcsHosts, visibility, decisions);
35+
const [vcs] = await Promise.all([
36+
scaffoldGit(gitRepo, projectRoot, projectName, vcsHosts, visibility, decisions),
37+
scaffoldReadme({projectName, projectRoot, description}),
38+
scaffoldEditorConfig({projectRoot})
39+
]);
3640

3741
const {[questionNames.PROJECT_LANGUAGE]: projectLanguage} = await promptForLanguageDetails(languages, decisions);
3842

@@ -70,11 +74,6 @@ export async function scaffold(options) {
7074
nextSteps: contributedTasks
7175
});
7276

73-
await Promise.all([
74-
scaffoldReadme({projectName, projectRoot, description}),
75-
scaffoldEditorConfig({projectRoot})
76-
]);
77-
7877
await lift({projectRoot, results: deepmerge.all(contributors)});
7978

8079
const gitResults = gitRepo && await liftGit({projectRoot, origin: vcsHostResults});

src/scaffolder.test.js

+16-16
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
88
import any from '@travi/any';
99
import {when} from 'jest-when';
1010

11-
import * as gitScaffolder from './vcs/git/git.js';
11+
import {scaffold as liftGit, initialize as scaffoldGit} from './vcs/git/git.js';
1212
import * as vcsHostScaffolder from './vcs/host/scaffolder.js';
1313
import * as licenseScaffolder from './license/scaffolder.js';
1414
import * as languageScaffolder from './language/scaffolder.js';
@@ -109,10 +109,10 @@ describe('project scaffolder', () => {
109109
when(languagePrompt.default)
110110
.calledWith(languageScaffolders, decisions)
111111
.mockResolvedValue({[questionNames.PROJECT_LANGUAGE]: projectLanguage});
112-
when(gitScaffolder.initialize)
112+
when(scaffoldGit)
113113
.calledWith(gitRepoShouldBeInitialized, projectPath, projectName, vcsHosts, visibility, decisions)
114114
.mockResolvedValue(vcs);
115-
gitScaffolder.scaffold.mockResolvedValue({nextSteps: gitNextSteps});
115+
liftGit.mockResolvedValue({nextSteps: gitNextSteps});
116116
when(licenseScaffolder.default)
117117
.calledWith({projectRoot: projectPath, license, copyright, vcs})
118118
.mockResolvedValue(licenseResults);
@@ -138,7 +138,7 @@ describe('project scaffolder', () => {
138138

139139
await scaffold(options);
140140

141-
expect(gitScaffolder.scaffold).toHaveBeenCalledWith({
141+
expect(liftGit).toHaveBeenCalledWith({
142142
projectRoot: projectPath,
143143
origin: vcsOriginDetails
144144
});
@@ -171,7 +171,7 @@ describe('project scaffolder', () => {
171171

172172
await scaffold();
173173

174-
expect(gitScaffolder.initialize)
174+
expect(scaffoldGit)
175175
.toHaveBeenCalledWith(gitRepoShouldBeInitialized, projectPath, projectName, {}, undefined, undefined);
176176
});
177177

@@ -180,7 +180,7 @@ describe('project scaffolder', () => {
180180
when(optionsValidator.validate).calledWith(emptyOptions).mockReturnValue({});
181181
when(prompts.promptForBaseDetails).calledWith(projectPath, undefined, undefined).mockResolvedValue({});
182182
languagePrompt.default.mockResolvedValue({});
183-
gitScaffolder.initialize.mockResolvedValue({});
183+
scaffoldGit.mockResolvedValue({});
184184

185185
await scaffold(emptyOptions);
186186
});
@@ -218,7 +218,7 @@ describe('project scaffolder', () => {
218218

219219
await scaffold(options);
220220

221-
expect(gitScaffolder.scaffold).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
221+
expect(liftGit).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
222222
expect(scaffoldReadme).toHaveBeenCalledWith({projectName, projectRoot: projectPath, description});
223223
});
224224

@@ -227,11 +227,11 @@ describe('project scaffolder', () => {
227227
prompts.promptForBaseDetails.mockResolvedValue({[questionNames.GIT_REPO]: false});
228228
languagePrompt.default.mockResolvedValue({});
229229
scaffoldReadme.mockResolvedValue();
230-
gitScaffolder.initialize.mockResolvedValue(undefined);
230+
scaffoldGit.mockResolvedValue(undefined);
231231

232232
await scaffold(options);
233233

234-
expect(gitScaffolder.scaffold).not.toHaveBeenCalled();
234+
expect(liftGit).not.toHaveBeenCalled();
235235
expect(vcsHostScaffolder.default).not.toHaveBeenCalled();
236236
expect(dependencyUpdaterScaffolder.default).not.toHaveBeenCalled();
237237
});
@@ -260,8 +260,8 @@ describe('project scaffolder', () => {
260260
when(optionsValidator.validate)
261261
.calledWith(options)
262262
.mockReturnValue({languages: languageScaffolders, vcsHosts, decisions});
263-
gitScaffolder.initialize.mockResolvedValue(vcs);
264-
gitScaffolder.scaffold.mockResolvedValue({nextSteps: gitNextSteps});
263+
scaffoldGit.mockResolvedValue(vcs);
264+
liftGit.mockResolvedValue({nextSteps: gitNextSteps});
265265
prompts.promptForBaseDetails.mockResolvedValue({
266266
[coreQuestionNames.PROJECT_NAME]: projectName,
267267
[coreQuestionNames.VISIBILITY]: visibility,
@@ -299,7 +299,7 @@ describe('project scaffolder', () => {
299299

300300
await scaffold(options);
301301

302-
expect(gitScaffolder.scaffold).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
302+
expect(liftGit).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
303303
expect(scaffoldReadme).toHaveBeenCalledWith({projectName, projectRoot: projectPath, description});
304304
expect(execaPipe).toHaveBeenCalledWith(process.stdout);
305305
expect(resultsReporter.reportResults).toHaveBeenCalledWith({nextSteps: [...gitNextSteps, ...languageNextSteps]});
@@ -309,7 +309,7 @@ describe('project scaffolder', () => {
309309
when(optionsValidator.validate)
310310
.calledWith(options)
311311
.mockReturnValue({languages: languageScaffolders, vcsHosts, decisions});
312-
gitScaffolder.initialize.mockResolvedValue(vcs);
312+
scaffoldGit.mockResolvedValue(vcs);
313313
prompts.promptForBaseDetails.mockResolvedValue({
314314
[coreQuestionNames.PROJECT_NAME]: projectName,
315315
[coreQuestionNames.VISIBILITY]: visibility,
@@ -328,7 +328,7 @@ describe('project scaffolder', () => {
328328

329329
await scaffold(options);
330330

331-
expect(gitScaffolder.scaffold).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
331+
expect(liftGit).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
332332
expect(scaffoldReadme).toHaveBeenCalledWith({projectName, projectRoot: projectPath, description});
333333
expect(execa).not.toHaveBeenCalled();
334334
});
@@ -337,7 +337,7 @@ describe('project scaffolder', () => {
337337
when(optionsValidator.validate).calledWith(options).mockReturnValue({});
338338
prompts.promptForBaseDetails.mockResolvedValue({});
339339
languagePrompt.default.mockResolvedValue({[questionNames.PROJECT_LANGUAGE]: projectLanguage});
340-
gitScaffolder.initialize.mockResolvedValue({});
340+
scaffoldGit.mockResolvedValue({});
341341

342342
await scaffold(options);
343343

@@ -359,7 +359,7 @@ describe('project scaffolder', () => {
359359
when(optionsValidator.validate).calledWith(options).mockReturnValue({});
360360
prompts.promptForBaseDetails.mockResolvedValue({});
361361
languagePrompt.default.mockResolvedValue({});
362-
gitScaffolder.initialize.mockResolvedValue({});
362+
scaffoldGit.mockResolvedValue({});
363363
languageScaffolder.default.mockResolvedValue({badges: {}, projectDetails: {}});
364364

365365
await scaffold(options);

0 commit comments

Comments
 (0)