Skip to content

Commit

Permalink
perf(scaffold): scaffold readme and editorconfig earlier
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed Jul 9, 2024
1 parent cdaaa82 commit 5a705e9
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 22 deletions.
11 changes: 5 additions & 6 deletions src/scaffolder.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@ export async function scaffold(options) {
} = await promptForBaseDetails(projectRoot, decisions);
const copyright = {year: copyrightYear, holder: copyHolder};

const vcs = await scaffoldGit(gitRepo, projectRoot, projectName, vcsHosts, visibility, decisions);
const [vcs] = await Promise.all([
scaffoldGit(gitRepo, projectRoot, projectName, vcsHosts, visibility, decisions),
scaffoldReadme({projectName, projectRoot, description}),
scaffoldEditorConfig({projectRoot})
]);

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

Expand Down Expand Up @@ -70,11 +74,6 @@ export async function scaffold(options) {
nextSteps: contributedTasks
});

await Promise.all([
scaffoldReadme({projectName, projectRoot, description}),
scaffoldEditorConfig({projectRoot})
]);

await lift({projectRoot, results: deepmerge.all(contributors)});

const gitResults = gitRepo && await liftGit({projectRoot, origin: vcsHostResults});
Expand Down
32 changes: 16 additions & 16 deletions src/scaffolder.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
import any from '@travi/any';
import {when} from 'jest-when';

import * as gitScaffolder from './vcs/git/git.js';
import {scaffold as liftGit, initialize as scaffoldGit} from './vcs/git/git.js';
import * as vcsHostScaffolder from './vcs/host/scaffolder.js';
import * as licenseScaffolder from './license/scaffolder.js';
import * as languageScaffolder from './language/scaffolder.js';
Expand Down Expand Up @@ -109,10 +109,10 @@ describe('project scaffolder', () => {
when(languagePrompt.default)
.calledWith(languageScaffolders, decisions)
.mockResolvedValue({[questionNames.PROJECT_LANGUAGE]: projectLanguage});
when(gitScaffolder.initialize)
when(scaffoldGit)
.calledWith(gitRepoShouldBeInitialized, projectPath, projectName, vcsHosts, visibility, decisions)
.mockResolvedValue(vcs);
gitScaffolder.scaffold.mockResolvedValue({nextSteps: gitNextSteps});
liftGit.mockResolvedValue({nextSteps: gitNextSteps});
when(licenseScaffolder.default)
.calledWith({projectRoot: projectPath, license, copyright, vcs})
.mockResolvedValue(licenseResults);
Expand All @@ -138,7 +138,7 @@ describe('project scaffolder', () => {

await scaffold(options);

expect(gitScaffolder.scaffold).toHaveBeenCalledWith({
expect(liftGit).toHaveBeenCalledWith({
projectRoot: projectPath,
origin: vcsOriginDetails
});
Expand Down Expand Up @@ -171,7 +171,7 @@ describe('project scaffolder', () => {

await scaffold();

expect(gitScaffolder.initialize)
expect(scaffoldGit)
.toHaveBeenCalledWith(gitRepoShouldBeInitialized, projectPath, projectName, {}, undefined, undefined);
});

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

await scaffold(emptyOptions);
});
Expand Down Expand Up @@ -218,7 +218,7 @@ describe('project scaffolder', () => {

await scaffold(options);

expect(gitScaffolder.scaffold).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
expect(liftGit).toHaveBeenCalledWith({projectRoot: projectPath, origin: vcsOriginDetails});
expect(scaffoldReadme).toHaveBeenCalledWith({projectName, projectRoot: projectPath, description});
});

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

await scaffold(options);

expect(gitScaffolder.scaffold).not.toHaveBeenCalled();
expect(liftGit).not.toHaveBeenCalled();
expect(vcsHostScaffolder.default).not.toHaveBeenCalled();
expect(dependencyUpdaterScaffolder.default).not.toHaveBeenCalled();
});
Expand Down Expand Up @@ -260,8 +260,8 @@ describe('project scaffolder', () => {
when(optionsValidator.validate)
.calledWith(options)
.mockReturnValue({languages: languageScaffolders, vcsHosts, decisions});
gitScaffolder.initialize.mockResolvedValue(vcs);
gitScaffolder.scaffold.mockResolvedValue({nextSteps: gitNextSteps});
scaffoldGit.mockResolvedValue(vcs);
liftGit.mockResolvedValue({nextSteps: gitNextSteps});
prompts.promptForBaseDetails.mockResolvedValue({
[coreQuestionNames.PROJECT_NAME]: projectName,
[coreQuestionNames.VISIBILITY]: visibility,
Expand Down Expand Up @@ -299,7 +299,7 @@ describe('project scaffolder', () => {

await scaffold(options);

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

await scaffold(options);

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

await scaffold(options);

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

await scaffold(options);
Expand Down

0 comments on commit 5a705e9

Please sign in to comment.