@form8ion/javascript 15.8.3 → 16.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/example.js +2 -2
- package/lib/index.js +77 -63
- package/lib/index.js.map +1 -1
- package/package.json +18 -18
- package/src/code-style/lifter.js +2 -2
- package/src/dependencies/installer.js +5 -5
- package/src/dependencies/installer.test.js +8 -22
- package/src/dependencies/processor.js +10 -8
- package/src/dependencies/processor.test.js +31 -18
- package/src/dependencies/remover.js +2 -3
- package/src/dependencies/remover.test.js +4 -2
- package/src/lifter.js +8 -5
- package/src/lifter.test.js +12 -11
- package/src/node-version/scaffolder.js +4 -5
- package/src/node-version/scaffolder.test.js +5 -4
- package/src/node-version/tasks.js +4 -6
- package/src/node-version/tasks.test.js +5 -8
- package/src/options/schemas.js +2 -1
- package/src/options/schemas.test.js +12 -6
- package/src/options/validator.js +2 -1
- package/src/options/validator.test.js +2 -1
- package/src/package/lifter.js +3 -4
- package/src/package/lifter.test.js +8 -4
- package/src/package/scaffolder.js +2 -3
- package/src/package/scaffolder.test.js +3 -1
- package/src/project-type/application/scaffolder.js +2 -3
- package/src/project-type/application/scaffolder.test.js +3 -5
- package/src/project-type/monorepo/scaffolder.js +2 -3
- package/src/project-type/monorepo/scaffolder.test.js +3 -6
- package/src/project-type/package/scaffolder.js +2 -3
- package/src/project-type/package/scaffolder.test.js +6 -5
- package/src/project-type/publishable/access-level.js +1 -1
- package/src/project-type/publishable/access-level.test.js +6 -4
- package/src/project-type/scaffolder.js +4 -4
- package/src/project-type/scaffolder.test.js +15 -16
- package/src/prompts/conditionals.js +1 -1
- package/src/prompts/conditionals.test.js +27 -6
- package/src/prompts/questions.js +4 -4
- package/src/prompts/questions.test.js +21 -6
- package/src/prompts/validators.js +7 -2
- package/src/prompts/validators.test.js +9 -6
- package/src/scaffolder.js +7 -8
- package/src/scaffolder.test.js +6 -5
- package/src/tester.js +2 -4
- package/src/tester.test.js +5 -8
package/README.md
CHANGED
|
@@ -65,7 +65,7 @@ const projectRoot = process.cwd();
|
|
|
65
65
|
await scaffoldJavaScript({
|
|
66
66
|
projectRoot,
|
|
67
67
|
projectName: 'project-name',
|
|
68
|
-
visibility: '
|
|
68
|
+
visibility: 'OSS',
|
|
69
69
|
license: 'MIT',
|
|
70
70
|
configs: {
|
|
71
71
|
eslint: {scope: `@${accountName}`},
|
|
@@ -121,7 +121,7 @@ await scaffoldUnitTesting({
|
|
|
121
121
|
Mocha: {scaffold: options => options},
|
|
122
122
|
Jest: {scaffold: options => options}
|
|
123
123
|
},
|
|
124
|
-
visibility: '
|
|
124
|
+
visibility: 'OSS',
|
|
125
125
|
vcs: {host: 'GitHub', owner: 'foo', name: 'bar'},
|
|
126
126
|
decisions: {[questionNames.UNIT_TEST_FRAMEWORK]: 'Mocha'}
|
|
127
127
|
});
|
|
@@ -175,7 +175,7 @@ $ npm test
|
|
|
175
175
|
|
|
176
176
|
[renovate-link]: https://renovatebot.com
|
|
177
177
|
|
|
178
|
-
[renovate-badge]: https://img.shields.io/badge/renovate-enabled-brightgreen.svg?logo=
|
|
178
|
+
[renovate-badge]: https://img.shields.io/badge/renovate-enabled-brightgreen.svg?logo=renovate
|
|
179
179
|
|
|
180
180
|
[github-actions-ci-link]: https://github.com/form8ion/javascript/actions?query=workflow%3A%22Node.js+CI%22+branch%3Amaster
|
|
181
181
|
|
|
@@ -197,6 +197,6 @@ $ npm test
|
|
|
197
197
|
|
|
198
198
|
[coverage-link]: https://codecov.io/github/form8ion/javascript
|
|
199
199
|
|
|
200
|
-
[coverage-badge]: https://img.shields.io/codecov/c/github/form8ion/javascript?logo=codecov
|
|
200
|
+
[coverage-badge]: https://img.shields.io/codecov/c/github/form8ion/javascript/master?logo=codecov
|
|
201
201
|
|
|
202
202
|
[slsa-badge]: https://slsa.dev/images/gh-badge-level2.svg
|
package/example.js
CHANGED
|
@@ -34,7 +34,7 @@ const projectRoot = process.cwd();
|
|
|
34
34
|
await scaffoldJavaScript({
|
|
35
35
|
projectRoot,
|
|
36
36
|
projectName: 'project-name',
|
|
37
|
-
visibility: '
|
|
37
|
+
visibility: 'OSS',
|
|
38
38
|
license: 'MIT',
|
|
39
39
|
configs: {
|
|
40
40
|
eslint: {scope: `@${accountName}`},
|
|
@@ -90,7 +90,7 @@ await scaffoldUnitTesting({
|
|
|
90
90
|
Mocha: {scaffold: options => options},
|
|
91
91
|
Jest: {scaffold: options => options}
|
|
92
92
|
},
|
|
93
|
-
visibility: '
|
|
93
|
+
visibility: 'OSS',
|
|
94
94
|
vcs: {host: 'GitHub', owner: 'foo', name: 'bar'},
|
|
95
95
|
decisions: {[questionNames.UNIT_TEST_FRAMEWORK]: 'Mocha'}
|
|
96
96
|
});
|
package/lib/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { questionNames as questionNames$2, questions } from '@travi/language-scaffolder-prompts';
|
|
2
2
|
import deepmerge from 'deepmerge';
|
|
3
|
-
import { warn, info, error } from '@travi/cli-messages';
|
|
4
3
|
import { scaffoldChoice, dialects as dialects$1, projectTypes as projectTypes$1, packageManagers as packageManagers$1, writePackageJson, PROD_DEPENDENCY_TYPE, DEV_DEPENDENCY_TYPE, mergeIntoExistingPackageJson } from '@form8ion/javascript-core';
|
|
5
4
|
import * as commitConventionPlugin from '@form8ion/commit-convention';
|
|
6
5
|
import { scaffold as scaffold$5 } from '@form8ion/commit-convention';
|
|
7
6
|
import joi from 'joi';
|
|
8
|
-
import { fileExists, directoryExists, optionsSchemas, validateOptions, fileTypes, loadConfigFile, writeConfigFile, applyEnhancers } from '@form8ion/core';
|
|
7
|
+
import { fileExists, directoryExists, optionsSchemas, validateOptions, visibilityOptions, fileTypes, loadConfigFile, writeConfigFile, applyEnhancers } from '@form8ion/core';
|
|
9
8
|
import { prompt as prompt$1 } from '@form8ion/overridable-prompts';
|
|
10
9
|
import { execa } from 'execa';
|
|
11
10
|
import npmConf from 'npm-conf';
|
|
@@ -145,7 +144,7 @@ const nameBasedConfigSchema = joi.object({
|
|
|
145
144
|
|
|
146
145
|
const registriesSchema = joi.object().pattern(joi.string(), joi.string().uri()).default({});
|
|
147
146
|
|
|
148
|
-
const visibilitySchema = joi.string().valid(
|
|
147
|
+
const visibilitySchema = joi.string().valid(...Object.keys(visibilityOptions)).required();
|
|
149
148
|
|
|
150
149
|
const projectNameSchema = joi.string().regex(/^@\w*\//, {invert: true}).required();
|
|
151
150
|
|
|
@@ -182,7 +181,8 @@ function validate(options) {
|
|
|
182
181
|
packageTypes: pluginsSchema,
|
|
183
182
|
monorepoTypes: pluginsSchema,
|
|
184
183
|
hosts: pluginsSchema,
|
|
185
|
-
ciServices: pluginsSchema
|
|
184
|
+
ciServices: pluginsSchema,
|
|
185
|
+
registries: pluginsSchema
|
|
186
186
|
}
|
|
187
187
|
}).required();
|
|
188
188
|
|
|
@@ -211,7 +211,7 @@ function projectIsApplication$1(answers) {
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
function packageShouldBeScoped(visibility, answers) {
|
|
214
|
-
return '
|
|
214
|
+
return ['ISS', 'CS'].includes(visibility) || answers[questionNames$1.SHOULD_BE_SCOPED];
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
function willBePublishedToNpm(answers) {
|
|
@@ -235,8 +235,13 @@ function lintingPromptShouldBePresented({
|
|
|
235
235
|
|
|
236
236
|
function scope(visibility) {
|
|
237
237
|
return input => {
|
|
238
|
-
if (!input
|
|
239
|
-
|
|
238
|
+
if (!input) {
|
|
239
|
+
if ('CS' === visibility) {
|
|
240
|
+
return 'Closed source packages must be scoped';
|
|
241
|
+
}
|
|
242
|
+
if ('ISS' === visibility) {
|
|
243
|
+
return 'Inner source packages must be scoped';
|
|
244
|
+
}
|
|
240
245
|
}
|
|
241
246
|
|
|
242
247
|
return true;
|
|
@@ -270,7 +275,8 @@ async function prompt(
|
|
|
270
275
|
vcs,
|
|
271
276
|
decisions,
|
|
272
277
|
configs,
|
|
273
|
-
pathWithinParent
|
|
278
|
+
pathWithinParent,
|
|
279
|
+
{logger}
|
|
274
280
|
) {
|
|
275
281
|
const npmConf$1 = npmConf();
|
|
276
282
|
|
|
@@ -279,7 +285,7 @@ async function prompt(
|
|
|
279
285
|
maybeLoggedInNpmUsername = (await execa('npm', ['whoami'])).stdout;
|
|
280
286
|
} catch (failedExecutionResult) {
|
|
281
287
|
if (!decisions[questionNames$1.SCOPE]) {
|
|
282
|
-
warn('No logged in user found with `npm whoami`. Login with `npm login` '
|
|
288
|
+
logger.warn('No logged in user found with `npm whoami`. Login with `npm login` '
|
|
283
289
|
+ 'to use your npm account name as the package scope default.');
|
|
284
290
|
}
|
|
285
291
|
}
|
|
@@ -328,7 +334,7 @@ async function prompt(
|
|
|
328
334
|
choices: [...Object.values(projectTypes$1), 'Other'],
|
|
329
335
|
default: projectTypes$1.PACKAGE
|
|
330
336
|
},
|
|
331
|
-
...'
|
|
337
|
+
...['ISS', 'CS'].includes(visibility) ? [] : [{
|
|
332
338
|
name: questionNames$1.SHOULD_BE_SCOPED,
|
|
333
339
|
message: 'Should this package be scoped?',
|
|
334
340
|
type: 'confirm',
|
|
@@ -657,8 +663,8 @@ $ ${packageManager} test
|
|
|
657
663
|
};
|
|
658
664
|
}
|
|
659
665
|
|
|
660
|
-
async function determineLatestVersionOf(nodeVersionCategory) {
|
|
661
|
-
info('Determining version of node', {level: 'secondary'});
|
|
666
|
+
async function determineLatestVersionOf(nodeVersionCategory, {logger}) {
|
|
667
|
+
logger.info('Determining version of node', {level: 'secondary'});
|
|
662
668
|
|
|
663
669
|
const {stdout: nvmLsOutput} = await execa(
|
|
664
670
|
`. ~/.nvm/nvm.sh && nvm ls-remote${('LTS' === nodeVersionCategory) ? ' --lts' : ''}`,
|
|
@@ -671,25 +677,25 @@ async function determineLatestVersionOf(nodeVersionCategory) {
|
|
|
671
677
|
return lsLine.match(/(v[0-9]+)\.[0-9]+\.[0-9]+/)[1];
|
|
672
678
|
}
|
|
673
679
|
|
|
674
|
-
function install(nodeVersionCategory) {
|
|
675
|
-
info(`Installing ${nodeVersionCategory} version of node using nvm`, {level: 'secondary'});
|
|
680
|
+
function install(nodeVersionCategory, {logger}) {
|
|
681
|
+
logger.info(`Installing ${nodeVersionCategory} version of node using nvm`, {level: 'secondary'});
|
|
676
682
|
|
|
677
683
|
const subprocess = execa('. ~/.nvm/nvm.sh && nvm install', {shell: true});
|
|
678
684
|
subprocess.stdout.pipe(process.stdout);
|
|
679
685
|
return subprocess;
|
|
680
686
|
}
|
|
681
687
|
|
|
682
|
-
async function scaffoldNodeVersion({projectRoot, nodeVersionCategory}) {
|
|
688
|
+
async function scaffoldNodeVersion({projectRoot, nodeVersionCategory}, {logger}) {
|
|
683
689
|
if (!nodeVersionCategory) return undefined;
|
|
684
690
|
|
|
685
691
|
const lowerCaseCategory = nodeVersionCategory.toLowerCase();
|
|
686
|
-
info(`Configuring ${lowerCaseCategory} version of node`);
|
|
692
|
+
logger.info(`Configuring ${lowerCaseCategory} version of node`);
|
|
687
693
|
|
|
688
|
-
const version = await determineLatestVersionOf(nodeVersionCategory);
|
|
694
|
+
const version = await determineLatestVersionOf(nodeVersionCategory, {logger});
|
|
689
695
|
|
|
690
696
|
await promises.writeFile(`${projectRoot}/.nvmrc`, version);
|
|
691
697
|
|
|
692
|
-
await install(nodeVersionCategory);
|
|
698
|
+
await install(nodeVersionCategory, {logger});
|
|
693
699
|
|
|
694
700
|
return version;
|
|
695
701
|
}
|
|
@@ -741,8 +747,8 @@ async function scaffoldPackage({
|
|
|
741
747
|
license,
|
|
742
748
|
author,
|
|
743
749
|
description
|
|
744
|
-
}) {
|
|
745
|
-
info('Configuring package.json');
|
|
750
|
+
}, {logger}) {
|
|
751
|
+
logger.info('Configuring package.json');
|
|
746
752
|
|
|
747
753
|
const packageName = determinePackageName(projectName, scope);
|
|
748
754
|
|
|
@@ -845,10 +851,11 @@ async function installDependencies(
|
|
|
845
851
|
dependencies,
|
|
846
852
|
dependenciesType,
|
|
847
853
|
projectRoot,
|
|
848
|
-
packageManager
|
|
854
|
+
packageManager,
|
|
855
|
+
{logger}
|
|
849
856
|
) {
|
|
850
857
|
if (dependencies.length) {
|
|
851
|
-
info(`Installing ${dependenciesType} dependencies`, {level: 'secondary'});
|
|
858
|
+
logger.info(`Installing ${dependenciesType} dependencies`, {level: 'secondary'});
|
|
852
859
|
|
|
853
860
|
await execa(
|
|
854
861
|
`. ~/.nvm/nvm.sh && nvm use && ${packageManager} ${
|
|
@@ -858,19 +865,22 @@ async function installDependencies(
|
|
|
858
865
|
}`,
|
|
859
866
|
{shell: true, cwd: projectRoot}
|
|
860
867
|
);
|
|
861
|
-
} else warn(`No ${dependenciesType} dependencies to install`);
|
|
868
|
+
} else logger.warn(`No ${dependenciesType} dependencies to install`);
|
|
862
869
|
}
|
|
863
870
|
|
|
864
|
-
async function removeDependencies({packageManager, dependencies}) {
|
|
871
|
+
async function removeDependencies({packageManager, dependencies}, {logger}) {
|
|
865
872
|
if (dependencies.length) {
|
|
866
|
-
info('Removing dependencies dependencies', {level: 'secondary'});
|
|
873
|
+
logger.info('Removing dependencies dependencies', {level: 'secondary'});
|
|
867
874
|
|
|
868
875
|
await execa(packageManager, ['remove', ...dependencies]);
|
|
869
876
|
}
|
|
870
877
|
}
|
|
871
878
|
|
|
872
|
-
async function processDependencies(
|
|
873
|
-
|
|
879
|
+
async function processDependencies(
|
|
880
|
+
{dependencies = {}, devDependencies, projectRoot, packageManager},
|
|
881
|
+
{logger}
|
|
882
|
+
) {
|
|
883
|
+
logger.info('Processing dependencies');
|
|
874
884
|
|
|
875
885
|
if (Array.isArray(devDependencies)) {
|
|
876
886
|
throw new Error(
|
|
@@ -885,12 +895,12 @@ async function processDependencies({dependencies = {}, devDependencies, projectR
|
|
|
885
895
|
const {javascript: {production = [], development = [], remove: dependenciesToRemove = []} = {}} = dependencies;
|
|
886
896
|
|
|
887
897
|
try {
|
|
888
|
-
await installDependencies(production, PROD_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
889
|
-
await installDependencies(development, DEV_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
890
|
-
await removeDependencies({packageManager, dependencies: dependenciesToRemove});
|
|
898
|
+
await installDependencies(production, PROD_DEPENDENCY_TYPE, projectRoot, packageManager, {logger});
|
|
899
|
+
await installDependencies(development, DEV_DEPENDENCY_TYPE, projectRoot, packageManager, {logger});
|
|
900
|
+
await removeDependencies({packageManager, dependencies: dependenciesToRemove}, {logger});
|
|
891
901
|
} catch (e) {
|
|
892
|
-
error('Failed to update dependencies');
|
|
893
|
-
error(e, {level: 'secondary'});
|
|
902
|
+
logger.error('Failed to update dependencies');
|
|
903
|
+
logger.error(e, {level: 'secondary'});
|
|
894
904
|
}
|
|
895
905
|
}
|
|
896
906
|
|
|
@@ -982,8 +992,8 @@ async function liftPackageJson({
|
|
|
982
992
|
packageManager,
|
|
983
993
|
vcs,
|
|
984
994
|
pathWithinParent
|
|
985
|
-
}) {
|
|
986
|
-
info('Updating `package.json`', {level: 'secondary'});
|
|
995
|
+
}, {logger}) {
|
|
996
|
+
logger.info('Updating `package.json`', {level: 'secondary'});
|
|
987
997
|
|
|
988
998
|
const existingPackageJsonContents = JSON.parse(await promises.readFile(`${projectRoot}/package.json`, 'utf-8'));
|
|
989
999
|
const {scripts: liftedScripts, dependencies: scriptDependencies} = liftScripts({
|
|
@@ -1008,11 +1018,11 @@ async function liftPackageJson({
|
|
|
1008
1018
|
devDependencies,
|
|
1009
1019
|
projectRoot,
|
|
1010
1020
|
packageManager
|
|
1011
|
-
});
|
|
1021
|
+
}, {logger});
|
|
1012
1022
|
}
|
|
1013
1023
|
|
|
1014
1024
|
function mapProjectVisibility({projectVisibility}) {
|
|
1015
|
-
return '
|
|
1025
|
+
return 'OSS' === projectVisibility ? 'public' : 'restricted';
|
|
1016
1026
|
}
|
|
1017
1027
|
|
|
1018
1028
|
function isScope(firstPart) {
|
|
@@ -1220,8 +1230,8 @@ async function scaffoldPackageProjectType({
|
|
|
1220
1230
|
dialect,
|
|
1221
1231
|
provideExample,
|
|
1222
1232
|
publishRegistry
|
|
1223
|
-
}) {
|
|
1224
|
-
info('Scaffolding Package Details');
|
|
1233
|
+
}, {logger}) {
|
|
1234
|
+
logger.info('Scaffolding Package Details');
|
|
1225
1235
|
|
|
1226
1236
|
const packageAccessLevel = mapProjectVisibility({projectVisibility: visibility});
|
|
1227
1237
|
const [detailsForBuild, publishableResults] = await Promise.all([
|
|
@@ -1289,15 +1299,15 @@ function liftPackage({projectRoot, packageDetails, configs}) {
|
|
|
1289
1299
|
}
|
|
1290
1300
|
|
|
1291
1301
|
async function projectIsPackage({
|
|
1292
|
-
packageDetails: {exports
|
|
1302
|
+
packageDetails: {exports, publishConfig, bin, private: projectMarkedPrivate}
|
|
1293
1303
|
}) {
|
|
1294
|
-
return !projectMarkedPrivate && (!!exports
|
|
1304
|
+
return !projectMarkedPrivate && (!!exports || (!!publishConfig && !bin));
|
|
1295
1305
|
}
|
|
1296
1306
|
|
|
1297
1307
|
const defaultBuildDirectory$1 = 'public';
|
|
1298
1308
|
|
|
1299
|
-
async function scaffoldApplication({projectRoot}) {
|
|
1300
|
-
info('Scaffolding Application Details');
|
|
1309
|
+
async function scaffoldApplication({projectRoot}, {logger}) {
|
|
1310
|
+
logger.info('Scaffolding Application Details');
|
|
1301
1311
|
|
|
1302
1312
|
await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
|
|
1303
1313
|
|
|
@@ -1320,8 +1330,8 @@ function projectIsApplication({packageDetails}) {
|
|
|
1320
1330
|
return !!packageDetails.private;
|
|
1321
1331
|
}
|
|
1322
1332
|
|
|
1323
|
-
async function scaffoldMonorepo({projectRoot}) {
|
|
1324
|
-
info('Scaffolding Monorepo Details');
|
|
1333
|
+
async function scaffoldMonorepo({projectRoot}, {logger}) {
|
|
1334
|
+
logger.info('Scaffolding Monorepo Details');
|
|
1325
1335
|
|
|
1326
1336
|
await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
|
|
1327
1337
|
|
|
@@ -1400,7 +1410,7 @@ async function scaffoldProjectType({
|
|
|
1400
1410
|
dialect,
|
|
1401
1411
|
provideExample,
|
|
1402
1412
|
publishRegistry
|
|
1403
|
-
}) {
|
|
1413
|
+
}, {logger}) {
|
|
1404
1414
|
switch (projectType) {
|
|
1405
1415
|
case projectTypes$1.PACKAGE:
|
|
1406
1416
|
return scaffoldPackageProjectType({
|
|
@@ -1415,9 +1425,9 @@ async function scaffoldProjectType({
|
|
|
1415
1425
|
dialect,
|
|
1416
1426
|
provideExample,
|
|
1417
1427
|
publishRegistry
|
|
1418
|
-
});
|
|
1428
|
+
}, {logger});
|
|
1419
1429
|
case projectTypes$1.APPLICATION:
|
|
1420
|
-
return scaffoldApplication({projectRoot});
|
|
1430
|
+
return scaffoldApplication({projectRoot}, {logger});
|
|
1421
1431
|
case projectTypes$1.CLI:
|
|
1422
1432
|
return scaffoldCli({
|
|
1423
1433
|
visibility,
|
|
@@ -1428,7 +1438,7 @@ async function scaffoldProjectType({
|
|
|
1428
1438
|
packageBundlers
|
|
1429
1439
|
});
|
|
1430
1440
|
case projectTypes$1.MONOREPO:
|
|
1431
|
-
return scaffoldMonorepo({projectRoot});
|
|
1441
|
+
return scaffoldMonorepo({projectRoot}, {logger});
|
|
1432
1442
|
case 'Other':
|
|
1433
1443
|
return {};
|
|
1434
1444
|
default:
|
|
@@ -1685,8 +1695,8 @@ async function scaffoldCodeStyle({
|
|
|
1685
1695
|
].filter(Boolean)));
|
|
1686
1696
|
}
|
|
1687
1697
|
|
|
1688
|
-
function liftCodeStyle(options) {
|
|
1689
|
-
return applyEnhancers({options, enhancers: [eslintPlugin]});
|
|
1698
|
+
function liftCodeStyle(options, dependencies) {
|
|
1699
|
+
return applyEnhancers({options, enhancers: [eslintPlugin], dependencies});
|
|
1690
1700
|
}
|
|
1691
1701
|
|
|
1692
1702
|
function codeStyleConfigured(options) {
|
|
@@ -1700,8 +1710,8 @@ var codeStylePlugin = /*#__PURE__*/Object.freeze({
|
|
|
1700
1710
|
test: codeStyleConfigured
|
|
1701
1711
|
});
|
|
1702
1712
|
|
|
1703
|
-
async function scaffoldJavascript(options) {
|
|
1704
|
-
info('Initializing JavaScript project');
|
|
1713
|
+
async function scaffoldJavascript(options, {logger}) {
|
|
1714
|
+
logger.info('Initializing JavaScript project');
|
|
1705
1715
|
|
|
1706
1716
|
const {
|
|
1707
1717
|
projectRoot,
|
|
@@ -1737,9 +1747,9 @@ async function scaffoldJavascript(options) {
|
|
|
1737
1747
|
provideExample,
|
|
1738
1748
|
packageManager,
|
|
1739
1749
|
dialect
|
|
1740
|
-
} = await prompt(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent);
|
|
1750
|
+
} = await prompt(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent, {logger});
|
|
1741
1751
|
|
|
1742
|
-
info('Writing project files', {level: 'secondary'});
|
|
1752
|
+
logger.info('Writing project files', {level: 'secondary'});
|
|
1743
1753
|
|
|
1744
1754
|
const {packageName} = await scaffoldPackage({
|
|
1745
1755
|
projectRoot,
|
|
@@ -1749,7 +1759,7 @@ async function scaffoldJavascript(options) {
|
|
|
1749
1759
|
license,
|
|
1750
1760
|
author,
|
|
1751
1761
|
description
|
|
1752
|
-
});
|
|
1762
|
+
}, {logger});
|
|
1753
1763
|
const projectTypeResults = await scaffoldProjectType({
|
|
1754
1764
|
projectType,
|
|
1755
1765
|
projectRoot,
|
|
@@ -1763,7 +1773,7 @@ async function scaffoldJavascript(options) {
|
|
|
1763
1773
|
dialect,
|
|
1764
1774
|
provideExample,
|
|
1765
1775
|
publishRegistry: configs.registries.publish
|
|
1766
|
-
});
|
|
1776
|
+
}, {logger});
|
|
1767
1777
|
const verificationResults = await scaffoldVerification({
|
|
1768
1778
|
projectRoot,
|
|
1769
1779
|
dialect,
|
|
@@ -1777,7 +1787,7 @@ async function scaffoldJavascript(options) {
|
|
|
1777
1787
|
pathWithinParent
|
|
1778
1788
|
});
|
|
1779
1789
|
const [nodeVersion, npmResults, dialectResults, codeStyleResults] = await Promise.all([
|
|
1780
|
-
scaffoldNodeVersion({projectRoot, nodeVersionCategory}),
|
|
1790
|
+
scaffoldNodeVersion({projectRoot, nodeVersionCategory}, {logger}),
|
|
1781
1791
|
scaffoldNpmConfiguration({projectType, projectRoot}),
|
|
1782
1792
|
scaffoldDialect({
|
|
1783
1793
|
dialect,
|
|
@@ -1913,8 +1923,8 @@ async function liftJavaScript({
|
|
|
1913
1923
|
pathWithinParent,
|
|
1914
1924
|
enhancers = {},
|
|
1915
1925
|
configs = {}
|
|
1916
|
-
}) {
|
|
1917
|
-
info('Lifting JavaScript-specific details');
|
|
1926
|
+
}, dependencies) {
|
|
1927
|
+
dependencies.logger.info('Lifting JavaScript-specific details');
|
|
1918
1928
|
|
|
1919
1929
|
const [packageManager, packageContents] = await Promise.all([
|
|
1920
1930
|
resolveCurrentPackageManager({projectRoot, packageManager: results.packageManager}),
|
|
@@ -1936,15 +1946,19 @@ async function liftJavaScript({
|
|
|
1936
1946
|
packageManagers,
|
|
1937
1947
|
registriesPlugin
|
|
1938
1948
|
},
|
|
1939
|
-
options: {packageManager, projectRoot, vcs, packageDetails: JSON.parse(packageContents), configs}
|
|
1949
|
+
options: {packageManager, projectRoot, vcs, packageDetails: JSON.parse(packageContents), configs},
|
|
1950
|
+
dependencies
|
|
1940
1951
|
});
|
|
1941
1952
|
|
|
1942
|
-
await liftPackageJson(
|
|
1953
|
+
await liftPackageJson(
|
|
1954
|
+
deepmerge.all([{projectRoot, packageManager, vcs, pathWithinParent}, enhancerResults]),
|
|
1955
|
+
dependencies
|
|
1956
|
+
);
|
|
1943
1957
|
|
|
1944
1958
|
return enhancerResults;
|
|
1945
1959
|
}
|
|
1946
1960
|
|
|
1947
|
-
async function projectUsesJavaScript({projectRoot}) {
|
|
1961
|
+
async function projectUsesJavaScript({projectRoot}, {logger}) {
|
|
1948
1962
|
const [nvmFound, jsPackageManagerFound] = await Promise.all([
|
|
1949
1963
|
nodeVersionMangerInUse({projectRoot}),
|
|
1950
1964
|
packageManagerInUse({projectRoot})
|
|
@@ -1952,7 +1966,7 @@ async function projectUsesJavaScript({projectRoot}) {
|
|
|
1952
1966
|
|
|
1953
1967
|
const jsProjectFound = nvmFound || jsPackageManagerFound;
|
|
1954
1968
|
|
|
1955
|
-
if (jsProjectFound) info('JavaScript Project Detected');
|
|
1969
|
+
if (jsProjectFound) logger.info('JavaScript Project Detected');
|
|
1956
1970
|
|
|
1957
1971
|
return jsProjectFound;
|
|
1958
1972
|
}
|