@form8ion/project 22.0.0-beta.1 → 22.0.0-beta.10
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 +29 -24
- package/lib/index.js +106 -83
- package/lib/index.js.map +1 -1
- package/package.json +24 -26
- package/src/dependency-updater/prompt.js +12 -8
- package/src/dependency-updater/prompt.test.js +13 -16
- package/src/dependency-updater/scaffolder.js +2 -2
- package/src/dependency-updater/scaffolder.test.js +7 -11
- package/src/index.js +4 -6
- package/src/language/prompt.js +12 -9
- package/src/language/prompt.test.js +13 -16
- package/src/language/scaffolder.js +2 -2
- package/src/language/scaffolder.test.js +3 -3
- package/src/options-validator.js +0 -2
- package/src/options-validator.test.js +1 -5
- package/src/prompts/index.js +21 -0
- package/src/prompts/questions.js +7 -3
- package/src/prompts/questions.test.js +5 -6
- package/src/scaffolder.js +9 -10
- package/src/scaffolder.test.js +20 -30
- package/src/vcs/git/remotes.js +3 -3
- package/src/vcs/git/remotes.test.js +30 -11
- package/src/vcs/host/prompt.js +12 -9
- package/src/vcs/host/prompt.test.js +27 -23
- package/src/vcs/host/scaffolder.js +2 -2
- package/src/vcs/host/scaffolder.test.js +5 -5
- package/src/vcs/prompt.js +8 -8
- package/src/vcs/prompt.test.js +12 -11
- package/src/vcs/scaffolder.js +4 -8
- package/src/vcs/scaffolder.test.js +8 -8
- package/src/options-schemas.js +0 -3
- package/src/options-schemas.test.js +0 -20
package/README.md
CHANGED
|
@@ -71,43 +71,48 @@ a wrapper.
|
|
|
71
71
|
#### Import
|
|
72
72
|
|
|
73
73
|
```javascript
|
|
74
|
+
import {ungroupObject} from '@form8ion/core';
|
|
74
75
|
import {lift, questionNames, scaffold} from '@form8ion/project';
|
|
75
76
|
```
|
|
76
77
|
|
|
77
78
|
#### Execute
|
|
78
79
|
|
|
79
80
|
```javascript
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
[questionNames.LICENSE]: 'MIT',
|
|
84
|
-
[questionNames.VISIBILITY]: 'Public',
|
|
85
|
-
[questionNames.DESCRIPTION]: 'My project',
|
|
86
|
-
[questionNames.GIT_REPO]: false,
|
|
87
|
-
[questionNames.COPYRIGHT_HOLDER]: 'John Smith',
|
|
88
|
-
[questionNames.COPYRIGHT_YEAR]: '2022',
|
|
89
|
-
[questionNames.PROJECT_LANGUAGE]: 'foo'
|
|
81
|
+
const plugins = {
|
|
82
|
+
dependencyUpdaters: {
|
|
83
|
+
bar: {scaffold: options => options}
|
|
90
84
|
},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
vcsHosts: {
|
|
99
|
-
baz: {
|
|
100
|
-
scaffold: options => options,
|
|
101
|
-
prompt: () => ({repoOwner: 'form8ion'})
|
|
102
|
-
}
|
|
85
|
+
languages: {
|
|
86
|
+
foo: {scaffold: options => options}
|
|
87
|
+
},
|
|
88
|
+
vcsHosts: {
|
|
89
|
+
baz: {
|
|
90
|
+
scaffold: options => options,
|
|
91
|
+
prompt: () => ({repoOwner: 'form8ion'})
|
|
103
92
|
}
|
|
104
93
|
}
|
|
105
|
-
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
await scaffold(
|
|
97
|
+
{plugins},
|
|
98
|
+
{
|
|
99
|
+
prompt: () => ({
|
|
100
|
+
[questionNames.PROJECT_NAME]: 'my-project',
|
|
101
|
+
[questionNames.LICENSE]: 'MIT',
|
|
102
|
+
[questionNames.VISIBILITY]: 'Public',
|
|
103
|
+
[questionNames.DESCRIPTION]: 'My project',
|
|
104
|
+
[questionNames.GIT_REPO]: false,
|
|
105
|
+
[questionNames.COPYRIGHT_HOLDER]: 'John Smith',
|
|
106
|
+
[questionNames.COPYRIGHT_YEAR]: '2022',
|
|
107
|
+
[questionNames.PROJECT_LANGUAGE]: 'foo'
|
|
108
|
+
})
|
|
109
|
+
}
|
|
110
|
+
);
|
|
106
111
|
|
|
107
112
|
await lift({
|
|
108
113
|
projectRoot: process.cwd(),
|
|
109
114
|
results: {},
|
|
110
|
-
enhancers:
|
|
115
|
+
enhancers: ungroupObject(plugins),
|
|
111
116
|
vcs: {}
|
|
112
117
|
});
|
|
113
118
|
```
|
package/lib/index.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { questionsForBaseDetails, questionNames as questionNames$2, fileExists, optionsSchemas, validateOptions, applyEnhancers } from '@form8ion/core';
|
|
2
2
|
import deepmerge from 'deepmerge';
|
|
3
3
|
import { execa } from 'execa';
|
|
4
|
-
import { reportResults } from '@form8ion/results-reporter';
|
|
5
4
|
import { lift as lift$1, scaffold as scaffold$2 } from '@form8ion/readme';
|
|
6
5
|
import { warn, info } from '@travi/cli-messages';
|
|
7
|
-
import { prompt } from '@form8ion/overridable-prompts';
|
|
8
6
|
import * as gitPlugin from '@form8ion/git';
|
|
9
7
|
import { test, scaffold as scaffold$1 } from '@form8ion/git';
|
|
10
8
|
import { simpleGit } from 'simple-git';
|
|
11
|
-
import
|
|
9
|
+
import parseGitUrl from 'git-url-parse';
|
|
12
10
|
import { promises } from 'fs';
|
|
13
11
|
import wrap from 'word-wrap';
|
|
14
12
|
import mustache from 'mustache';
|
|
@@ -18,6 +16,15 @@ import { promises as promises$1 } from 'node:fs';
|
|
|
18
16
|
import { resolve } from 'path';
|
|
19
17
|
import filedirname from 'filedirname';
|
|
20
18
|
|
|
19
|
+
const BASE_DETAILS_PROMPT_ID = 'BASE_DETAILS';
|
|
20
|
+
|
|
21
|
+
function promptForBaseDetails(projectRoot, {prompt}) {
|
|
22
|
+
return prompt({
|
|
23
|
+
id: BASE_DETAILS_PROMPT_ID,
|
|
24
|
+
questions: questionsForBaseDetails(projectRoot)
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
21
28
|
const questionNames$1 = {
|
|
22
29
|
GIT_REPO: 'gitRepo',
|
|
23
30
|
REPO_HOST: 'repoHost',
|
|
@@ -26,37 +33,88 @@ const questionNames$1 = {
|
|
|
26
33
|
DEPENDENCY_UPDATER: 'dependencyUpdater'
|
|
27
34
|
};
|
|
28
35
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
const GIT_REPOSITORY_PROMPT_ID = 'GIT_REPOSITORY';
|
|
37
|
+
|
|
38
|
+
async function promptForRepoCreation({prompt}) {
|
|
39
|
+
const {[questionNames$1.GIT_REPO]: gitRepoShouldBeCreated} = await prompt({
|
|
40
|
+
id: GIT_REPOSITORY_PROMPT_ID,
|
|
41
|
+
questions: [{
|
|
42
|
+
name: questionNames$1.GIT_REPO,
|
|
43
|
+
type: 'confirm',
|
|
44
|
+
default: true,
|
|
45
|
+
message: 'Should a git repository be initialized?'
|
|
46
|
+
}]
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
return gitRepoShouldBeCreated;
|
|
36
50
|
}
|
|
37
51
|
|
|
38
|
-
|
|
39
|
-
|
|
52
|
+
const PROJECT_LANGUAGE_PROMPT_ID = 'PROJECT_LANGUAGE';
|
|
53
|
+
|
|
54
|
+
function promptForProjectLanguage(languages, {prompt}) {
|
|
55
|
+
return prompt({
|
|
56
|
+
id: PROJECT_LANGUAGE_PROMPT_ID,
|
|
57
|
+
questions: [{
|
|
58
|
+
name: questionNames$1.PROJECT_LANGUAGE,
|
|
59
|
+
type: 'list',
|
|
60
|
+
message: 'What type of project is this?',
|
|
61
|
+
choices: [...Object.keys(languages), 'Other']
|
|
62
|
+
}]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
40
65
|
|
|
41
|
-
|
|
66
|
+
const REPOSITORY_HOST_PROMPT_ID = 'REPOSITORY_HOST';
|
|
67
|
+
|
|
68
|
+
async function promptForVcsHostChoice(hosts, {prompt}) {
|
|
69
|
+
const answers = await prompt({
|
|
70
|
+
id: REPOSITORY_HOST_PROMPT_ID,
|
|
71
|
+
questions: [{
|
|
72
|
+
name: questionNames$1.REPO_HOST,
|
|
73
|
+
type: 'list',
|
|
74
|
+
message: 'Where will the repository be hosted?',
|
|
75
|
+
choices: Object.keys(hosts)
|
|
76
|
+
}]
|
|
77
|
+
});
|
|
78
|
+
const host = hosts[answers[questionNames$1.REPO_HOST]];
|
|
42
79
|
|
|
43
|
-
|
|
80
|
+
return {...answers, ...host};
|
|
81
|
+
}
|
|
44
82
|
|
|
45
|
-
|
|
83
|
+
const DEPENDENCY_UPDATER_PROMPT_ID = 'DEPENDENCY_UPDATER';
|
|
84
|
+
|
|
85
|
+
async function promptForDependencyUpdaterChoice(updaters, {prompt}) {
|
|
86
|
+
return prompt({
|
|
87
|
+
id: DEPENDENCY_UPDATER_PROMPT_ID,
|
|
88
|
+
questions: [{
|
|
89
|
+
name: questionNames$1.DEPENDENCY_UPDATER,
|
|
90
|
+
type: 'list',
|
|
91
|
+
message: 'Which dependency-update service do you want to manage this project?',
|
|
92
|
+
choices: [...Object.keys(updaters), 'Other']
|
|
93
|
+
}]
|
|
94
|
+
});
|
|
46
95
|
}
|
|
47
96
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}],
|
|
56
|
-
decisions
|
|
57
|
-
);
|
|
97
|
+
const ids = {
|
|
98
|
+
BASE_DETAILS: BASE_DETAILS_PROMPT_ID,
|
|
99
|
+
GIT_REPOSITORY: GIT_REPOSITORY_PROMPT_ID,
|
|
100
|
+
REPOSITORY_HOST: REPOSITORY_HOST_PROMPT_ID,
|
|
101
|
+
PROJECT_LANGUAGE: PROJECT_LANGUAGE_PROMPT_ID,
|
|
102
|
+
DEPENDENCY_UPDATER: DEPENDENCY_UPDATER_PROMPT_ID
|
|
103
|
+
};
|
|
58
104
|
|
|
59
|
-
|
|
105
|
+
const questionNames = {
|
|
106
|
+
...questionNames$2,
|
|
107
|
+
...questionNames$1
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
async function scaffoldLanguage (languagePlugins, options, {prompt}) {
|
|
111
|
+
const {[questionNames$1.PROJECT_LANGUAGE]: chosenLanguage} = await promptForProjectLanguage(languagePlugins, {prompt});
|
|
112
|
+
|
|
113
|
+
const plugin = languagePlugins[chosenLanguage];
|
|
114
|
+
|
|
115
|
+
if (plugin) return plugin.scaffold(options);
|
|
116
|
+
|
|
117
|
+
return undefined;
|
|
60
118
|
}
|
|
61
119
|
|
|
62
120
|
async function getExistingRemotes(git) {
|
|
@@ -74,9 +132,9 @@ async function getExistingRemotes(git) {
|
|
|
74
132
|
async function determineExistingVcsDetails({projectRoot}) {
|
|
75
133
|
const git = simpleGit({baseDir: projectRoot});
|
|
76
134
|
const remoteOrigin = await git.remote(['get-url', 'origin']);
|
|
77
|
-
const {
|
|
135
|
+
const {owner, name, host} = parseGitUrl(remoteOrigin.trimEnd());
|
|
78
136
|
|
|
79
|
-
return {vcs: {owner
|
|
137
|
+
return {vcs: {owner, name, host: 'github.com' === host ? 'github' : host}};
|
|
80
138
|
}
|
|
81
139
|
|
|
82
140
|
async function defineRemoteOrigin(projectRoot, sshUrl) {
|
|
@@ -107,20 +165,8 @@ async function defineRemoteOrigin(projectRoot, sshUrl) {
|
|
|
107
165
|
return {nextSteps: [{summary: 'Set local `master` branch to track upstream `origin/master`'}]};
|
|
108
166
|
}
|
|
109
167
|
|
|
110
|
-
async function
|
|
111
|
-
const
|
|
112
|
-
name: questionNames$1.REPO_HOST,
|
|
113
|
-
type: 'list',
|
|
114
|
-
message: 'Where will the repository be hosted?',
|
|
115
|
-
choices: Object.keys(hosts)
|
|
116
|
-
}], decisions);
|
|
117
|
-
const host = hosts[answers[questionNames$1.REPO_HOST]];
|
|
118
|
-
|
|
119
|
-
return {...answers, ...host};
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
async function scaffoldVcsHost(hosts, decisions, options) {
|
|
123
|
-
const {[questionNames$1.REPO_HOST]: chosenHost} = await promptForVcsHostDetails(hosts, decisions);
|
|
168
|
+
async function scaffoldVcsHost(hosts, options, {prompt}) {
|
|
169
|
+
const {[questionNames$1.REPO_HOST]: chosenHost} = await promptForVcsHostChoice(hosts, {prompt});
|
|
124
170
|
|
|
125
171
|
const lowercasedHosts = Object.fromEntries(
|
|
126
172
|
Object.entries(hosts).map(([name, details]) => [name.toLowerCase(), details])
|
|
@@ -132,20 +178,16 @@ async function scaffoldVcsHost(hosts, decisions, options) {
|
|
|
132
178
|
return {vcs: {}};
|
|
133
179
|
}
|
|
134
180
|
|
|
135
|
-
async function scaffoldVcs({projectRoot, projectName,
|
|
136
|
-
if (await promptForRepoCreation(
|
|
181
|
+
async function scaffoldVcs({projectRoot, projectName, vcsHosts, visibility, description}, {prompt}) {
|
|
182
|
+
if (await promptForRepoCreation({prompt})) {
|
|
137
183
|
if (await test({projectRoot})) {
|
|
138
184
|
info('Git repository already exists');
|
|
139
185
|
|
|
140
|
-
return
|
|
186
|
+
return determineExistingVcsDetails({projectRoot});
|
|
141
187
|
}
|
|
142
188
|
|
|
143
189
|
const [{vcs: {host, owner, name, sshUrl}}] = await Promise.all([
|
|
144
|
-
scaffoldVcsHost(
|
|
145
|
-
vcsHosts,
|
|
146
|
-
decisions,
|
|
147
|
-
{projectName, projectRoot, description, visibility}
|
|
148
|
-
),
|
|
190
|
+
scaffoldVcsHost(vcsHosts, {projectName, projectRoot, description, visibility}, {prompt}),
|
|
149
191
|
scaffold$1({projectRoot})
|
|
150
192
|
]);
|
|
151
193
|
|
|
@@ -209,20 +251,11 @@ var licensePlugin = /*#__PURE__*/Object.freeze({
|
|
|
209
251
|
test: tester
|
|
210
252
|
});
|
|
211
253
|
|
|
212
|
-
async function
|
|
213
|
-
return prompt([{
|
|
214
|
-
name: questionNames$1.DEPENDENCY_UPDATER,
|
|
215
|
-
type: 'list',
|
|
216
|
-
message: 'Which dependency-update service do you want to manage this project?',
|
|
217
|
-
choices: [...Object.keys(updaters), 'Other']
|
|
218
|
-
}], decisions);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
async function scaffoldDependencyUpdater (plugins, decisions, options) {
|
|
254
|
+
async function scaffoldDependencyUpdater (plugins, options, {prompt}) {
|
|
222
255
|
if (!Object.keys(plugins).length) return undefined;
|
|
223
256
|
|
|
224
257
|
const plugin = plugins[
|
|
225
|
-
(await promptForDependencyUpdaterChoice(plugins,
|
|
258
|
+
(await promptForDependencyUpdaterChoice(plugins, {prompt}))[questionNames$1.DEPENDENCY_UPDATER]
|
|
226
259
|
];
|
|
227
260
|
|
|
228
261
|
if (plugin) return plugin.scaffold(options);
|
|
@@ -230,21 +263,14 @@ async function scaffoldDependencyUpdater (plugins, decisions, options) {
|
|
|
230
263
|
return undefined;
|
|
231
264
|
}
|
|
232
265
|
|
|
233
|
-
function promptForBaseDetails(projectRoot, decisions) {
|
|
234
|
-
return prompt(questionsForBaseDetails(decisions, projectRoot), decisions);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
266
|
var languagePluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});
|
|
238
267
|
|
|
239
268
|
var vcsHostPluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin);
|
|
240
269
|
|
|
241
270
|
var dependencyUpdaterPluginsSchema = joi.object().pattern(joi.string(), optionsSchemas.form8ionPlugin).default({});
|
|
242
271
|
|
|
243
|
-
const decisionsSchema = joi.object();
|
|
244
|
-
|
|
245
272
|
function validate(options) {
|
|
246
273
|
return validateOptions(joi.object({
|
|
247
|
-
decisions: decisionsSchema,
|
|
248
274
|
plugins: joi.object({
|
|
249
275
|
dependencyUpdaters: dependencyUpdaterPluginsSchema,
|
|
250
276
|
languages: languagePluginsSchema,
|
|
@@ -294,9 +320,9 @@ async function lift ({projectRoot, results, enhancers, vcs, dependencies}) {
|
|
|
294
320
|
return enhancerResults;
|
|
295
321
|
}
|
|
296
322
|
|
|
297
|
-
async function scaffold(options) {
|
|
323
|
+
async function scaffold(options, {prompt}) {
|
|
298
324
|
const projectRoot = process.cwd();
|
|
299
|
-
const {
|
|
325
|
+
const {plugins: {dependencyUpdaters, languages, vcsHosts = {}}} = validate(options);
|
|
300
326
|
|
|
301
327
|
const {
|
|
302
328
|
[questionNames$2.PROJECT_NAME]: projectName,
|
|
@@ -305,11 +331,11 @@ async function scaffold(options) {
|
|
|
305
331
|
[questionNames$2.DESCRIPTION]: description,
|
|
306
332
|
[questionNames$2.COPYRIGHT_YEAR]: copyrightYear,
|
|
307
333
|
[questionNames$2.COPYRIGHT_HOLDER]: copyHolder
|
|
308
|
-
} = await promptForBaseDetails(projectRoot,
|
|
334
|
+
} = await promptForBaseDetails(projectRoot, {prompt});
|
|
309
335
|
const copyright = {year: copyrightYear, holder: copyHolder};
|
|
310
336
|
|
|
311
337
|
const [vcsResults, contributing, license] = await Promise.all([
|
|
312
|
-
scaffoldVcs({projectRoot, projectName,
|
|
338
|
+
scaffoldVcs({projectRoot, projectName, vcsHosts, visibility, description}, {prompt}),
|
|
313
339
|
scaffoldContributing({visibility}),
|
|
314
340
|
scaffoldLicense({projectRoot, license: chosenLicense, copyright}),
|
|
315
341
|
scaffold$2({projectName, projectRoot, description}),
|
|
@@ -318,14 +344,14 @@ async function scaffold(options) {
|
|
|
318
344
|
|
|
319
345
|
const dependencyUpdaterResults = vcsResults.vcs && await scaffoldDependencyUpdater(
|
|
320
346
|
dependencyUpdaters,
|
|
321
|
-
|
|
322
|
-
{
|
|
347
|
+
{projectRoot},
|
|
348
|
+
{prompt}
|
|
323
349
|
);
|
|
324
350
|
|
|
325
351
|
const language = await scaffoldLanguage(
|
|
326
352
|
languages,
|
|
327
|
-
|
|
328
|
-
{
|
|
353
|
+
{projectRoot, projectName, vcs: vcsResults.vcs, visibility, license: chosenLicense || 'UNLICENSED', description},
|
|
354
|
+
{prompt}
|
|
329
355
|
);
|
|
330
356
|
|
|
331
357
|
const mergedResults = deepmerge.all([
|
|
@@ -351,13 +377,10 @@ async function scaffold(options) {
|
|
|
351
377
|
await subprocess;
|
|
352
378
|
}
|
|
353
379
|
|
|
354
|
-
|
|
380
|
+
return mergedResults;
|
|
355
381
|
}
|
|
356
382
|
|
|
357
|
-
const
|
|
358
|
-
...questionNames$2,
|
|
359
|
-
...questionNames$1
|
|
360
|
-
};
|
|
383
|
+
const promptConstants = {ids};
|
|
361
384
|
|
|
362
|
-
export { lift, questionNames, scaffold };
|
|
385
|
+
export { lift, promptConstants, questionNames, scaffold };
|
|
363
386
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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/prompts/questions.js","../src/language/schema.js","../src/vcs/host/schema.js","../src/dependency-updater/schema.js","../src/options-schemas.js","../src/options-validator.js","../src/template-path.js","../src/editorconfig/scaffolder.js","../src/contributing/scaffolder.js","../src/lift.js","../src/scaffolder.js","../src/index.js"],"sourcesContent":["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 {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../prompts/question-names.js';\n\nexport default function (languages, decisions) {\n return prompt([{\n name: questionNames.PROJECT_LANGUAGE,\n type: 'list',\n message: 'What type of project is this?',\n choices: [...Object.keys(languages), 'Other']\n }], decisions);\n}\n","import {questionNames} from '../prompts/question-names.js';\nimport promptForLanguageDetails from './prompt.js';\n\nexport default async function (languagePlugins, decisions, options) {\n const {[questionNames.PROJECT_LANGUAGE]: chosenLanguage} = await promptForLanguageDetails(languagePlugins, decisions);\n\n const plugin = languagePlugins[chosenLanguage];\n\n if (plugin) return plugin.scaffold(options);\n\n return undefined;\n}\n","import {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../prompts/question-names.js';\n\nexport default async function promptForRepoCreation(decisions) {\n const {[questionNames.GIT_REPO]: gitRepoShouldBeCreated} = await prompt(\n [{\n name: questionNames.GIT_REPO,\n type: 'confirm',\n default: true,\n message: 'Should a git repository be initialized?'\n }],\n decisions\n );\n\n return gitRepoShouldBeCreated;\n}\n","import {simpleGit} from 'simple-git';\nimport hostedGitInfo from 'hosted-git-info';\nimport {warn} from '@travi/cli-messages';\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 {user, project, type} = hostedGitInfo.fromUrl(remoteOrigin);\n\n return {vcs: {owner: user, name: project, host: type}};\n}\n\nexport async function defineRemoteOrigin(projectRoot, sshUrl) {\n if (!sshUrl) {\n 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 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 {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../../prompts/question-names.js';\n\nexport default async function (hosts, decisions) {\n const answers = await prompt([{\n name: questionNames.REPO_HOST,\n type: 'list',\n message: 'Where will the repository be hosted?',\n choices: Object.keys(hosts)\n }], decisions);\n const host = hosts[answers[questionNames.REPO_HOST]];\n\n return {...answers, ...host};\n}\n","import {questionNames} from '../../prompts/question-names.js';\nimport promptForVcsHostDetails from './prompt.js';\n\nexport default async function scaffoldVcsHost(hosts, decisions, options) {\n const {[questionNames.REPO_HOST]: chosenHost} = await promptForVcsHostDetails(hosts, decisions);\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 {info} from '@travi/cli-messages';\nimport {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({projectRoot, projectName, decisions, vcsHosts, visibility, description}) {\n if (await repositoryShouldBeCreated(decisions)) {\n if (await alreadyVersionedByGit({projectRoot})) {\n info('Git repository already exists');\n\n return {vcs: await determineExistingVcsDetails({projectRoot})};\n }\n\n const [{vcs: {host, owner, name, sshUrl}}] = await Promise.all([\n scaffoldVcsHost(\n vcsHosts,\n decisions,\n {projectName, projectRoot, description, visibility}\n ),\n scaffoldGit({projectRoot})\n ]);\n\n const remoteOriginResults = await defineRemoteOrigin(projectRoot, sshUrl);\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';\nimport {info} from '@travi/cli-messages';\n\nexport default async function ({projectRoot, license, copyright}) {\n if (license) {\n 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 {prompt} from '@form8ion/overridable-prompts';\nimport {questionNames} from '../prompts/question-names.js';\n\nexport async function promptForDependencyUpdaterChoice(updaters, decisions) {\n return prompt([{\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 }], decisions);\n}\n","import {questionNames} from '../prompts/question-names.js';\nimport {promptForDependencyUpdaterChoice} from './prompt.js';\n\nexport default async function (plugins, decisions, options) {\n if (!Object.keys(plugins).length) return undefined;\n\n const plugin = plugins[\n (await promptForDependencyUpdaterChoice(plugins, decisions))[questionNames.DEPENDENCY_UPDATER]\n ];\n\n if (plugin) return plugin.scaffold(options);\n\n return undefined;\n}\n","import {questionsForBaseDetails} from '@form8ion/core';\nimport {prompt} from '@form8ion/overridable-prompts';\n\nexport function promptForBaseDetails(projectRoot, decisions) {\n return prompt(questionsForBaseDetails(decisions, projectRoot), decisions);\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';\n\nexport const decisionsSchema = joi.object();\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 {decisionsSchema} from './options-schemas.js';\n\nexport function validate(options) {\n return validateOptions(joi.object({\n decisions: decisionsSchema,\n plugins: joi.object({\n dependencyUpdaters: dependencyUpdaterPluginsSchema,\n languages: languagePluginsSchema,\n vcsHosts: vcsHostPluginsSchema\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","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 * as licensePlugin from './license/index.js';\n\nexport default async function ({projectRoot, results, enhancers, vcs, dependencies}) {\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 {reportResults} from '@form8ion/results-reporter';\nimport {scaffold as scaffoldReadme} from '@form8ion/readme';\nimport {info} from '@travi/cli-messages';\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) {\n const projectRoot = process.cwd();\n const {decisions, 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, decisions);\n const copyright = {year: copyrightYear, holder: copyHolder};\n\n const [vcsResults, contributing, license] = await Promise.all([\n scaffoldVcs({projectRoot, projectName, decisions, vcsHosts, visibility, description}),\n scaffoldContributing({visibility}),\n scaffoldLicense({projectRoot, license: chosenLicense, copyright}),\n scaffoldReadme({projectName, projectRoot, description}),\n scaffoldEditorConfig({projectRoot})\n ]);\n\n const dependencyUpdaterResults = vcsResults.vcs && await scaffoldDependencyUpdater(\n dependencyUpdaters,\n decisions,\n {projectRoot, vcs: vcsResults.vcs}\n );\n\n const language = await scaffoldLanguage(\n languages,\n decisions,\n {projectRoot, projectName, vcs: vcsResults.vcs, visibility, license: chosenLicense || 'UNLICENSED', description}\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 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 reportResults(mergedResults);\n}\n","import {questionNames as coreQuestionNames} from '@form8ion/core';\nimport {questionNames as projectScaffolderQuestionNames} from './prompts/question-names.js';\n\nexport * from './scaffolder.js';\nexport {default as lift} from './lift.js';\nexport const questionNames = {\n ...coreQuestionNames,\n ...projectScaffolderQuestionNames\n};\n"],"names":["questionNames","repositoryShouldBeCreated","alreadyVersionedByGit","scaffoldGit","fs","liftReadme","coreQuestionNames","scaffoldReadme","projectScaffolderQuestionNames"],"mappings":"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"}
|
|
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/options-validator.js","../src/template-path.js","../src/editorconfig/scaffolder.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';\nimport {warn} from '@travi/cli-messages';\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) {\n if (!sshUrl) {\n 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 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 {info} from '@travi/cli-messages';\nimport {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({projectRoot, projectName, vcsHosts, visibility, description}, {prompt}) {\n if (await repositoryShouldBeCreated({prompt})) {\n if (await alreadyVersionedByGit({projectRoot})) {\n 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);\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';\nimport {info} from '@travi/cli-messages';\n\nexport default async function ({projectRoot, license, copyright}) {\n if (license) {\n 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 {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';\n\nexport function validate(options) {\n return validateOptions(joi.object({\n plugins: joi.object({\n dependencyUpdaters: dependencyUpdaterPluginsSchema,\n languages: languagePluginsSchema,\n vcsHosts: vcsHostPluginsSchema\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","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 * as licensePlugin from './license/index.js';\n\nexport default async function ({projectRoot, results, enhancers, vcs, dependencies}) {\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';\nimport {info} from '@travi/cli-messages';\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}) {\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}),\n scaffoldContributing({visibility}),\n scaffoldLicense({projectRoot, license: chosenLicense, copyright}),\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 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","liftReadme","scaffoldReadme"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
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.10",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"engines": {
|
|
8
|
-
"node": "^
|
|
8
|
+
"node": "^20.19.0 || >=22.14.0"
|
|
9
9
|
},
|
|
10
10
|
"author": "Matt Travi <npm@travi.org> (https://matt.travi.org/)",
|
|
11
11
|
"contributors": [
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"access": "public",
|
|
56
56
|
"provenance": true
|
|
57
57
|
},
|
|
58
|
-
"packageManager": "npm@11.
|
|
58
|
+
"packageManager": "npm@11.11.0+sha512.f36811c4aae1fde639527368ae44c571d050006a608d67a191f195a801a52637a312d259186254aa3a3799b05335b7390539cf28656d18f0591a1125ba35f973",
|
|
59
59
|
"config": {
|
|
60
60
|
"commitizen": {
|
|
61
61
|
"path": "./node_modules/cz-conventional-changelog"
|
|
@@ -64,55 +64,53 @@
|
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@form8ion/core": "^4.6.0",
|
|
66
66
|
"@form8ion/git": "^2.1.1",
|
|
67
|
-
"@form8ion/overridable-prompts": "^1.1.0",
|
|
68
67
|
"@form8ion/readme": "3.1.0",
|
|
69
|
-
"@form8ion/results-reporter": "^1.1.0",
|
|
70
68
|
"@hapi/hoek": "^11.0.2",
|
|
71
|
-
"@travi/cli-messages": "1.1.
|
|
69
|
+
"@travi/cli-messages": "1.1.3",
|
|
72
70
|
"deepmerge": "^4.2.2",
|
|
73
71
|
"execa": "^9.5.1",
|
|
74
72
|
"filedirname": "^3.0.0",
|
|
75
|
-
"
|
|
73
|
+
"git-url-parse": "^16.1.0",
|
|
76
74
|
"joi": "^17.1.1",
|
|
77
75
|
"mustache": "4.2.0",
|
|
78
76
|
"simple-git": "^3.16.0",
|
|
79
|
-
"spdx-license-list": "6.
|
|
77
|
+
"spdx-license-list": "6.11.0",
|
|
80
78
|
"word-wrap": "^1.2.3",
|
|
81
79
|
"write-yaml": "1.0.0"
|
|
82
80
|
},
|
|
83
81
|
"devDependencies": {
|
|
84
|
-
"@cucumber/cucumber": "
|
|
85
|
-
"@form8ion/commitlint-config": "2.0.
|
|
86
|
-
"@form8ion/eslint-config": "7.0.
|
|
82
|
+
"@cucumber/cucumber": "12.5.0",
|
|
83
|
+
"@form8ion/commitlint-config": "2.0.8",
|
|
84
|
+
"@form8ion/eslint-config": "7.0.13",
|
|
87
85
|
"@form8ion/eslint-config-cucumber": "1.4.1",
|
|
88
|
-
"@form8ion/eslint-config-vitest": "1.
|
|
86
|
+
"@form8ion/eslint-config-vitest": "1.1.0",
|
|
89
87
|
"@form8ion/remark-lint-preset": "6.0.7",
|
|
90
|
-
"@rollup/plugin-node-resolve": "16.0.
|
|
91
|
-
"@travi/any": "3.1.
|
|
92
|
-
"c8": "
|
|
93
|
-
"chai": "
|
|
94
|
-
"cross-env": "
|
|
88
|
+
"@rollup/plugin-node-resolve": "16.0.3",
|
|
89
|
+
"@travi/any": "3.1.3",
|
|
90
|
+
"c8": "11.0.0",
|
|
91
|
+
"chai": "6.2.2",
|
|
92
|
+
"cross-env": "10.1.0",
|
|
95
93
|
"cz-conventional-changelog": "3.3.0",
|
|
96
94
|
"gherkin-lint": "4.2.4",
|
|
97
95
|
"husky": "9.1.7",
|
|
98
|
-
"lockfile-lint": "
|
|
99
|
-
"ls-engines": "0.9.
|
|
100
|
-
"mdast-util-from-markdown": "2.0.
|
|
96
|
+
"lockfile-lint": "5.0.0",
|
|
97
|
+
"ls-engines": "0.9.4",
|
|
98
|
+
"mdast-util-from-markdown": "2.0.3",
|
|
101
99
|
"mdast-util-heading-range": "4.0.0",
|
|
102
100
|
"mdast-zone": "6.1.0",
|
|
103
101
|
"mock-fs": "5.5.0",
|
|
104
102
|
"npm-run-all2": "8.0.4",
|
|
105
|
-
"publint": "0.3.
|
|
103
|
+
"publint": "0.3.18",
|
|
106
104
|
"remark-cli": "12.0.1",
|
|
107
105
|
"remark-toc": "9.0.0",
|
|
108
106
|
"remark-usage": "11.0.1",
|
|
109
|
-
"rimraf": "6.
|
|
110
|
-
"rollup": "4.
|
|
107
|
+
"rimraf": "6.1.3",
|
|
108
|
+
"rollup": "4.59.0",
|
|
111
109
|
"rollup-plugin-auto-external": "2.0.0",
|
|
112
|
-
"sinon": "
|
|
110
|
+
"sinon": "21.0.2",
|
|
113
111
|
"testdouble": "3.20.2",
|
|
114
112
|
"unist-util-find": "3.0.0",
|
|
115
|
-
"vitest": "
|
|
116
|
-
"vitest-when": "0.
|
|
113
|
+
"vitest": "4.0.18",
|
|
114
|
+
"vitest-when": "0.10.0"
|
|
117
115
|
}
|
|
118
116
|
}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import {prompt} from '@form8ion/overridable-prompts';
|
|
2
1
|
import {questionNames} from '../prompts/question-names.js';
|
|
3
2
|
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
export const DEPENDENCY_UPDATER_PROMPT_ID = 'DEPENDENCY_UPDATER';
|
|
4
|
+
|
|
5
|
+
export async function promptForDependencyUpdaterChoice(updaters, {prompt}) {
|
|
6
|
+
return prompt({
|
|
7
|
+
id: DEPENDENCY_UPDATER_PROMPT_ID,
|
|
8
|
+
questions: [{
|
|
9
|
+
name: questionNames.DEPENDENCY_UPDATER,
|
|
10
|
+
type: 'list',
|
|
11
|
+
message: 'Which dependency-update service do you want to manage this project?',
|
|
12
|
+
choices: [...Object.keys(updaters), 'Other']
|
|
13
|
+
}]
|
|
14
|
+
});
|
|
11
15
|
}
|