From ed5c335d82959cadcfd082636f822ca36701f1fe Mon Sep 17 00:00:00 2001 From: Matt Travi Date: Fri, 10 Jun 2022 09:11:29 -0500 Subject: [PATCH] feat(remark-config): leveraged the config-file writer to get better formatting --- .../verification/linting/remark-test.js | 113 ++++++++++-------- src/scaffolder/verification/linting/remark.js | 15 ++- 2 files changed, 73 insertions(+), 55 deletions(-) diff --git a/src/scaffolder/verification/linting/remark-test.js b/src/scaffolder/verification/linting/remark-test.js index ac1b2114..fa16beef 100644 --- a/src/scaffolder/verification/linting/remark-test.js +++ b/src/scaffolder/verification/linting/remark-test.js @@ -1,8 +1,11 @@ -import {promises as fsPromises} from 'fs'; +import {fileTypes} from '@form8ion/core'; import {dialects, projectTypes} from '@form8ion/javascript-core'; +import * as configFile from '@form8ion/config-file'; + import {assert} from 'chai'; import any from '@travi/any'; import sinon from 'sinon'; + import scaffoldRemark from './remark'; suite('remark config scaffolder', () => { @@ -11,7 +14,7 @@ suite('remark config scaffolder', () => { setup(() => { sandbox = sinon.createSandbox(); - sandbox.stub(fsPromises, 'writeFile'); + sandbox.stub(configFile, 'write'); }); teardown(() => sandbox.restore()); @@ -28,21 +31,25 @@ suite('remark config scaffolder', () => { } ); assert.calledWith( - fsPromises.writeFile, - `${projectRoot}/.remarkrc.json`, - JSON.stringify({ - settings: { - listItemIndent: 1, - emphasis: '_', - strong: '_', - bullet: '*', - incrementListMarker: false - }, - plugins: [ - config, - ['remark-toc', {tight: true}] - ] - }) + configFile.write, + { + format: fileTypes.JSON, + path: projectRoot, + name: 'remark', + config: { + settings: { + listItemIndent: 1, + emphasis: '_', + strong: '_', + bullet: '*', + incrementListMarker: false + }, + plugins: [ + config, + ['remark-toc', {tight: true}] + ] + } + } ); }); @@ -64,22 +71,26 @@ suite('remark config scaffolder', () => { } ); assert.calledWith( - fsPromises.writeFile, - `${projectRoot}/.remarkrc.json`, - JSON.stringify({ - settings: { - listItemIndent: 1, - emphasis: '_', - strong: '_', - bullet: '*', - incrementListMarker: false - }, - plugins: [ - config, - ['remark-toc', {tight: true}], - ['remark-usage', {heading: 'example'}] - ] - }) + configFile.write, + { + format: fileTypes.JSON, + path: projectRoot, + name: 'remark', + config: { + settings: { + listItemIndent: 1, + emphasis: '_', + strong: '_', + bullet: '*', + incrementListMarker: false + }, + plugins: [ + config, + ['remark-toc', {tight: true}], + ['remark-usage', {heading: 'example'}] + ] + } + } ); }); @@ -128,22 +139,26 @@ suite('remark config scaffolder', () => { await scaffoldRemark({config, projectRoot, vcs: undefined}); assert.calledWith( - fsPromises.writeFile, - `${projectRoot}/.remarkrc.json`, - JSON.stringify({ - settings: { - listItemIndent: 1, - emphasis: '_', - strong: '_', - bullet: '*', - incrementListMarker: false - }, - plugins: [ - config, - ['remark-toc', {tight: true}], - ['validate-links', {repository: false}] - ] - }) + configFile.write, + { + format: fileTypes.JSON, + path: projectRoot, + name: 'remark', + config: { + settings: { + listItemIndent: 1, + emphasis: '_', + strong: '_', + bullet: '*', + incrementListMarker: false + }, + plugins: [ + config, + ['remark-toc', {tight: true}], + ['validate-links', {repository: false}] + ] + } + } ); }); }); diff --git a/src/scaffolder/verification/linting/remark.js b/src/scaffolder/verification/linting/remark.js index 336448b1..b974c601 100644 --- a/src/scaffolder/verification/linting/remark.js +++ b/src/scaffolder/verification/linting/remark.js @@ -1,11 +1,14 @@ -import {promises as fsPromises} from 'fs'; import deepmerge from 'deepmerge'; +import {fileTypes} from '@form8ion/core'; import {dialects, projectTypes} from '@form8ion/javascript-core'; +import {write} from '@form8ion/config-file'; export default async function ({config, projectRoot, projectType, vcs, dialect}) { - await fsPromises.writeFile( - `${projectRoot}/.remarkrc.json`, - JSON.stringify({ + await write({ + format: fileTypes.JSON, + path: projectRoot, + name: 'remark', + config: { settings: { listItemIndent: 1, emphasis: '_', @@ -19,8 +22,8 @@ export default async function ({config, projectRoot, projectType, vcs, dialect}) ...projectTypes.PACKAGE === projectType ? [['remark-usage', {heading: 'example'}]] : [], ...!vcs ? [['validate-links', {repository: false}]] : [] ] - }) - ); + } + }); return deepmerge( {