@form8ion/project 22.0.0-beta.13 → 22.0.0-beta.15
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 +43 -11
- package/lib/index.js +162 -102
- package/lib/index.js.map +1 -1
- package/package.json +9 -9
- package/src/ci-provider/index.js +1 -0
- package/src/ci-provider/prompt.js +17 -0
- package/src/ci-provider/prompt.test.js +27 -0
- package/src/ci-provider/scaffolder.js +23 -0
- package/src/ci-provider/scaffolder.test.js +55 -0
- package/src/contributing/scaffolder.js +1 -1
- package/src/dependency-updater/prompt.js +3 -1
- package/src/dependency-updater/prompt.test.js +4 -2
- package/src/dependency-updater/scaffolder.js +4 -2
- package/src/dependency-updater/scaffolder.test.js +11 -4
- package/src/editorconfig/scaffolder.js +1 -1
- package/src/index.js +1 -5
- package/src/language/prompt.js +3 -1
- package/src/language/prompt.test.js +3 -1
- package/src/language/scaffolder.js +4 -2
- package/src/language/scaffolder.test.js +10 -5
- package/src/license/lifter.js +1 -1
- package/src/license/tester.js +1 -1
- package/src/prompts/index.js +7 -8
- package/src/prompts/question-names.js +19 -5
- package/src/scaffolder.js +8 -6
- package/src/scaffolder.test.js +16 -5
- package/src/template-path.js +1 -1
- package/src/vcs/host/prompt.js +4 -2
- package/src/vcs/host/prompt.test.js +6 -4
- package/src/vcs/host/scaffolder.js +3 -1
- package/src/vcs/host/scaffolder.test.js +4 -2
- package/src/vcs/prompt.js +4 -2
- package/src/vcs/prompt.test.js +4 -2
package/README.md
CHANGED
|
@@ -72,7 +72,7 @@ a wrapper.
|
|
|
72
72
|
|
|
73
73
|
```javascript
|
|
74
74
|
import {ungroupObject} from '@form8ion/core';
|
|
75
|
-
import {lift,
|
|
75
|
+
import {lift, promptConstants, scaffold} from '@form8ion/project';
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
#### Execute
|
|
@@ -96,16 +96,48 @@ const plugins = {
|
|
|
96
96
|
await scaffold(
|
|
97
97
|
{plugins},
|
|
98
98
|
{
|
|
99
|
-
prompt: () =>
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
99
|
+
prompt: async ({id}) => {
|
|
100
|
+
const {questionNames, ids} = promptConstants;
|
|
101
|
+
const {
|
|
102
|
+
BASE_DETAILS: baseDetailsPromptId,
|
|
103
|
+
GIT_REPOSITORY: gitRepositoryPromptId,
|
|
104
|
+
PROJECT_LANGUAGE: projectLanguagePromptId
|
|
105
|
+
} = ids;
|
|
106
|
+
|
|
107
|
+
switch (id) {
|
|
108
|
+
case baseDetailsPromptId: {
|
|
109
|
+
const {
|
|
110
|
+
PROJECT_NAME,
|
|
111
|
+
LICENSE,
|
|
112
|
+
VISIBILITY,
|
|
113
|
+
DESCRIPTION,
|
|
114
|
+
COPYRIGHT_HOLDER,
|
|
115
|
+
COPYRIGHT_YEAR
|
|
116
|
+
} = questionNames[baseDetailsPromptId];
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
[PROJECT_NAME]: 'my-project',
|
|
120
|
+
[LICENSE]: 'MIT',
|
|
121
|
+
[VISIBILITY]: 'Public',
|
|
122
|
+
[DESCRIPTION]: 'My project',
|
|
123
|
+
[COPYRIGHT_HOLDER]: 'John Smith',
|
|
124
|
+
[COPYRIGHT_YEAR]: '2022'
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
case gitRepositoryPromptId: {
|
|
128
|
+
const {GIT_REPO} = questionNames[gitRepositoryPromptId];
|
|
129
|
+
|
|
130
|
+
return {[GIT_REPO]: false};
|
|
131
|
+
}
|
|
132
|
+
case projectLanguagePromptId: {
|
|
133
|
+
const {PROJECT_LANGUAGE} = questionNames[projectLanguagePromptId];
|
|
134
|
+
|
|
135
|
+
return {[PROJECT_LANGUAGE]: 'foo'};
|
|
136
|
+
}
|
|
137
|
+
default:
|
|
138
|
+
throw new Error(`Unknown prompt with ID: ${id}`);
|
|
139
|
+
}
|
|
140
|
+
},
|
|
109
141
|
logger: {
|
|
110
142
|
info: () => undefined,
|
|
111
143
|
success: () => undefined,
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { questionsForBaseDetails, questionNames as questionNames$2, fileExists, optionsSchemas, validateOptions, applyEnhancers } from '@form8ion/core';
|
|
2
1
|
import deepmerge from 'deepmerge';
|
|
3
2
|
import { execa } from 'execa';
|
|
3
|
+
import { questionNames as questionNames$1, fileExists, questionsForBaseDetails, optionsSchemas, validateOptions, applyEnhancers } from '@form8ion/core';
|
|
4
4
|
import { lift as lift$1, scaffold as scaffold$2 } from '@form8ion/readme';
|
|
5
5
|
import * as gitPlugin from '@form8ion/git';
|
|
6
6
|
import { test, scaffold as scaffold$1 } from '@form8ion/git';
|
|
@@ -15,46 +15,35 @@ import { promises as promises$1 } from 'node:fs';
|
|
|
15
15
|
import { resolve } from 'path';
|
|
16
16
|
import filedirname from 'filedirname';
|
|
17
17
|
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
18
|
+
const questionNames = {
|
|
19
|
+
BASE_DETAILS: questionNames$1,
|
|
20
|
+
GIT_REPOSITORY: {
|
|
21
|
+
GIT_REPO: 'gitRepo'
|
|
22
|
+
},
|
|
23
|
+
REPOSITORY_HOST: {
|
|
24
|
+
REPO_HOST: 'repoHost',
|
|
25
|
+
REPO_OWNER: 'repoOwner'
|
|
26
|
+
},
|
|
27
|
+
PROJECT_LANGUAGE: {
|
|
28
|
+
PROJECT_LANGUAGE: 'projectLanguage'
|
|
29
|
+
},
|
|
30
|
+
DEPENDENCY_UPDATER: {
|
|
31
|
+
DEPENDENCY_UPDATER: 'dependencyUpdater'
|
|
32
|
+
},
|
|
33
|
+
CI_PROVIDER: {
|
|
34
|
+
CI_PROVIDER: 'ciProvider'
|
|
35
|
+
}
|
|
33
36
|
};
|
|
34
37
|
|
|
35
|
-
const GIT_REPOSITORY_PROMPT_ID = 'GIT_REPOSITORY';
|
|
36
|
-
|
|
37
|
-
async function promptForRepoCreation({prompt}) {
|
|
38
|
-
const {[questionNames$1.GIT_REPO]: gitRepoShouldBeCreated} = await prompt({
|
|
39
|
-
id: GIT_REPOSITORY_PROMPT_ID,
|
|
40
|
-
questions: [{
|
|
41
|
-
name: questionNames$1.GIT_REPO,
|
|
42
|
-
type: 'confirm',
|
|
43
|
-
default: true,
|
|
44
|
-
message: 'Should a git repository be initialized?'
|
|
45
|
-
}]
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
return gitRepoShouldBeCreated;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
38
|
const PROJECT_LANGUAGE_PROMPT_ID = 'PROJECT_LANGUAGE';
|
|
52
39
|
|
|
40
|
+
const {PROJECT_LANGUAGE: PROJECT_LANGUAGE$1} = questionNames.PROJECT_LANGUAGE;
|
|
41
|
+
|
|
53
42
|
function promptForProjectLanguage(languages, {prompt}) {
|
|
54
43
|
return prompt({
|
|
55
44
|
id: PROJECT_LANGUAGE_PROMPT_ID,
|
|
56
45
|
questions: [{
|
|
57
|
-
name:
|
|
46
|
+
name: PROJECT_LANGUAGE$1,
|
|
58
47
|
type: 'list',
|
|
59
48
|
message: 'What type of project is this?',
|
|
60
49
|
choices: [...Object.keys(languages), 'Other']
|
|
@@ -62,58 +51,34 @@ function promptForProjectLanguage(languages, {prompt}) {
|
|
|
62
51
|
});
|
|
63
52
|
}
|
|
64
53
|
|
|
65
|
-
const
|
|
54
|
+
const {PROJECT_LANGUAGE} = questionNames.PROJECT_LANGUAGE;
|
|
66
55
|
|
|
67
|
-
async function
|
|
68
|
-
const
|
|
69
|
-
id: REPOSITORY_HOST_PROMPT_ID,
|
|
70
|
-
questions: [{
|
|
71
|
-
name: questionNames$1.REPO_HOST,
|
|
72
|
-
type: 'list',
|
|
73
|
-
message: 'Where will the repository be hosted?',
|
|
74
|
-
choices: Object.keys(hosts)
|
|
75
|
-
}]
|
|
76
|
-
});
|
|
77
|
-
const host = hosts[answers[questionNames$1.REPO_HOST]];
|
|
56
|
+
async function scaffoldLanguage(languagePlugins, options, {prompt}) {
|
|
57
|
+
const {[PROJECT_LANGUAGE]: chosenLanguage} = await promptForProjectLanguage(languagePlugins, {prompt});
|
|
78
58
|
|
|
79
|
-
|
|
80
|
-
}
|
|
59
|
+
const plugin = languagePlugins[chosenLanguage];
|
|
81
60
|
|
|
82
|
-
|
|
61
|
+
if (plugin) return plugin.scaffold(options);
|
|
83
62
|
|
|
84
|
-
|
|
85
|
-
return prompt({
|
|
86
|
-
id: DEPENDENCY_UPDATER_PROMPT_ID,
|
|
87
|
-
questions: [{
|
|
88
|
-
name: questionNames$1.DEPENDENCY_UPDATER,
|
|
89
|
-
type: 'list',
|
|
90
|
-
message: 'Which dependency-update service do you want to manage this project?',
|
|
91
|
-
choices: [...Object.keys(updaters), 'Other']
|
|
92
|
-
}]
|
|
93
|
-
});
|
|
63
|
+
return undefined;
|
|
94
64
|
}
|
|
95
65
|
|
|
96
|
-
const
|
|
97
|
-
BASE_DETAILS: BASE_DETAILS_PROMPT_ID,
|
|
98
|
-
GIT_REPOSITORY: GIT_REPOSITORY_PROMPT_ID,
|
|
99
|
-
REPOSITORY_HOST: REPOSITORY_HOST_PROMPT_ID,
|
|
100
|
-
PROJECT_LANGUAGE: PROJECT_LANGUAGE_PROMPT_ID,
|
|
101
|
-
DEPENDENCY_UPDATER: DEPENDENCY_UPDATER_PROMPT_ID
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
const questionNames = {
|
|
105
|
-
...questionNames$2,
|
|
106
|
-
...questionNames$1
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
async function scaffoldLanguage (languagePlugins, options, {prompt}) {
|
|
110
|
-
const {[questionNames$1.PROJECT_LANGUAGE]: chosenLanguage} = await promptForProjectLanguage(languagePlugins, {prompt});
|
|
66
|
+
const GIT_REPOSITORY_PROMPT_ID = 'GIT_REPOSITORY';
|
|
111
67
|
|
|
112
|
-
|
|
68
|
+
const {GIT_REPO} = questionNames.GIT_REPOSITORY;
|
|
113
69
|
|
|
114
|
-
|
|
70
|
+
async function promptForRepoCreation({prompt}) {
|
|
71
|
+
const {[GIT_REPO]: gitRepoShouldBeCreated} = await prompt({
|
|
72
|
+
id: GIT_REPOSITORY_PROMPT_ID,
|
|
73
|
+
questions: [{
|
|
74
|
+
name: GIT_REPO,
|
|
75
|
+
type: 'confirm',
|
|
76
|
+
default: true,
|
|
77
|
+
message: 'Should a git repository be initialized?'
|
|
78
|
+
}]
|
|
79
|
+
});
|
|
115
80
|
|
|
116
|
-
return
|
|
81
|
+
return gitRepoShouldBeCreated;
|
|
117
82
|
}
|
|
118
83
|
|
|
119
84
|
async function getExistingRemotes(git) {
|
|
@@ -164,8 +129,29 @@ async function defineRemoteOrigin(projectRoot, sshUrl, {logger}) {
|
|
|
164
129
|
return {nextSteps: [{summary: 'Set local `master` branch to track upstream `origin/master`'}]};
|
|
165
130
|
}
|
|
166
131
|
|
|
132
|
+
const REPOSITORY_HOST_PROMPT_ID = 'REPOSITORY_HOST';
|
|
133
|
+
|
|
134
|
+
const {REPO_HOST: REPO_HOST$1} = questionNames.REPOSITORY_HOST;
|
|
135
|
+
|
|
136
|
+
async function promptForVcsHostChoice(hosts, {prompt}) {
|
|
137
|
+
const answers = await prompt({
|
|
138
|
+
id: REPOSITORY_HOST_PROMPT_ID,
|
|
139
|
+
questions: [{
|
|
140
|
+
name: REPO_HOST$1,
|
|
141
|
+
type: 'list',
|
|
142
|
+
message: 'Where will the repository be hosted?',
|
|
143
|
+
choices: Object.keys(hosts)
|
|
144
|
+
}]
|
|
145
|
+
});
|
|
146
|
+
const host = hosts[answers[REPO_HOST$1]];
|
|
147
|
+
|
|
148
|
+
return {...answers, ...host};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const {REPO_HOST} = questionNames.REPOSITORY_HOST;
|
|
152
|
+
|
|
167
153
|
async function scaffoldVcsHost(hosts, options, {prompt}) {
|
|
168
|
-
const {[
|
|
154
|
+
const {[REPO_HOST]: chosenHost} = await promptForVcsHostChoice(hosts, {prompt});
|
|
169
155
|
|
|
170
156
|
const lowercasedHosts = Object.fromEntries(
|
|
171
157
|
Object.entries(hosts).map(([name, details]) => [name.toLowerCase(), details])
|
|
@@ -222,7 +208,7 @@ async function scaffoldLicense({projectRoot, license, copyright}, {logger}) {
|
|
|
222
208
|
return {};
|
|
223
209
|
}
|
|
224
210
|
|
|
225
|
-
function
|
|
211
|
+
function licenseDefined({projectRoot}) {
|
|
226
212
|
return fileExists(`${projectRoot}/LICENSE`);
|
|
227
213
|
}
|
|
228
214
|
|
|
@@ -230,7 +216,7 @@ function repositoryIsHostedOnGithub(vcs) {
|
|
|
230
216
|
return vcs && 'github' === vcs.host;
|
|
231
217
|
}
|
|
232
218
|
|
|
233
|
-
function
|
|
219
|
+
function liftLicense({vcs}) {
|
|
234
220
|
return {
|
|
235
221
|
...repositoryIsHostedOnGithub(vcs) && {
|
|
236
222
|
badges: {
|
|
@@ -248,16 +234,34 @@ function lifter ({vcs}) {
|
|
|
248
234
|
|
|
249
235
|
var licensePlugin = /*#__PURE__*/Object.freeze({
|
|
250
236
|
__proto__: null,
|
|
251
|
-
lift:
|
|
237
|
+
lift: liftLicense,
|
|
252
238
|
scaffold: scaffoldLicense,
|
|
253
|
-
test:
|
|
239
|
+
test: licenseDefined
|
|
254
240
|
});
|
|
255
241
|
|
|
256
|
-
|
|
242
|
+
const DEPENDENCY_UPDATER_PROMPT_ID = 'DEPENDENCY_UPDATER';
|
|
243
|
+
|
|
244
|
+
const {DEPENDENCY_UPDATER: DEPENDENCY_UPDATER$1} = questionNames.DEPENDENCY_UPDATER;
|
|
245
|
+
|
|
246
|
+
async function promptForDependencyUpdaterChoice(updaters, {prompt}) {
|
|
247
|
+
return prompt({
|
|
248
|
+
id: DEPENDENCY_UPDATER_PROMPT_ID,
|
|
249
|
+
questions: [{
|
|
250
|
+
name: DEPENDENCY_UPDATER$1,
|
|
251
|
+
type: 'list',
|
|
252
|
+
message: 'Which dependency-update service do you want to manage this project?',
|
|
253
|
+
choices: [...Object.keys(updaters), 'Other']
|
|
254
|
+
}]
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const {DEPENDENCY_UPDATER} = questionNames.DEPENDENCY_UPDATER;
|
|
259
|
+
|
|
260
|
+
async function scaffoldDependencyUpdater(plugins, options, {prompt}) {
|
|
257
261
|
if (!Object.keys(plugins).length) return undefined;
|
|
258
262
|
|
|
259
263
|
const plugin = plugins[
|
|
260
|
-
(await promptForDependencyUpdaterChoice(plugins, {prompt}))[
|
|
264
|
+
(await promptForDependencyUpdaterChoice(plugins, {prompt}))[DEPENDENCY_UPDATER]
|
|
261
265
|
];
|
|
262
266
|
|
|
263
267
|
if (plugin) return plugin.scaffold(options);
|
|
@@ -265,6 +269,52 @@ async function scaffoldDependencyUpdater (plugins, options, {prompt}) {
|
|
|
265
269
|
return undefined;
|
|
266
270
|
}
|
|
267
271
|
|
|
272
|
+
const CI_PROVIDER_PROMPT_ID = 'CI_PROVIDER';
|
|
273
|
+
|
|
274
|
+
const {CI_PROVIDER: CI_PROVIDER$1} = questionNames.CI_PROVIDER;
|
|
275
|
+
|
|
276
|
+
function promptForCiProvider(providers, {prompt}) {
|
|
277
|
+
return prompt({
|
|
278
|
+
id: CI_PROVIDER_PROMPT_ID,
|
|
279
|
+
questions: [{
|
|
280
|
+
name: CI_PROVIDER$1,
|
|
281
|
+
type: 'list',
|
|
282
|
+
message: 'Which CI service do you want use with this project?',
|
|
283
|
+
choices: [...Object.keys(providers), 'Other']
|
|
284
|
+
}]
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const {CI_PROVIDER} = questionNames.CI_PROVIDER;
|
|
289
|
+
|
|
290
|
+
async function scaffoldCiProvider(plugins, options, {prompt}) {
|
|
291
|
+
if (!Object.keys(plugins).length) return undefined;
|
|
292
|
+
|
|
293
|
+
const {projectRoot} = options;
|
|
294
|
+
|
|
295
|
+
const qualifiedPlugins = Object.fromEntries(
|
|
296
|
+
(await Promise.all(
|
|
297
|
+
Object.entries(plugins).map(async ([name, plugin]) => [name, plugin, await plugin.qualify({projectRoot})])
|
|
298
|
+
)).filter(([, , qualified]) => qualified).map(([name, plugin]) => [name, plugin])
|
|
299
|
+
);
|
|
300
|
+
|
|
301
|
+
const chosen = (await promptForCiProvider(qualifiedPlugins, {prompt}))[CI_PROVIDER];
|
|
302
|
+
const plugin = qualifiedPlugins[chosen];
|
|
303
|
+
|
|
304
|
+
if (plugin) return plugin.scaffold(options);
|
|
305
|
+
|
|
306
|
+
return {};
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
const BASE_DETAILS_PROMPT_ID = 'BASE_DETAILS';
|
|
310
|
+
|
|
311
|
+
function promptForBaseDetails(projectRoot, {prompt}) {
|
|
312
|
+
return prompt({
|
|
313
|
+
id: BASE_DETAILS_PROMPT_ID,
|
|
314
|
+
questions: questionsForBaseDetails(projectRoot)
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
|
|
268
318
|
var languagePluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});
|
|
269
319
|
|
|
270
320
|
var vcsHostPluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin);
|
|
@@ -284,21 +334,21 @@ function validate(options) {
|
|
|
284
334
|
}), options) || {};
|
|
285
335
|
}
|
|
286
336
|
|
|
287
|
-
function
|
|
337
|
+
function determinePathToTemplate(fileName) {
|
|
288
338
|
const [, __dirname] = filedirname();
|
|
289
339
|
|
|
290
340
|
return resolve(__dirname, '..', 'templates', fileName);
|
|
291
341
|
}
|
|
292
342
|
|
|
293
|
-
function scaffoldEditorConfig
|
|
294
|
-
return promises$1.copyFile(
|
|
343
|
+
function scaffoldEditorConfig({projectRoot}) {
|
|
344
|
+
return promises$1.copyFile(determinePathToTemplate('editorconfig.ini'), `${projectRoot}/.editorconfig`);
|
|
295
345
|
}
|
|
296
346
|
|
|
297
347
|
function editorconfigInUse({projectRoot}) {
|
|
298
348
|
return fileExists(`${projectRoot}/.editorconfig`);
|
|
299
349
|
}
|
|
300
350
|
|
|
301
|
-
function
|
|
351
|
+
function scaffoldContribution({visibility}) {
|
|
302
352
|
if ('Public' === visibility) {
|
|
303
353
|
return {
|
|
304
354
|
badges: {
|
|
@@ -335,31 +385,32 @@ async function lift({projectRoot, results, enhancers, vcs, dependencies}) {
|
|
|
335
385
|
|
|
336
386
|
async function scaffold(options, {prompt, logger}) {
|
|
337
387
|
const projectRoot = process.cwd();
|
|
338
|
-
const {plugins: {dependencyUpdaters, languages, vcsHosts = {}}} = validate(options);
|
|
388
|
+
const {plugins: {dependencyUpdaters, ciProviders, languages, vcsHosts = {}}} = validate(options);
|
|
339
389
|
|
|
340
390
|
const {
|
|
341
|
-
[questionNames$
|
|
342
|
-
[questionNames$
|
|
343
|
-
[questionNames$
|
|
344
|
-
[questionNames$
|
|
345
|
-
[questionNames$
|
|
346
|
-
[questionNames$
|
|
391
|
+
[questionNames$1.PROJECT_NAME]: projectName,
|
|
392
|
+
[questionNames$1.LICENSE]: chosenLicense,
|
|
393
|
+
[questionNames$1.VISIBILITY]: visibility,
|
|
394
|
+
[questionNames$1.DESCRIPTION]: description,
|
|
395
|
+
[questionNames$1.COPYRIGHT_YEAR]: copyrightYear,
|
|
396
|
+
[questionNames$1.COPYRIGHT_HOLDER]: copyHolder
|
|
347
397
|
} = await promptForBaseDetails(projectRoot, {prompt});
|
|
348
398
|
const copyright = {year: copyrightYear, holder: copyHolder};
|
|
349
399
|
|
|
350
400
|
const [vcsResults, contributing, license] = await Promise.all([
|
|
351
401
|
scaffoldVcs({projectRoot, projectName, vcsHosts, visibility, description}, {prompt, logger}),
|
|
352
|
-
|
|
402
|
+
scaffoldContribution({visibility}),
|
|
353
403
|
scaffoldLicense({projectRoot, license: chosenLicense, copyright}, {logger}),
|
|
354
404
|
scaffold$2({projectName, projectRoot, description}),
|
|
355
405
|
scaffoldEditorConfig({projectRoot})
|
|
356
406
|
]);
|
|
357
407
|
|
|
358
|
-
const dependencyUpdaterResults = vcsResults.vcs
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
408
|
+
const [dependencyUpdaterResults] = vcsResults.vcs
|
|
409
|
+
? await Promise.all([
|
|
410
|
+
scaffoldDependencyUpdater(dependencyUpdaters, {projectRoot}, {prompt}),
|
|
411
|
+
scaffoldCiProvider(ciProviders, {projectRoot}, {prompt})
|
|
412
|
+
])
|
|
413
|
+
: [];
|
|
363
414
|
|
|
364
415
|
const language = await scaffoldLanguage(
|
|
365
416
|
languages,
|
|
@@ -393,7 +444,16 @@ async function scaffold(options, {prompt, logger}) {
|
|
|
393
444
|
return mergedResults;
|
|
394
445
|
}
|
|
395
446
|
|
|
396
|
-
const
|
|
447
|
+
const ids = {
|
|
448
|
+
BASE_DETAILS: BASE_DETAILS_PROMPT_ID,
|
|
449
|
+
GIT_REPOSITORY: GIT_REPOSITORY_PROMPT_ID,
|
|
450
|
+
REPOSITORY_HOST: REPOSITORY_HOST_PROMPT_ID,
|
|
451
|
+
PROJECT_LANGUAGE: PROJECT_LANGUAGE_PROMPT_ID,
|
|
452
|
+
DEPENDENCY_UPDATER: DEPENDENCY_UPDATER_PROMPT_ID,
|
|
453
|
+
CI_PROVIDER: CI_PROVIDER_PROMPT_ID
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
const constants = {ids, questionNames};
|
|
397
457
|
|
|
398
|
-
export { lift, promptConstants,
|
|
458
|
+
export { lift, constants as promptConstants, scaffold };
|
|
399
459
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/prompts/questions.js","../src/prompts/question-names.js","../src/vcs/prompt.js","../src/language/prompt.js","../src/vcs/host/prompt.js","../src/dependency-updater/prompt.js","../src/prompts/index.js","../src/language/scaffolder.js","../src/vcs/git/remotes.js","../src/vcs/host/scaffolder.js","../src/vcs/scaffolder.js","../src/license/scaffolder.js","../src/license/tester.js","../src/license/lifter.js","../src/dependency-updater/scaffolder.js","../src/language/schema.js","../src/vcs/host/schema.js","../src/dependency-updater/schema.js","../src/ci-provider/schema.js","../src/options-validator.js","../src/template-path.js","../src/editorconfig/scaffolder.js","../src/editorconfig/tester.js","../src/contributing/scaffolder.js","../src/lift.js","../src/scaffolder.js","../src/index.js"],"sourcesContent":["import {questionsForBaseDetails} from '@form8ion/core';\n\nexport const BASE_DETAILS_PROMPT_ID = 'BASE_DETAILS';\n\nexport function promptForBaseDetails(projectRoot, {prompt}) {\n return prompt({\n id: BASE_DETAILS_PROMPT_ID,\n questions: questionsForBaseDetails(projectRoot)\n });\n}\n","export const questionNames = {\n GIT_REPO: 'gitRepo',\n REPO_HOST: 'repoHost',\n REPO_OWNER: 'repoOwner',\n PROJECT_LANGUAGE: 'projectLanguage',\n DEPENDENCY_UPDATER: 'dependencyUpdater'\n};\n","import {questionNames} from '../prompts/question-names.js';\n\nexport const GIT_REPOSITORY_PROMPT_ID = 'GIT_REPOSITORY';\n\nexport default async function promptForRepoCreation({prompt}) {\n const {[questionNames.GIT_REPO]: gitRepoShouldBeCreated} = await prompt({\n id: GIT_REPOSITORY_PROMPT_ID,\n questions: [{\n name: questionNames.GIT_REPO,\n type: 'confirm',\n default: true,\n message: 'Should a git repository be initialized?'\n }]\n });\n\n return gitRepoShouldBeCreated;\n}\n","import {questionNames} from '../prompts/question-names.js';\n\nexport const PROJECT_LANGUAGE_PROMPT_ID = 'PROJECT_LANGUAGE';\n\nexport default function promptForProjectLanguage(languages, {prompt}) {\n return prompt({\n id: PROJECT_LANGUAGE_PROMPT_ID,\n questions: [{\n name: questionNames.PROJECT_LANGUAGE,\n type: 'list',\n message: 'What type of project is this?',\n choices: [...Object.keys(languages), 'Other']\n }]\n });\n}\n","import {questionNames} from '../../prompts/question-names.js';\n\nexport const REPOSITORY_HOST_PROMPT_ID = 'REPOSITORY_HOST';\n\nexport default async function promptForVcsHostChoice(hosts, {prompt}) {\n const answers = await prompt({\n id: REPOSITORY_HOST_PROMPT_ID,\n questions: [{\n name: questionNames.REPO_HOST,\n type: 'list',\n message: 'Where will the repository be hosted?',\n choices: Object.keys(hosts)\n }]\n });\n const host = hosts[answers[questionNames.REPO_HOST]];\n\n return {...answers, ...host};\n}\n","import {questionNames} from '../prompts/question-names.js';\n\nexport const DEPENDENCY_UPDATER_PROMPT_ID = 'DEPENDENCY_UPDATER';\n\nexport async function promptForDependencyUpdaterChoice(updaters, {prompt}) {\n return prompt({\n id: DEPENDENCY_UPDATER_PROMPT_ID,\n questions: [{\n name: questionNames.DEPENDENCY_UPDATER,\n type: 'list',\n message: 'Which dependency-update service do you want to manage this project?',\n choices: [...Object.keys(updaters), 'Other']\n }]\n });\n}\n","import {questionNames as coreQuestionNames} from '@form8ion/core';\n\nimport {BASE_DETAILS_PROMPT_ID} from './questions.js';\nimport {GIT_REPOSITORY_PROMPT_ID} from '../vcs/prompt.js';\nimport {PROJECT_LANGUAGE_PROMPT_ID} from '../language/prompt.js';\nimport {REPOSITORY_HOST_PROMPT_ID} from '../vcs/host/prompt.js';\nimport {DEPENDENCY_UPDATER_PROMPT_ID} from '../dependency-updater/prompt.js';\nimport {questionNames as projectScaffolderQuestionNames} from './question-names.js';\n\nexport const ids = {\n BASE_DETAILS: BASE_DETAILS_PROMPT_ID,\n GIT_REPOSITORY: GIT_REPOSITORY_PROMPT_ID,\n REPOSITORY_HOST: REPOSITORY_HOST_PROMPT_ID,\n PROJECT_LANGUAGE: PROJECT_LANGUAGE_PROMPT_ID,\n DEPENDENCY_UPDATER: DEPENDENCY_UPDATER_PROMPT_ID\n};\n\nexport const questionNames = {\n ...coreQuestionNames,\n ...projectScaffolderQuestionNames\n};\n","import {questionNames} from '../prompts/question-names.js';\nimport promptForLanguageDetails from './prompt.js';\n\nexport default async function (languagePlugins, options, {prompt}) {\n const {[questionNames.PROJECT_LANGUAGE]: chosenLanguage} = await promptForLanguageDetails(languagePlugins, {prompt});\n\n const plugin = languagePlugins[chosenLanguage];\n\n if (plugin) return plugin.scaffold(options);\n\n return undefined;\n}\n","import {simpleGit} from 'simple-git';\nimport parseGitUrl from 'git-url-parse';\n\nasync function getExistingRemotes(git) {\n try {\n return await git.listRemote();\n } catch (e) {\n if ('fatal: No remote configured to list refs from.\\n' === e.message) {\n return [];\n }\n\n throw e;\n }\n}\n\nexport async function determineExistingVcsDetails({projectRoot}) {\n const git = simpleGit({baseDir: projectRoot});\n const remoteOrigin = await git.remote(['get-url', 'origin']);\n const {owner, name, host} = parseGitUrl(remoteOrigin.trimEnd());\n\n return {vcs: {owner, name, host: 'github.com' === host ? 'github' : host}};\n}\n\nexport async function defineRemoteOrigin(projectRoot, sshUrl, {logger}) {\n if (!sshUrl) {\n logger.warn('URL not available to configure remote `origin`');\n\n return {nextSteps: []};\n }\n\n const git = simpleGit({baseDir: projectRoot});\n const existingRemotes = await getExistingRemotes(git);\n\n if (existingRemotes.includes('origin')) {\n logger.warn('The `origin` remote is already defined for this repository');\n\n return {nextSteps: []};\n }\n\n // info('Setting the local `master` branch to track `origin/master`');\n //\n // await gitBranch.setUpstream(\n // await gitBranch.lookup(repository, 'master', gitBranch.BRANCH.LOCAL),\n // 'origin/master'\n // );\n\n await git.addRemote('origin', sshUrl);\n\n return {nextSteps: [{summary: 'Set local `master` branch to track upstream `origin/master`'}]};\n}\n","import {questionNames} from '../../prompts/question-names.js';\nimport promptForVcsHostDetails from './prompt.js';\n\nexport default async function scaffoldVcsHost(hosts, options, {prompt}) {\n const {[questionNames.REPO_HOST]: chosenHost} = await promptForVcsHostDetails(hosts, {prompt});\n\n const lowercasedHosts = Object.fromEntries(\n Object.entries(hosts).map(([name, details]) => [name.toLowerCase(), details])\n );\n const host = lowercasedHosts[chosenHost.toLowerCase()];\n\n if (host) return host.scaffold(options);\n\n return {vcs: {}};\n}\n","import {scaffold as scaffoldGit, test as alreadyVersionedByGit} from '@form8ion/git';\n\nimport repositoryShouldBeCreated from './prompt.js';\nimport {determineExistingVcsDetails, defineRemoteOrigin} from './git/index.js';\nimport {scaffold as scaffoldVcsHost} from './host/index.js';\n\nexport default async function scaffoldVcs(\n {projectRoot, projectName, vcsHosts, visibility, description},\n {prompt, logger}\n) {\n if (await repositoryShouldBeCreated({prompt})) {\n if (await alreadyVersionedByGit({projectRoot})) {\n logger.info('Git repository already exists');\n\n return determineExistingVcsDetails({projectRoot});\n }\n\n const [{vcs: {host, owner, name, sshUrl}}] = await Promise.all([\n scaffoldVcsHost(vcsHosts, {projectName, projectRoot, description, visibility}, {prompt}),\n scaffoldGit({projectRoot})\n ]);\n\n const remoteOriginResults = await defineRemoteOrigin(projectRoot, sshUrl, {logger});\n\n return {\n vcs: {host, owner, name},\n nextSteps: [{summary: 'Commit scaffolded files'}, ...remoteOriginResults.nextSteps]\n };\n }\n\n return {};\n}\n","import {promises as fs} from 'fs';\nimport wrap from 'word-wrap';\nimport mustache from 'mustache';\n// eslint-disable-next-line import/extensions\nimport spdxLicenseList from 'spdx-license-list/full.js';\n\nexport default async function scaffoldLicense({projectRoot, license, copyright}, {logger}) {\n if (license) {\n logger.info('Generating License');\n\n const licenseContent = spdxLicenseList[license].licenseText;\n\n await fs.writeFile(\n `${projectRoot}/LICENSE`,\n `${wrap(\n mustache.render(licenseContent, {year: copyright.year, 'copyright holders': copyright.holder}, {}, ['<', '>']),\n {width: 80, indent: ''}\n )}\\n`\n );\n }\n\n return {};\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function ({projectRoot}) {\n return fileExists(`${projectRoot}/LICENSE`);\n}\n","function repositoryIsHostedOnGithub(vcs) {\n return vcs && 'github' === vcs.host;\n}\n\nexport default function ({vcs}) {\n return {\n ...repositoryIsHostedOnGithub(vcs) && {\n badges: {\n consumer: {\n license: {\n link: 'LICENSE',\n img: `https://img.shields.io/github/license/${vcs.owner}/${vcs.name}.svg?logo=opensourceinitiative`,\n text: 'license'\n }\n }\n }\n }\n };\n}\n","import {questionNames} from '../prompts/question-names.js';\nimport {promptForDependencyUpdaterChoice} from './prompt.js';\n\nexport default async function (plugins, options, {prompt}) {\n if (!Object.keys(plugins).length) return undefined;\n\n const plugin = plugins[\n (await promptForDependencyUpdaterChoice(plugins, {prompt}))[questionNames.DEPENDENCY_UPDATER]\n ];\n\n if (plugin) return plugin.scaffold(options);\n\n return undefined;\n}\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(/^/, optionsSchemas.form8ionPlugin);\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(joi.string(), optionsSchemas.form8ionPlugin).default({});\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(joi.string(), optionsSchemas.form8ionPlugin).default({});\n","import {validateOptions} from '@form8ion/core';\nimport joi from 'joi';\n\nimport languagePluginsSchema from './language/schema.js';\nimport vcsHostPluginsSchema from './vcs/host/schema.js';\nimport dependencyUpdaterPluginsSchema from './dependency-updater/schema.js';\nimport ciProviderPluginsSchema from './ci-provider/schema.js';\n\nexport function validate(options) {\n return validateOptions(joi.object({\n plugins: joi.object({\n dependencyUpdaters: dependencyUpdaterPluginsSchema,\n languages: languagePluginsSchema,\n vcsHosts: vcsHostPluginsSchema,\n ciProviders: ciProviderPluginsSchema\n })\n }), options) || {};\n}\n","import {resolve} from 'path';\nimport filedirname from 'filedirname';\n\nexport default function (fileName) {\n const [, __dirname] = filedirname();\n\n return resolve(__dirname, '..', 'templates', fileName);\n}\n","import {promises as fs} from 'node:fs';\n\nimport determinePathToTemplateFile from '../template-path.js';\n\nexport default function ({projectRoot}) {\n return fs.copyFile(determinePathToTemplateFile('editorconfig.ini'), `${projectRoot}/.editorconfig`);\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function editorconfigInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.editorconfig`);\n}\n","export default function ({visibility}) {\n if ('Public' === visibility) {\n return {\n badges: {\n contribution: {\n PRs: {\n text: 'PRs Welcome',\n link: 'https://makeapullrequest.com',\n img: 'https://img.shields.io/badge/PRs-welcome-brightgreen.svg'\n }\n }\n }\n };\n }\n\n return {};\n}\n","import {applyEnhancers} from '@form8ion/core';\nimport {lift as liftReadme} from '@form8ion/readme';\nimport * as gitPlugin from '@form8ion/git';\n\nimport {scaffold as scaffoldEditorconfig, test as editorconfigInUse} from './editorconfig/index.js';\nimport * as licensePlugin from './license/index.js';\n\nexport default async function lift({projectRoot, results, enhancers, vcs, dependencies}) {\n if (!await editorconfigInUse({projectRoot})) {\n await scaffoldEditorconfig({projectRoot});\n }\n\n const enhancerResults = await applyEnhancers({\n results,\n enhancers: {...enhancers, gitPlugin, licensePlugin},\n options: {projectRoot, vcs},\n dependencies\n });\n\n await liftReadme({projectRoot, results: enhancerResults});\n\n return enhancerResults;\n}\n","import deepmerge from 'deepmerge';\nimport {execa} from 'execa';\nimport {questionNames as coreQuestionNames} from '@form8ion/core';\nimport {scaffold as scaffoldReadme} from '@form8ion/readme';\n\nimport {scaffold as scaffoldLanguage} from './language/index.js';\nimport {scaffold as scaffoldVcs} from './vcs/index.js';\nimport {scaffold as scaffoldLicense} from './license/index.js';\nimport scaffoldDependencyUpdater from './dependency-updater/scaffolder.js';\nimport {promptForBaseDetails} from './prompts/questions.js';\nimport {validate} from './options-validator.js';\nimport {scaffold as scaffoldEditorConfig} from './editorconfig/index.js';\nimport {scaffold as scaffoldContributing} from './contributing/index.js';\nimport lift from './lift.js';\n\nexport async function scaffold(options, {prompt, logger}) {\n const projectRoot = process.cwd();\n const {plugins: {dependencyUpdaters, languages, vcsHosts = {}}} = validate(options);\n\n const {\n [coreQuestionNames.PROJECT_NAME]: projectName,\n [coreQuestionNames.LICENSE]: chosenLicense,\n [coreQuestionNames.VISIBILITY]: visibility,\n [coreQuestionNames.DESCRIPTION]: description,\n [coreQuestionNames.COPYRIGHT_YEAR]: copyrightYear,\n [coreQuestionNames.COPYRIGHT_HOLDER]: copyHolder\n } = await promptForBaseDetails(projectRoot, {prompt});\n const copyright = {year: copyrightYear, holder: copyHolder};\n\n const [vcsResults, contributing, license] = await Promise.all([\n scaffoldVcs({projectRoot, projectName, vcsHosts, visibility, description}, {prompt, logger}),\n scaffoldContributing({visibility}),\n scaffoldLicense({projectRoot, license: chosenLicense, copyright}, {logger}),\n scaffoldReadme({projectName, projectRoot, description}),\n scaffoldEditorConfig({projectRoot})\n ]);\n\n const dependencyUpdaterResults = vcsResults.vcs && await scaffoldDependencyUpdater(\n dependencyUpdaters,\n {projectRoot},\n {prompt}\n );\n\n const language = await scaffoldLanguage(\n languages,\n {projectRoot, projectName, vcs: vcsResults.vcs, visibility, license: chosenLicense || 'UNLICENSED', description},\n {prompt}\n );\n\n const mergedResults = deepmerge.all([\n license,\n language,\n dependencyUpdaterResults,\n contributing,\n vcsResults\n ].filter(Boolean));\n\n await lift({\n projectRoot,\n vcs: vcsResults.vcs,\n results: mergedResults,\n enhancers: {...dependencyUpdaters, ...languages, ...vcsHosts}\n });\n\n if (language && language.verificationCommand) {\n logger.info('Verifying the generated project');\n\n const subprocess = execa(language.verificationCommand, {shell: true});\n subprocess.stdout.pipe(process.stdout);\n await subprocess;\n }\n\n return mergedResults;\n}\n","import {ids} from './prompts/index.js';\n\nexport * from './scaffolder.js';\nexport {default as lift} from './lift.js';\nexport const promptConstants = {ids};\n\nexport {questionNames} from './prompts/index.js';\n"],"names":["questionNames","coreQuestionNames","projectScaffolderQuestionNames","promptForLanguageDetails","promptForVcsHostDetails","repositoryShouldBeCreated","alreadyVersionedByGit","scaffoldGit","fs","scaffoldEditorconfig","liftReadme","scaffoldReadme"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/prompts/question-names.js","../src/language/prompt.js","../src/language/scaffolder.js","../src/vcs/prompt.js","../src/vcs/git/remotes.js","../src/vcs/host/prompt.js","../src/vcs/host/scaffolder.js","../src/vcs/scaffolder.js","../src/license/scaffolder.js","../src/license/tester.js","../src/license/lifter.js","../src/dependency-updater/prompt.js","../src/dependency-updater/scaffolder.js","../src/ci-provider/prompt.js","../src/ci-provider/scaffolder.js","../src/prompts/questions.js","../src/language/schema.js","../src/vcs/host/schema.js","../src/dependency-updater/schema.js","../src/ci-provider/schema.js","../src/options-validator.js","../src/template-path.js","../src/editorconfig/scaffolder.js","../src/editorconfig/tester.js","../src/contributing/scaffolder.js","../src/lift.js","../src/scaffolder.js","../src/prompts/index.js"],"sourcesContent":["import {questionNames as coreQuestionNames} from '@form8ion/core';\n\nexport const questionNames = {\n BASE_DETAILS: coreQuestionNames,\n GIT_REPOSITORY: {\n GIT_REPO: 'gitRepo'\n },\n REPOSITORY_HOST: {\n REPO_HOST: 'repoHost',\n REPO_OWNER: 'repoOwner'\n },\n PROJECT_LANGUAGE: {\n PROJECT_LANGUAGE: 'projectLanguage'\n },\n DEPENDENCY_UPDATER: {\n DEPENDENCY_UPDATER: 'dependencyUpdater'\n },\n CI_PROVIDER: {\n CI_PROVIDER: 'ciProvider'\n }\n};\n","import {questionNames} from '../prompts/question-names.js';\n\nexport const PROJECT_LANGUAGE_PROMPT_ID = 'PROJECT_LANGUAGE';\n\nconst {PROJECT_LANGUAGE} = questionNames.PROJECT_LANGUAGE;\n\nexport default function promptForProjectLanguage(languages, {prompt}) {\n return prompt({\n id: PROJECT_LANGUAGE_PROMPT_ID,\n questions: [{\n name: PROJECT_LANGUAGE,\n type: 'list',\n message: 'What type of project is this?',\n choices: [...Object.keys(languages), 'Other']\n }]\n });\n}\n","import {questionNames} from '../prompts/question-names.js';\nimport promptForLanguageDetails from './prompt.js';\n\nconst {PROJECT_LANGUAGE} = questionNames.PROJECT_LANGUAGE;\n\nexport default async function scaffoldLanguage(languagePlugins, options, {prompt}) {\n const {[PROJECT_LANGUAGE]: chosenLanguage} = await promptForLanguageDetails(languagePlugins, {prompt});\n\n const plugin = languagePlugins[chosenLanguage];\n\n if (plugin) return plugin.scaffold(options);\n\n return undefined;\n}\n","import {questionNames} from '../prompts/question-names.js';\n\nexport const GIT_REPOSITORY_PROMPT_ID = 'GIT_REPOSITORY';\n\nconst {GIT_REPO} = questionNames.GIT_REPOSITORY;\n\nexport default async function promptForRepoCreation({prompt}) {\n const {[GIT_REPO]: gitRepoShouldBeCreated} = await prompt({\n id: GIT_REPOSITORY_PROMPT_ID,\n questions: [{\n name: GIT_REPO,\n type: 'confirm',\n default: true,\n message: 'Should a git repository be initialized?'\n }]\n });\n\n return gitRepoShouldBeCreated;\n}\n","import {simpleGit} from 'simple-git';\nimport parseGitUrl from 'git-url-parse';\n\nasync function getExistingRemotes(git) {\n try {\n return await git.listRemote();\n } catch (e) {\n if ('fatal: No remote configured to list refs from.\\n' === e.message) {\n return [];\n }\n\n throw e;\n }\n}\n\nexport async function determineExistingVcsDetails({projectRoot}) {\n const git = simpleGit({baseDir: projectRoot});\n const remoteOrigin = await git.remote(['get-url', 'origin']);\n const {owner, name, host} = parseGitUrl(remoteOrigin.trimEnd());\n\n return {vcs: {owner, name, host: 'github.com' === host ? 'github' : host}};\n}\n\nexport async function defineRemoteOrigin(projectRoot, sshUrl, {logger}) {\n if (!sshUrl) {\n logger.warn('URL not available to configure remote `origin`');\n\n return {nextSteps: []};\n }\n\n const git = simpleGit({baseDir: projectRoot});\n const existingRemotes = await getExistingRemotes(git);\n\n if (existingRemotes.includes('origin')) {\n logger.warn('The `origin` remote is already defined for this repository');\n\n return {nextSteps: []};\n }\n\n // info('Setting the local `master` branch to track `origin/master`');\n //\n // await gitBranch.setUpstream(\n // await gitBranch.lookup(repository, 'master', gitBranch.BRANCH.LOCAL),\n // 'origin/master'\n // );\n\n await git.addRemote('origin', sshUrl);\n\n return {nextSteps: [{summary: 'Set local `master` branch to track upstream `origin/master`'}]};\n}\n","import {questionNames} from '../../prompts/question-names.js';\n\nexport const REPOSITORY_HOST_PROMPT_ID = 'REPOSITORY_HOST';\n\nconst {REPO_HOST} = questionNames.REPOSITORY_HOST;\n\nexport default async function promptForVcsHostChoice(hosts, {prompt}) {\n const answers = await prompt({\n id: REPOSITORY_HOST_PROMPT_ID,\n questions: [{\n name: REPO_HOST,\n type: 'list',\n message: 'Where will the repository be hosted?',\n choices: Object.keys(hosts)\n }]\n });\n const host = hosts[answers[REPO_HOST]];\n\n return {...answers, ...host};\n}\n","import {questionNames} from '../../prompts/question-names.js';\nimport promptForVcsHostDetails from './prompt.js';\n\nconst {REPO_HOST} = questionNames.REPOSITORY_HOST;\n\nexport default async function scaffoldVcsHost(hosts, options, {prompt}) {\n const {[REPO_HOST]: chosenHost} = await promptForVcsHostDetails(hosts, {prompt});\n\n const lowercasedHosts = Object.fromEntries(\n Object.entries(hosts).map(([name, details]) => [name.toLowerCase(), details])\n );\n const host = lowercasedHosts[chosenHost.toLowerCase()];\n\n if (host) return host.scaffold(options);\n\n return {vcs: {}};\n}\n","import {scaffold as scaffoldGit, test as alreadyVersionedByGit} from '@form8ion/git';\n\nimport repositoryShouldBeCreated from './prompt.js';\nimport {determineExistingVcsDetails, defineRemoteOrigin} from './git/index.js';\nimport {scaffold as scaffoldVcsHost} from './host/index.js';\n\nexport default async function scaffoldVcs(\n {projectRoot, projectName, vcsHosts, visibility, description},\n {prompt, logger}\n) {\n if (await repositoryShouldBeCreated({prompt})) {\n if (await alreadyVersionedByGit({projectRoot})) {\n logger.info('Git repository already exists');\n\n return determineExistingVcsDetails({projectRoot});\n }\n\n const [{vcs: {host, owner, name, sshUrl}}] = await Promise.all([\n scaffoldVcsHost(vcsHosts, {projectName, projectRoot, description, visibility}, {prompt}),\n scaffoldGit({projectRoot})\n ]);\n\n const remoteOriginResults = await defineRemoteOrigin(projectRoot, sshUrl, {logger});\n\n return {\n vcs: {host, owner, name},\n nextSteps: [{summary: 'Commit scaffolded files'}, ...remoteOriginResults.nextSteps]\n };\n }\n\n return {};\n}\n","import {promises as fs} from 'fs';\nimport wrap from 'word-wrap';\nimport mustache from 'mustache';\n// eslint-disable-next-line import/extensions\nimport spdxLicenseList from 'spdx-license-list/full.js';\n\nexport default async function scaffoldLicense({projectRoot, license, copyright}, {logger}) {\n if (license) {\n logger.info('Generating License');\n\n const licenseContent = spdxLicenseList[license].licenseText;\n\n await fs.writeFile(\n `${projectRoot}/LICENSE`,\n `${wrap(\n mustache.render(licenseContent, {year: copyright.year, 'copyright holders': copyright.holder}, {}, ['<', '>']),\n {width: 80, indent: ''}\n )}\\n`\n );\n }\n\n return {};\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function licenseDefined({projectRoot}) {\n return fileExists(`${projectRoot}/LICENSE`);\n}\n","function repositoryIsHostedOnGithub(vcs) {\n return vcs && 'github' === vcs.host;\n}\n\nexport default function liftLicense({vcs}) {\n return {\n ...repositoryIsHostedOnGithub(vcs) && {\n badges: {\n consumer: {\n license: {\n link: 'LICENSE',\n img: `https://img.shields.io/github/license/${vcs.owner}/${vcs.name}.svg?logo=opensourceinitiative`,\n text: 'license'\n }\n }\n }\n }\n };\n}\n","import {questionNames} from '../prompts/question-names.js';\n\nexport const DEPENDENCY_UPDATER_PROMPT_ID = 'DEPENDENCY_UPDATER';\n\nconst {DEPENDENCY_UPDATER} = questionNames.DEPENDENCY_UPDATER;\n\nexport async function promptForDependencyUpdaterChoice(updaters, {prompt}) {\n return prompt({\n id: DEPENDENCY_UPDATER_PROMPT_ID,\n questions: [{\n name: DEPENDENCY_UPDATER,\n type: 'list',\n message: 'Which dependency-update service do you want to manage this project?',\n choices: [...Object.keys(updaters), 'Other']\n }]\n });\n}\n","import {questionNames} from '../prompts/question-names.js';\nimport {promptForDependencyUpdaterChoice} from './prompt.js';\n\nconst {DEPENDENCY_UPDATER} = questionNames.DEPENDENCY_UPDATER;\n\nexport default async function scaffoldDependencyUpdater(plugins, options, {prompt}) {\n if (!Object.keys(plugins).length) return undefined;\n\n const plugin = plugins[\n (await promptForDependencyUpdaterChoice(plugins, {prompt}))[DEPENDENCY_UPDATER]\n ];\n\n if (plugin) return plugin.scaffold(options);\n\n return undefined;\n}\n","import {questionNames} from '../prompts/question-names.js';\n\nexport const CI_PROVIDER_PROMPT_ID = 'CI_PROVIDER';\n\nconst {CI_PROVIDER} = questionNames.CI_PROVIDER;\n\nexport default function promptForCiProvider(providers, {prompt}) {\n return prompt({\n id: CI_PROVIDER_PROMPT_ID,\n questions: [{\n name: CI_PROVIDER,\n type: 'list',\n message: 'Which CI service do you want use with this project?',\n choices: [...Object.keys(providers), 'Other']\n }]\n });\n}\n","import {questionNames} from '../prompts/question-names.js';\nimport promptForCiProvider from './prompt.js';\n\nconst {CI_PROVIDER} = questionNames.CI_PROVIDER;\n\nexport default async function scaffoldCiProvider(plugins, options, {prompt}) {\n if (!Object.keys(plugins).length) return undefined;\n\n const {projectRoot} = options;\n\n const qualifiedPlugins = Object.fromEntries(\n (await Promise.all(\n Object.entries(plugins).map(async ([name, plugin]) => [name, plugin, await plugin.qualify({projectRoot})])\n )).filter(([, , qualified]) => qualified).map(([name, plugin]) => [name, plugin])\n );\n\n const chosen = (await promptForCiProvider(qualifiedPlugins, {prompt}))[CI_PROVIDER];\n const plugin = qualifiedPlugins[chosen];\n\n if (plugin) return plugin.scaffold(options);\n\n return {};\n}\n","import {questionsForBaseDetails} from '@form8ion/core';\n\nexport const BASE_DETAILS_PROMPT_ID = 'BASE_DETAILS';\n\nexport function promptForBaseDetails(projectRoot, {prompt}) {\n return prompt({\n id: BASE_DETAILS_PROMPT_ID,\n questions: questionsForBaseDetails(projectRoot)\n });\n}\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(/^/, optionsSchemas.form8ionPlugin);\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(joi.string(), optionsSchemas.form8ionPlugin).default({});\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport default joi.object().pattern(joi.string(), optionsSchemas.form8ionPlugin).default({});\n","import {validateOptions} from '@form8ion/core';\nimport joi from 'joi';\n\nimport languagePluginsSchema from './language/schema.js';\nimport vcsHostPluginsSchema from './vcs/host/schema.js';\nimport dependencyUpdaterPluginsSchema from './dependency-updater/schema.js';\nimport ciProviderPluginsSchema from './ci-provider/schema.js';\n\nexport function validate(options) {\n return validateOptions(joi.object({\n plugins: joi.object({\n dependencyUpdaters: dependencyUpdaterPluginsSchema,\n languages: languagePluginsSchema,\n vcsHosts: vcsHostPluginsSchema,\n ciProviders: ciProviderPluginsSchema\n })\n }), options) || {};\n}\n","import {resolve} from 'path';\nimport filedirname from 'filedirname';\n\nexport default function determinePathToTemplate(fileName) {\n const [, __dirname] = filedirname();\n\n return resolve(__dirname, '..', 'templates', fileName);\n}\n","import {promises as fs} from 'node:fs';\n\nimport determinePathToTemplateFile from '../template-path.js';\n\nexport default function scaffoldEditorConfig({projectRoot}) {\n return fs.copyFile(determinePathToTemplateFile('editorconfig.ini'), `${projectRoot}/.editorconfig`);\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function editorconfigInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.editorconfig`);\n}\n","export default function scaffoldContribution({visibility}) {\n if ('Public' === visibility) {\n return {\n badges: {\n contribution: {\n PRs: {\n text: 'PRs Welcome',\n link: 'https://makeapullrequest.com',\n img: 'https://img.shields.io/badge/PRs-welcome-brightgreen.svg'\n }\n }\n }\n };\n }\n\n return {};\n}\n","import {applyEnhancers} from '@form8ion/core';\nimport {lift as liftReadme} from '@form8ion/readme';\nimport * as gitPlugin from '@form8ion/git';\n\nimport {scaffold as scaffoldEditorconfig, test as editorconfigInUse} from './editorconfig/index.js';\nimport * as licensePlugin from './license/index.js';\n\nexport default async function lift({projectRoot, results, enhancers, vcs, dependencies}) {\n if (!await editorconfigInUse({projectRoot})) {\n await scaffoldEditorconfig({projectRoot});\n }\n\n const enhancerResults = await applyEnhancers({\n results,\n enhancers: {...enhancers, gitPlugin, licensePlugin},\n options: {projectRoot, vcs},\n dependencies\n });\n\n await liftReadme({projectRoot, results: enhancerResults});\n\n return enhancerResults;\n}\n","import deepmerge from 'deepmerge';\nimport {execa} from 'execa';\nimport {questionNames as coreQuestionNames} from '@form8ion/core';\nimport {scaffold as scaffoldReadme} from '@form8ion/readme';\n\nimport {scaffold as scaffoldLanguage} from './language/index.js';\nimport {scaffold as scaffoldVcs} from './vcs/index.js';\nimport {scaffold as scaffoldLicense} from './license/index.js';\nimport scaffoldDependencyUpdater from './dependency-updater/scaffolder.js';\nimport {scaffold as scaffoldCiProvider} from './ci-provider/index.js';\nimport {promptForBaseDetails} from './prompts/questions.js';\nimport {validate} from './options-validator.js';\nimport {scaffold as scaffoldEditorConfig} from './editorconfig/index.js';\nimport {scaffold as scaffoldContributing} from './contributing/index.js';\nimport lift from './lift.js';\n\nexport async function scaffold(options, {prompt, logger}) {\n const projectRoot = process.cwd();\n const {plugins: {dependencyUpdaters, ciProviders, languages, vcsHosts = {}}} = validate(options);\n\n const {\n [coreQuestionNames.PROJECT_NAME]: projectName,\n [coreQuestionNames.LICENSE]: chosenLicense,\n [coreQuestionNames.VISIBILITY]: visibility,\n [coreQuestionNames.DESCRIPTION]: description,\n [coreQuestionNames.COPYRIGHT_YEAR]: copyrightYear,\n [coreQuestionNames.COPYRIGHT_HOLDER]: copyHolder\n } = await promptForBaseDetails(projectRoot, {prompt});\n const copyright = {year: copyrightYear, holder: copyHolder};\n\n const [vcsResults, contributing, license] = await Promise.all([\n scaffoldVcs({projectRoot, projectName, vcsHosts, visibility, description}, {prompt, logger}),\n scaffoldContributing({visibility}),\n scaffoldLicense({projectRoot, license: chosenLicense, copyright}, {logger}),\n scaffoldReadme({projectName, projectRoot, description}),\n scaffoldEditorConfig({projectRoot})\n ]);\n\n const [dependencyUpdaterResults] = vcsResults.vcs\n ? await Promise.all([\n scaffoldDependencyUpdater(dependencyUpdaters, {projectRoot}, {prompt}),\n scaffoldCiProvider(ciProviders, {projectRoot}, {prompt})\n ])\n : [];\n\n const language = await scaffoldLanguage(\n languages,\n {projectRoot, projectName, vcs: vcsResults.vcs, visibility, license: chosenLicense || 'UNLICENSED', description},\n {prompt}\n );\n\n const mergedResults = deepmerge.all([\n license,\n language,\n dependencyUpdaterResults,\n contributing,\n vcsResults\n ].filter(Boolean));\n\n await lift({\n projectRoot,\n vcs: vcsResults.vcs,\n results: mergedResults,\n enhancers: {...dependencyUpdaters, ...languages, ...vcsHosts}\n });\n\n if (language && language.verificationCommand) {\n logger.info('Verifying the generated project');\n\n const subprocess = execa(language.verificationCommand, {shell: true});\n subprocess.stdout.pipe(process.stdout);\n await subprocess;\n }\n\n return mergedResults;\n}\n","import {BASE_DETAILS_PROMPT_ID} from './questions.js';\nimport {GIT_REPOSITORY_PROMPT_ID} from '../vcs/prompt.js';\nimport {PROJECT_LANGUAGE_PROMPT_ID} from '../language/prompt.js';\nimport {REPOSITORY_HOST_PROMPT_ID} from '../vcs/host/prompt.js';\nimport {DEPENDENCY_UPDATER_PROMPT_ID} from '../dependency-updater/prompt.js';\nimport {CI_PROVIDER_PROMPT_ID} from '../ci-provider/prompt.js';\nimport {questionNames} from './question-names.js';\n\nexport const ids = {\n BASE_DETAILS: BASE_DETAILS_PROMPT_ID,\n GIT_REPOSITORY: GIT_REPOSITORY_PROMPT_ID,\n REPOSITORY_HOST: REPOSITORY_HOST_PROMPT_ID,\n PROJECT_LANGUAGE: PROJECT_LANGUAGE_PROMPT_ID,\n DEPENDENCY_UPDATER: DEPENDENCY_UPDATER_PROMPT_ID,\n CI_PROVIDER: CI_PROVIDER_PROMPT_ID\n};\n\nexport {questionNames};\n\nexport const constants = {ids, questionNames};\n"],"names":["coreQuestionNames","PROJECT_LANGUAGE","promptForLanguageDetails","REPO_HOST","promptForVcsHostDetails","repositoryShouldBeCreated","alreadyVersionedByGit","scaffoldGit","fs","DEPENDENCY_UPDATER","CI_PROVIDER","determinePathToTemplateFile","scaffoldEditorconfig","liftReadme","scaffoldContributing","scaffoldReadme"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@form8ion/project",
|
|
3
3
|
"description": "opinionated scaffolder for new projects",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "22.0.0-beta.
|
|
5
|
+
"version": "22.0.0-beta.15",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"engines": {
|
|
8
8
|
"node": "^22.21.0 || >=24.12"
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"access": "public",
|
|
56
56
|
"provenance": true
|
|
57
57
|
},
|
|
58
|
-
"packageManager": "npm@11.
|
|
58
|
+
"packageManager": "npm@11.13.0+sha512.7119a16a0843580d65160977520e3f5710c974f04afd4fad36d9eb97d917ba716a856c35c78c4be6dc64367eeaccfb957ef5ce997ca31e9330b2e936ba2b1b92",
|
|
59
59
|
"config": {
|
|
60
60
|
"commitizen": {
|
|
61
61
|
"path": "./node_modules/cz-conventional-changelog"
|
|
@@ -78,14 +78,14 @@
|
|
|
78
78
|
"write-yaml": "1.0.0"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@cucumber/cucumber": "12.
|
|
82
|
-
"@form8ion/commitlint-config": "2.0.
|
|
83
|
-
"@form8ion/eslint-config": "7.0.
|
|
81
|
+
"@cucumber/cucumber": "12.8.2",
|
|
82
|
+
"@form8ion/commitlint-config": "2.0.13",
|
|
83
|
+
"@form8ion/eslint-config": "7.1.0-beta.1",
|
|
84
84
|
"@form8ion/eslint-config-cucumber": "1.4.1",
|
|
85
85
|
"@form8ion/eslint-config-vitest": "1.1.0",
|
|
86
86
|
"@form8ion/remark-lint-preset": "6.0.7",
|
|
87
87
|
"@rollup/plugin-node-resolve": "16.0.3",
|
|
88
|
-
"@travi/any": "3.
|
|
88
|
+
"@travi/any": "3.3.0",
|
|
89
89
|
"c8": "11.0.0",
|
|
90
90
|
"chai": "6.2.2",
|
|
91
91
|
"cross-env": "10.1.0",
|
|
@@ -105,12 +105,12 @@
|
|
|
105
105
|
"remark-toc": "9.0.0",
|
|
106
106
|
"remark-usage": "11.0.1",
|
|
107
107
|
"rimraf": "6.1.3",
|
|
108
|
-
"rollup": "4.60.
|
|
108
|
+
"rollup": "4.60.2",
|
|
109
109
|
"rollup-plugin-auto-external": "2.0.0",
|
|
110
|
-
"sinon": "21.1.
|
|
110
|
+
"sinon": "21.1.2",
|
|
111
111
|
"testdouble": "3.20.2",
|
|
112
112
|
"unist-util-find": "3.0.0",
|
|
113
|
-
"vitest": "4.1.
|
|
113
|
+
"vitest": "4.1.5",
|
|
114
114
|
"vitest-when": "0.10.0"
|
|
115
115
|
}
|
|
116
116
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {default as scaffold} from './scaffolder.js';
|