Skip to content

Commit

Permalink
refactor(editorconfig): extracted scaffolding for editorconfig to a n…
Browse files Browse the repository at this point in the history
…ew module

for #1275
  • Loading branch information
travi committed Jul 1, 2023
1 parent c8fada7 commit cbafc1e
Show file tree
Hide file tree
Showing 9 changed files with 172 additions and 8 deletions.
110 changes: 110 additions & 0 deletions package-lock.json

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

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
"@form8ion/eslint-config-cucumber": "1.4.1",
"@form8ion/eslint-config-mocha": "2.0.3",
"@form8ion/remark-lint-preset": "5.0.9",
"@rollup/plugin-node-resolve": "15.1.0",
"@travi/any": "2.1.8",
"c8": "8.0.0",
"chai": "4.3.7",
Expand Down
6 changes: 5 additions & 1 deletion rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
/* eslint import/no-extraneous-dependencies: ['error', {'devDependencies': true}] */
import autoExternal from 'rollup-plugin-auto-external';
import nodeResolve from '@rollup/plugin-node-resolve';

export default {
input: 'src/index.js',
plugins: [autoExternal()],
plugins: [
autoExternal(),
nodeResolve({mainFields: ['module']})
],
external: ['spdx-license-list/full.js'],
output: [
{file: 'lib/index.js', format: 'cjs', sourcemap: true},
Expand Down
1 change: 1 addition & 0 deletions src/editorconfig/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export {default as scaffold} from './scaffolder';
7 changes: 7 additions & 0 deletions src/editorconfig/scaffolder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import {promises as fs} from 'node:fs';

import determinePathToTemplateFile from '../template-path';

export default function ({projectRoot}) {
return fs.copyFile(determinePathToTemplateFile('editorconfig.txt'), `${projectRoot}/.editorconfig`);
}
26 changes: 26 additions & 0 deletions src/editorconfig/scaffolder.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import {promises as fs} from 'node:fs';
import {resolve} from 'node:path';

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

import scaffoldEditorconfig from './scaffolder';

vi.mock('fs');

describe('editorconfig scaffolder', () => {
afterEach(() => {
vi.clearAllMocks();
});

it('should create the config file', async () => {
const projectRoot = any.string();

await scaffoldEditorconfig({projectRoot});

expect(fs.copyFile).toHaveBeenCalledWith(
resolve(__dirname, '..', '..', 'templates', 'editorconfig.txt'),
`${projectRoot}/.editorconfig`
);
});
});
9 changes: 2 additions & 7 deletions src/scaffolder.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
import {resolve} from 'path';
import {promises as fs} from 'fs';

import filedirname from 'filedirname';
import deepmerge from 'deepmerge';
import {questionNames as coreQuestionNames} from '@form8ion/core';
import {reportResults} from '@form8ion/results-reporter';
Expand All @@ -17,8 +13,7 @@ import scaffoldDependencyUpdater from './dependency-updater/scaffolder';
import {promptForBaseDetails, promptForLanguageDetails} from './prompts/questions';
import {validate} from './options-validator';
import {questionNames} from './prompts/question-names';

const [, __dirname] = filedirname();
import {scaffold as scaffoldEditorConfig} from './editorconfig';

export async function scaffold(options) {
const projectRoot = process.cwd();
Expand Down Expand Up @@ -97,7 +92,7 @@ export async function scaffold(options) {
...contributors.map(contributor => contributor.badges).filter(Boolean)
])
}),
fs.copyFile(resolve(__dirname, '..', 'templates', 'editorconfig.txt'), `${projectRoot}/.editorconfig`)
scaffoldEditorConfig({projectRoot})
]);

const gitResults = gitRepo && await scaffoldGit({
Expand Down
12 changes: 12 additions & 0 deletions src/template-path-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {resolve} from 'path';
import any from '@travi/any';
import {assert} from 'chai';
import determinePathToTemplateFile from './template-path';

suite('path to templates', () => {
test('that the proper path to a template file is provided', () => {
const fileName = any.string();

assert.equal(determinePathToTemplateFile(fileName), resolve(__dirname, '..', 'templates', fileName));
});
});
8 changes: 8 additions & 0 deletions src/template-path.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import {resolve} from 'path';
import filedirname from 'filedirname';

export default function (fileName) {
const [, __dirname] = filedirname();

return resolve(__dirname, '..', 'templates', fileName);
}

0 comments on commit cbafc1e

Please sign in to comment.