@form8ion/project 19.0.0-alpha.9 → 19.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +67 -88
- package/lib/index.js.map +1 -1
- package/package.json +5 -5
package/lib/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import execa from '@form8ion/execa-wrapper';
|
|
|
4
4
|
import { reportResults } from '@form8ion/results-reporter';
|
|
5
5
|
import { lift as lift$1, scaffold as scaffold$3 } from '@form8ion/readme';
|
|
6
6
|
import { info, warn } from '@travi/cli-messages';
|
|
7
|
-
import { prompt
|
|
7
|
+
import { prompt } from '@form8ion/overridable-prompts';
|
|
8
8
|
import { simpleGit } from 'simple-git';
|
|
9
9
|
import hostedGitInfo from 'hosted-git-info';
|
|
10
10
|
import * as gitPlugin from '@form8ion/git';
|
|
@@ -26,14 +26,6 @@ const questionNames$1 = {
|
|
|
26
26
|
DEPENDENCY_UPDATER: 'dependencyUpdater'
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
function scaffoldLanguage (languagePlugins, chosenLanguage, options) {
|
|
30
|
-
const plugin = languagePlugins[chosenLanguage];
|
|
31
|
-
|
|
32
|
-
if (plugin) return plugin.scaffold(options);
|
|
33
|
-
|
|
34
|
-
return undefined;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
29
|
function promptForLanguageDetails (languages, decisions) {
|
|
38
30
|
return prompt([{
|
|
39
31
|
name: questionNames$1.PROJECT_LANGUAGE,
|
|
@@ -43,14 +35,18 @@ function promptForLanguageDetails (languages, decisions) {
|
|
|
43
35
|
}], decisions);
|
|
44
36
|
}
|
|
45
37
|
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
async function scaffoldLanguage (languagePlugins, decisions, options) {
|
|
39
|
+
const {[questionNames$1.PROJECT_LANGUAGE]: chosenLanguage} = await promptForLanguageDetails(languagePlugins, decisions);
|
|
40
|
+
|
|
41
|
+
const plugin = languagePlugins[chosenLanguage];
|
|
42
|
+
|
|
43
|
+
if (plugin) return plugin.scaffold(options);
|
|
44
|
+
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function terminalPromptFactory (decisions) {
|
|
49
|
+
return ({questions}) => prompt(questions, decisions);
|
|
54
50
|
}
|
|
55
51
|
|
|
56
52
|
async function promptForVcsHostDetails (hosts, visibility, decisions) {
|
|
@@ -58,11 +54,24 @@ async function promptForVcsHostDetails (hosts, visibility, decisions) {
|
|
|
58
54
|
name: questionNames$1.REPO_HOST,
|
|
59
55
|
type: 'list',
|
|
60
56
|
message: 'Where will the repository be hosted?',
|
|
61
|
-
choices:
|
|
57
|
+
choices: hosts
|
|
62
58
|
}], decisions);
|
|
63
59
|
const host = hosts[answers[questionNames$1.REPO_HOST]];
|
|
64
60
|
|
|
65
|
-
return {...answers, ...host
|
|
61
|
+
return {...answers, ...host};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async function scaffoldVcsHost (hosts, visibility, decisions, options) {
|
|
65
|
+
const {[questionNames$1.REPO_HOST]: chosenHost} = await promptForVcsHostDetails(hosts, visibility, decisions);
|
|
66
|
+
|
|
67
|
+
const lowercasedHosts = Object.fromEntries(
|
|
68
|
+
Object.entries(hosts).map(([name, details]) => [name.toLowerCase(), details])
|
|
69
|
+
);
|
|
70
|
+
const host = lowercasedHosts[chosenHost.toLowerCase()];
|
|
71
|
+
|
|
72
|
+
if (host) return host.scaffold(options, {prompt: terminalPromptFactory(decisions)});
|
|
73
|
+
|
|
74
|
+
return {vcs: {}};
|
|
66
75
|
}
|
|
67
76
|
|
|
68
77
|
async function getExistingRemotes(git) {
|
|
@@ -77,7 +86,7 @@ async function getExistingRemotes(git) {
|
|
|
77
86
|
}
|
|
78
87
|
}
|
|
79
88
|
|
|
80
|
-
async function defineRemoteOrigin(projectRoot,
|
|
89
|
+
async function defineRemoteOrigin(projectRoot, sshUrl) {
|
|
81
90
|
const git = simpleGit({baseDir: projectRoot});
|
|
82
91
|
const existingRemotes = await getExistingRemotes(git);
|
|
83
92
|
|
|
@@ -87,10 +96,10 @@ async function defineRemoteOrigin(projectRoot, origin) {
|
|
|
87
96
|
return {nextSteps: []};
|
|
88
97
|
}
|
|
89
98
|
|
|
90
|
-
if (
|
|
91
|
-
info(`Setting remote origin to ${
|
|
99
|
+
if (sshUrl) {
|
|
100
|
+
info(`Setting remote origin to ${sshUrl}`, {level: 'secondary'});
|
|
92
101
|
|
|
93
|
-
await git.addRemote('origin',
|
|
102
|
+
await git.addRemote('origin', sshUrl);
|
|
94
103
|
|
|
95
104
|
// info('Setting the local `master` branch to track `origin/master`');
|
|
96
105
|
//
|
|
@@ -107,10 +116,11 @@ async function defineRemoteOrigin(projectRoot, origin) {
|
|
|
107
116
|
return {nextSteps: []};
|
|
108
117
|
}
|
|
109
118
|
|
|
110
|
-
async function
|
|
119
|
+
async function scaffold$1(
|
|
111
120
|
gitRepoShouldBeInitialized,
|
|
112
121
|
projectRoot,
|
|
113
122
|
projectName,
|
|
123
|
+
description,
|
|
114
124
|
vcsHosts,
|
|
115
125
|
visibility,
|
|
116
126
|
decisions
|
|
@@ -123,30 +133,23 @@ async function initialize(
|
|
|
123
133
|
const remoteOrigin = await git.remote(['get-url', 'origin']);
|
|
124
134
|
const {user, project, type} = hostedGitInfo.fromUrl(remoteOrigin);
|
|
125
135
|
|
|
126
|
-
return {owner: user, name: project, host: type};
|
|
136
|
+
return {vcs: {owner: user, name: project, host: type}};
|
|
127
137
|
}
|
|
128
138
|
|
|
129
|
-
const [
|
|
130
|
-
|
|
139
|
+
const [{vcs: {host, owner, name, sshUrl}}] = await Promise.all([
|
|
140
|
+
scaffoldVcsHost(vcsHosts, visibility, decisions, {projectName, projectRoot, description, visibility}),
|
|
131
141
|
scaffold$2({projectRoot})
|
|
132
142
|
]);
|
|
133
143
|
|
|
144
|
+
const remoteOriginResults = await defineRemoteOrigin(projectRoot, sshUrl);
|
|
145
|
+
|
|
134
146
|
return {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
name: projectName
|
|
147
|
+
vcs: {host, owner, name},
|
|
148
|
+
nextSteps: [{summary: 'Commit scaffolded files'}, ...remoteOriginResults.nextSteps]
|
|
138
149
|
};
|
|
139
150
|
}
|
|
140
151
|
|
|
141
|
-
return
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
async function scaffold$1({projectRoot, origin}) {
|
|
145
|
-
info('Finishing Git Configuration');
|
|
146
|
-
|
|
147
|
-
const remoteOriginResults = await defineRemoteOrigin(projectRoot, origin);
|
|
148
|
-
|
|
149
|
-
return {nextSteps: [{summary: 'Commit scaffolded files'}, ...remoteOriginResults.nextSteps]};
|
|
152
|
+
return {};
|
|
150
153
|
}
|
|
151
154
|
|
|
152
155
|
async function scaffoldLicense ({projectRoot, license, copyright}) {
|
|
@@ -198,18 +201,6 @@ var licensePlugin = /*#__PURE__*/Object.freeze({
|
|
|
198
201
|
test: tester
|
|
199
202
|
});
|
|
200
203
|
|
|
201
|
-
function scaffoldVcsHost (hosts, options) {
|
|
202
|
-
const lowercasedHosts = Object.fromEntries(
|
|
203
|
-
Object.entries(hosts).map(([name, details]) => [name.toLowerCase(), details])
|
|
204
|
-
);
|
|
205
|
-
const {host: chosenHost, ...rest} = options;
|
|
206
|
-
const host = lowercasedHosts[chosenHost];
|
|
207
|
-
|
|
208
|
-
if (host) return host.scaffold(rest);
|
|
209
|
-
|
|
210
|
-
return {};
|
|
211
|
-
}
|
|
212
|
-
|
|
213
204
|
async function promptForDependencyUpdaterChoice(updaters, decisions) {
|
|
214
205
|
return prompt([{
|
|
215
206
|
name: questionNames$1.DEPENDENCY_UPDATER,
|
|
@@ -240,11 +231,7 @@ function promptForBaseDetails(projectRoot, decisions) {
|
|
|
240
231
|
|
|
241
232
|
var languagePluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});
|
|
242
233
|
|
|
243
|
-
var vcsHostPluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin
|
|
244
|
-
prompt: joi.func().required(),
|
|
245
|
-
public: joi.bool(),
|
|
246
|
-
private: joi.bool()
|
|
247
|
-
}));
|
|
234
|
+
var vcsHostPluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin);
|
|
248
235
|
|
|
249
236
|
var dependencyUpdaterPluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});
|
|
250
237
|
|
|
@@ -317,43 +304,40 @@ async function scaffold(options) {
|
|
|
317
304
|
} = await promptForBaseDetails(projectRoot, decisions);
|
|
318
305
|
const copyright = {year: copyrightYear, holder: copyHolder};
|
|
319
306
|
|
|
320
|
-
const [
|
|
321
|
-
|
|
307
|
+
const [vcsResults, contributing, license] = await Promise.all([
|
|
308
|
+
scaffold$1(gitRepo, projectRoot, projectName, description, vcsHosts, visibility, decisions),
|
|
322
309
|
scaffoldContributing({visibility}),
|
|
323
310
|
scaffoldLicense({projectRoot, license: chosenLicense, copyright}),
|
|
324
311
|
scaffold$3({projectName, projectRoot, description}),
|
|
325
312
|
scaffoldEditorConfig({projectRoot})
|
|
326
313
|
]);
|
|
327
314
|
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
description,
|
|
334
|
-
visibility
|
|
335
|
-
}),
|
|
336
|
-
scaffoldDependencyUpdater(
|
|
337
|
-
dependencyUpdaters,
|
|
338
|
-
decisions,
|
|
339
|
-
{projectRoot, vcs}
|
|
340
|
-
)
|
|
341
|
-
])
|
|
342
|
-
: [];
|
|
343
|
-
|
|
344
|
-
const gitResults = gitRepo && await scaffold$1({projectRoot, origin: vcsHostResults});
|
|
345
|
-
|
|
346
|
-
const {[questionNames$1.PROJECT_LANGUAGE]: projectLanguage} = await promptForLanguageDetails(languages, decisions);
|
|
315
|
+
const dependencyUpdaterResults = vcsResults.vcs && await scaffoldDependencyUpdater(
|
|
316
|
+
dependencyUpdaters,
|
|
317
|
+
decisions,
|
|
318
|
+
{projectRoot, vcs: vcsResults.vcs}
|
|
319
|
+
);
|
|
347
320
|
|
|
348
321
|
const language = await scaffoldLanguage(
|
|
349
322
|
languages,
|
|
350
|
-
|
|
351
|
-
{projectRoot, projectName, vcs, visibility, license: chosenLicense || 'UNLICENSED', description}
|
|
323
|
+
decisions,
|
|
324
|
+
{projectRoot, projectName, vcs: vcsResults.vcs, visibility, license: chosenLicense || 'UNLICENSED', description}
|
|
352
325
|
);
|
|
353
326
|
|
|
354
|
-
const
|
|
355
|
-
|
|
356
|
-
|
|
327
|
+
const mergedResults = deepmerge.all([
|
|
328
|
+
license,
|
|
329
|
+
language,
|
|
330
|
+
dependencyUpdaterResults,
|
|
331
|
+
contributing,
|
|
332
|
+
vcsResults
|
|
333
|
+
].filter(Boolean));
|
|
334
|
+
|
|
335
|
+
await lift({
|
|
336
|
+
projectRoot,
|
|
337
|
+
vcs: vcsResults.vcs,
|
|
338
|
+
results: mergedResults,
|
|
339
|
+
enhancers: {...dependencyUpdaters, ...vcsHosts}
|
|
340
|
+
});
|
|
357
341
|
|
|
358
342
|
if (language && language.verificationCommand) {
|
|
359
343
|
info('Verifying the generated project');
|
|
@@ -363,12 +347,7 @@ async function scaffold(options) {
|
|
|
363
347
|
await subprocess;
|
|
364
348
|
}
|
|
365
349
|
|
|
366
|
-
|
|
367
|
-
.map(contributor => contributor.nextSteps)
|
|
368
|
-
.filter(Boolean)
|
|
369
|
-
.reduce((acc, contributedNextSteps) => ([...acc, ...contributedNextSteps]), []);
|
|
370
|
-
|
|
371
|
-
reportResults({nextSteps: contributedTasks});
|
|
350
|
+
reportResults(mergedResults);
|
|
372
351
|
}
|
|
373
352
|
|
|
374
353
|
const questionNames = {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/prompts/question-names.js","../src/language/scaffolder.js","../src/language/prompt.js","../src/prompts/conditionals.js","../src/vcs/host/prompt.js","../src/vcs/git/git.js","../src/license/scaffolder.js","../src/license/tester.js","../src/license/lifter.js","../src/vcs/host/scaffolder.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","export default function (languagePlugins, chosenLanguage, options) {\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 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 {Separator} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from './question-names.js';\n\nexport function unlicensedConfirmationShouldBePresented(answers) {\n return 'Private' === answers[questionNames.VISIBILITY];\n}\n\nexport function licenseChoicesShouldBePresented(answers) {\n return 'Public' === answers[questionNames.VISIBILITY] || !answers[questionNames.UNLICENSED];\n}\n\nexport function copyrightInformationShouldBeRequested(answers) {\n return !!answers[questionNames.LICENSE];\n}\n\nexport function filterChoicesByVisibility(choices, visibility) {\n return [\n ...Object.entries(choices)\n .filter(([, choice]) => choice[visibility.toLowerCase()])\n .reduce((acc, [name]) => ([...acc, name]), []),\n new Separator(),\n 'Other'\n ];\n}\n","import {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../../prompts/question-names.js';\nimport {filterChoicesByVisibility} from '../../prompts/conditionals.js';\n\nexport default async function (hosts, visibility, decisions) {\n const answers = await prompt([{\n name: questionNames.REPO_HOST,\n type: 'list',\n message: 'Where will the repository be hosted?',\n choices: filterChoicesByVisibility(hosts, visibility)\n }], decisions);\n const host = hosts[answers[questionNames.REPO_HOST]];\n\n return {...answers, ...host && await host.prompt({decisions})};\n}\n","import {simpleGit} from 'simple-git';\nimport hostedGitInfo from 'hosted-git-info';\nimport {info, warn} from '@travi/cli-messages';\nimport {scaffold as scaffoldGit} from '@form8ion/git';\n\nimport promptForVcsHostDetails from '../host/prompt.js';\nimport {questionNames} from '../../prompts/question-names.js';\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\nasync function defineRemoteOrigin(projectRoot, origin) {\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 if (origin.sshUrl) {\n info(`Setting remote origin to ${origin.sshUrl}`, {level: 'secondary'});\n\n await git.addRemote('origin', origin.sshUrl);\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 return {nextSteps: [{summary: 'Set local `master` branch to track upstream `origin/master`'}]};\n }\n\n warn('URL not available to configure remote `origin`');\n\n return {nextSteps: []};\n}\n\nexport async function initialize(\n gitRepoShouldBeInitialized,\n projectRoot,\n projectName,\n vcsHosts,\n visibility,\n decisions\n) {\n if (gitRepoShouldBeInitialized) {\n const git = simpleGit({baseDir: projectRoot});\n if (await git.checkIsRepo('root')) {\n info('Git repository already exists');\n\n const remoteOrigin = await git.remote(['get-url', 'origin']);\n const {user, project, type} = hostedGitInfo.fromUrl(remoteOrigin);\n\n return {owner: user, name: project, host: type};\n }\n\n const [answers] = await Promise.all([\n promptForVcsHostDetails(vcsHosts, visibility, decisions),\n scaffoldGit({projectRoot})\n ]);\n\n return {\n host: answers[questionNames.REPO_HOST].toLowerCase(),\n owner: answers[questionNames.REPO_OWNER],\n name: projectName\n };\n }\n\n return undefined;\n}\n\nexport async function scaffold({projectRoot, origin}) {\n info('Finishing Git Configuration');\n\n const remoteOriginResults = await defineRemoteOrigin(projectRoot, origin);\n\n return {nextSteps: [{summary: 'Commit scaffolded files'}, ...remoteOriginResults.nextSteps]};\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","export default function (hosts, options) {\n const lowercasedHosts = Object.fromEntries(\n Object.entries(hosts).map(([name, details]) => [name.toLowerCase(), details])\n );\n const {host: chosenHost, ...rest} = options;\n const host = lowercasedHosts[chosenHost];\n\n if (host) return host.scaffold(rest);\n\n return {};\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\nimport {questionNames} from './question-names.js';\n\nexport function promptForBaseDetails(projectRoot, decisions) {\n return prompt([\n ...questionsForBaseDetails(decisions, projectRoot),\n {name: questionNames.GIT_REPO, type: 'confirm', default: true, message: 'Should a git repository be initialized?'}\n ], 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.keys({\n prompt: joi.func().required(),\n public: joi.bool(),\n private: joi.bool()\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';\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 deepmerge from 'deepmerge';\nimport {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: deepmerge.all([results, enhancerResults])});\n\n return enhancerResults;\n}\n","import deepmerge from 'deepmerge';\nimport execa from '@form8ion/execa-wrapper';\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, prompt as promptForLanguageDetails} from './language/index.js';\nimport {initialize as scaffoldGit, scaffold as liftGit} from './vcs/git/git.js';\nimport {scaffold as scaffoldLicense} from './license/index.js';\nimport {scaffold as scaffoldVcsHost} from './vcs/host/index.js';\nimport scaffoldDependencyUpdater from './dependency-updater/scaffolder.js';\nimport {promptForBaseDetails} from './prompts/questions.js';\nimport {validate} from './options-validator.js';\nimport {questionNames} from './prompts/question-names.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 [questionNames.GIT_REPO]: gitRepo,\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 [vcs, contributing, license] = await Promise.all([\n scaffoldGit(gitRepo, projectRoot, projectName, vcsHosts, visibility, decisions),\n scaffoldContributing({visibility}),\n scaffoldLicense({projectRoot, license: chosenLicense, copyright}),\n scaffoldReadme({projectName, projectRoot, description}),\n scaffoldEditorConfig({projectRoot})\n ]);\n\n const [vcsHostResults, dependencyUpdaterResults] = vcs\n ? await Promise.all([\n scaffoldVcsHost(vcsHosts, {\n ...vcs,\n projectRoot,\n description,\n visibility\n }),\n scaffoldDependencyUpdater(\n dependencyUpdaters,\n decisions,\n {projectRoot, vcs}\n )\n ])\n : [];\n\n const gitResults = gitRepo && await liftGit({projectRoot, origin: vcsHostResults});\n\n const {[questionNames.PROJECT_LANGUAGE]: projectLanguage} = await promptForLanguageDetails(languages, decisions);\n\n const language = await scaffoldLanguage(\n languages,\n projectLanguage,\n {projectRoot, projectName, vcs, visibility, license: chosenLicense || 'UNLICENSED', description}\n );\n\n const contributors = [license, language, dependencyUpdaterResults, contributing, gitResults].filter(Boolean);\n\n await lift({projectRoot, vcs, results: deepmerge.all(contributors), enhancers: {...dependencyUpdaters, ...vcsHosts}});\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 const contributedTasks = contributors\n .map(contributor => contributor.nextSteps)\n .filter(Boolean)\n .reduce((acc, contributedNextSteps) => ([...acc, ...contributedNextSteps]), []);\n\n reportResults({nextSteps: contributedTasks});\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","scaffoldGit","scaffold","fs","liftReadme","coreQuestionNames","scaffoldReadme","liftGit","projectScaffolderQuestionNames"],"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/prompts/terminal-prompt.js","../src/vcs/host/prompt.js","../src/vcs/host/scaffolder.js","../src/vcs/git/git.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\nexport default function (decisions) {\n return ({questions}) => prompt(questions, decisions);\n}\n","import {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../../prompts/question-names.js';\n\nexport default async function (hosts, visibility, decisions) {\n const answers = await prompt([{\n name: questionNames.REPO_HOST,\n type: 'list',\n message: 'Where will the repository be hosted?',\n choices: 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 terminalPromptFactory from '../../prompts/terminal-prompt.js';\nimport promptForVcsHostDetails from './prompt.js';\n\nexport default async function (hosts, visibility, decisions, options) {\n const {[questionNames.REPO_HOST]: chosenHost} = await promptForVcsHostDetails(hosts, visibility, 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, {prompt: terminalPromptFactory(decisions)});\n\n return {vcs: {}};\n}\n","import {simpleGit} from 'simple-git';\nimport hostedGitInfo from 'hosted-git-info';\nimport {info, warn} from '@travi/cli-messages';\nimport {scaffold as scaffoldGit} from '@form8ion/git';\n\nimport {scaffold as scaffoldVcsHost} from '../host/index.js';\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\nasync function defineRemoteOrigin(projectRoot, sshUrl) {\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 if (sshUrl) {\n info(`Setting remote origin to ${sshUrl}`, {level: 'secondary'});\n\n await git.addRemote('origin', sshUrl);\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 return {nextSteps: [{summary: 'Set local `master` branch to track upstream `origin/master`'}]};\n }\n\n warn('URL not available to configure remote `origin`');\n\n return {nextSteps: []};\n}\n\nexport async function scaffold(\n gitRepoShouldBeInitialized,\n projectRoot,\n projectName,\n description,\n vcsHosts,\n visibility,\n decisions\n) {\n if (gitRepoShouldBeInitialized) {\n const git = simpleGit({baseDir: projectRoot});\n if (await git.checkIsRepo('root')) {\n info('Git repository already exists');\n\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\n const [{vcs: {host, owner, name, sshUrl}}] = await Promise.all([\n scaffoldVcsHost(vcsHosts, visibility, decisions, {projectName, projectRoot, description, visibility}),\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\nimport {questionNames} from './question-names.js';\n\nexport function promptForBaseDetails(projectRoot, decisions) {\n return prompt([\n ...questionsForBaseDetails(decisions, projectRoot),\n {name: questionNames.GIT_REPO, type: 'confirm', default: true, message: 'Should a git repository be initialized?'}\n ], 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(/^/, 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 deepmerge from 'deepmerge';\nimport {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: deepmerge.all([results, enhancerResults])});\n\n return enhancerResults;\n}\n","import deepmerge from 'deepmerge';\nimport execa from '@form8ion/execa-wrapper';\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 scaffoldGit} from './vcs/git/git.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 {questionNames} from './prompts/question-names.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 [questionNames.GIT_REPO]: gitRepo,\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 scaffoldGit(gitRepo, projectRoot, projectName, description, vcsHosts, visibility, decisions),\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, ...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","scaffold","scaffoldGit","fs","liftReadme","coreQuestionNames","scaffoldReadme","projectScaffolderQuestionNames"],"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": "19.0.0-
|
|
5
|
+
"version": "19.0.0-beta.2",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"engines": {
|
|
8
8
|
"node": "^18.17 || >=20.6.1"
|
|
@@ -89,10 +89,10 @@
|
|
|
89
89
|
"cross-env": "7.0.3",
|
|
90
90
|
"cz-conventional-changelog": "3.3.0",
|
|
91
91
|
"gherkin-lint": "4.2.4",
|
|
92
|
-
"husky": "9.1.
|
|
92
|
+
"husky": "9.1.4",
|
|
93
93
|
"jest-when": "3.6.0",
|
|
94
94
|
"lockfile-lint": "4.14.0",
|
|
95
|
-
"ls-engines": "0.9.
|
|
95
|
+
"ls-engines": "0.9.3",
|
|
96
96
|
"make-dir": "4.0.0",
|
|
97
97
|
"mdast-util-from-markdown": "2.0.1",
|
|
98
98
|
"mdast-util-heading-range": "4.0.0",
|
|
@@ -104,12 +104,12 @@
|
|
|
104
104
|
"remark-toc": "9.0.0",
|
|
105
105
|
"remark-usage": "11.0.1",
|
|
106
106
|
"rimraf": "6.0.1",
|
|
107
|
-
"rollup": "4.19.
|
|
107
|
+
"rollup": "4.19.2",
|
|
108
108
|
"rollup-plugin-auto-external": "2.0.0",
|
|
109
109
|
"sinon": "18.0.0",
|
|
110
110
|
"testdouble": "3.20.2",
|
|
111
111
|
"unist-util-find": "3.0.0",
|
|
112
|
-
"vitest": "2.0.
|
|
112
|
+
"vitest": "2.0.5"
|
|
113
113
|
},
|
|
114
114
|
"packageManager": "npm@10.8.2+sha512.c7f0088c520a46596b85c6f8f1da943400199748a0f7ea8cb8df75469668dc26f6fb3ba26df87e2884a5ebe91557292d0f3db7d0929cdb4f14910c3032ac81fb"
|
|
115
115
|
}
|