Skip to content

Commit

Permalink
feat: support optional text format banner file
Browse files Browse the repository at this point in the history
  • Loading branch information
3cp committed Dec 9, 2019
1 parent f1475bc commit a07eaaa
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,14 @@ async function makes(supplier, {
questions,
prependTransforms,
appendTransforms,
banner,
before,
after} = await _skeletonConfig(skeletonDirectory);

if (banner) {
console.log('\n' + banner + '\n');
}

if (!here) {
// ensure target folder is available
const oldValidate = nameQuestion.validate;
Expand Down
7 changes: 7 additions & 0 deletions lib/skeleton-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,12 @@ module.exports = async function(dir, {
}
}

const bannerFile = path.join(dir, 'banner');
let banner;
if (fileExists(bannerFile)) {
banner = fs.readFileSync(bannerFile, 'utf8');
}

const beforeFile = path.join(dir, 'before.js');
let before;
if (fileExists(beforeFile)) {
Expand All @@ -85,6 +91,7 @@ module.exports = async function(dir, {
questions: questions || [],
prependTransforms: prepend || [],
appendTransforms: append || [],
banner,
before,
after
};
Expand Down
34 changes: 34 additions & 0 deletions test/skeleton-config.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ test.serial('skeletonConfig runs npm install when required', async t => {
questions: [],
prependTransforms: [],
appendTransforms: [],
banner: undefined,
before: undefined,
after: undefined
});
Expand Down Expand Up @@ -67,6 +68,7 @@ test.serial('skeletonConfig does not run npm install when node_modules exists',
questions: [],
prependTransforms: [],
appendTransforms: [],
banner: undefined,
before: undefined,
after: undefined
});
Expand Down Expand Up @@ -99,6 +101,7 @@ test.serial('skeletonConfig does not run npm install for devDependencies', async
questions: [],
prependTransforms: [],
appendTransforms: [],
banner: undefined,
before: undefined,
after: undefined
});
Expand Down Expand Up @@ -131,6 +134,7 @@ test.serial('skeletonConfig skip npm install when not required', async t => {
questions: [],
prependTransforms: [],
appendTransforms: [],
banner: undefined,
before: undefined,
after: undefined
});
Expand Down Expand Up @@ -163,6 +167,7 @@ test.serial('skeletonConfig skip npm install when no packge.json', async t => {
questions: [],
prependTransforms: [],
appendTransforms: [],
banner: undefined,
before: undefined,
after: undefined
});
Expand Down Expand Up @@ -209,6 +214,7 @@ test.serial('skeletonConfig reads questions, and transforms', async t => {
],
prependTransforms: ['fake'],
appendTransforms: ['fake2', 'fake3'],
banner: undefined,
before: undefined,
after: undefined
});
Expand Down Expand Up @@ -249,6 +255,7 @@ test.serial('skeletonConfig does not inject question for project name if user pr
],
prependTransforms: [],
appendTransforms: [],
banner: undefined,
before: undefined,
after: undefined
});
Expand Down Expand Up @@ -286,8 +293,35 @@ test.serial('skeletonConfig reads before and after tasks', async t => {
questions: [],
prependTransforms: [],
appendTransforms: [],
banner: undefined,
before: 'before',
after: 'after'
});
});

test.serial('skeletonConfig reads banner', async t => {
mockfs({
'skeleton/banner': 'lorem'
});

const result = await config('skeleton');
const {validate} = result.nameQuestion;
delete result.nameQuestion.validate;

t.is(validate('ab-1_2'), null);
t.is(validate(' a'), 'Please only use letters, numbers, dash(-) and underscore(_).');
t.is(validate('@a'), 'Please only use letters, numbers, dash(-) and underscore(_).');
t.deepEqual(result, {
nameQuestion: {
name: 'name',
message: 'Please name this new project:',
default: 'my-app'
},
questions: [],
prependTransforms: [],
appendTransforms: [],
banner: 'lorem',
before: undefined,
after: undefined
});
});

0 comments on commit a07eaaa

Please sign in to comment.