1 | const path = require('path');
|
2 | const { logInfo } = require('./log');
|
3 | const { resolveFile, getPackageJson } = require('./utils');
|
4 |
|
5 | async function getInitFor(templateFile) {
|
6 | const initPath = await resolveFile(path.join('templates', `${templateFile}.init.js`));
|
7 | if (initPath) { return require(initPath); }
|
8 | }
|
9 |
|
10 | async function initTemplate(templateFile) {
|
11 | const init = await getInitFor(templateFile);
|
12 | if (!init) { throw new Error(`Unable to generate file ${templateFile}.`); }
|
13 | await init();
|
14 | }
|
15 |
|
16 | module.exports = async () => {
|
17 | const { name, version } = getPackageJson({ throwErrorIfNotFound: true });
|
18 | logInfo(`Initialising package: ${name} v${version}`);
|
19 | await initTemplate('.eslintrc');
|
20 | await initTemplate('wallaby');
|
21 | await initTemplate('gitignore');
|
22 | await initTemplate('tsconfig');
|
23 | logInfo('Finished initialising this package.');
|
24 | };
|