@vertesia/create-plugin 0.82.1 → 0.82.3
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/configuration.d.ts +2 -6
- package/lib/configuration.d.ts.map +1 -1
- package/lib/configuration.js +3 -7
- package/lib/configuration.js.map +1 -1
- package/lib/download-template.d.ts +6 -2
- package/lib/download-template.d.ts.map +1 -1
- package/lib/download-template.js +32 -3
- package/lib/download-template.js.map +1 -1
- package/lib/index.js +33 -82
- package/lib/index.js.map +1 -1
- package/lib/package-manager.d.ts +2 -1
- package/lib/package-manager.d.ts.map +1 -1
- package/lib/package-manager.js +7 -1
- package/lib/package-manager.js.map +1 -1
- package/lib/post-install.d.ts +2 -2
- package/lib/post-install.d.ts.map +1 -1
- package/lib/post-install.js +17 -13
- package/lib/post-install.js.map +1 -1
- package/lib/process-template.d.ts +1 -1
- package/lib/process-template.d.ts.map +1 -1
- package/lib/process-template.js +45 -13
- package/lib/process-template.js.map +1 -1
- package/lib/prompts.d.ts +2 -1
- package/lib/prompts.d.ts.map +1 -1
- package/lib/prompts.js +31 -9
- package/lib/prompts.js.map +1 -1
- package/lib/template-selector.d.ts +4 -2
- package/lib/template-selector.d.ts.map +1 -1
- package/lib/template-selector.js +34 -15
- package/lib/template-selector.js.map +1 -1
- package/lib/version.d.ts +11 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +37 -0
- package/lib/version.js.map +1 -0
- package/package.json +6 -1
package/lib/configuration.d.ts
CHANGED
|
@@ -18,12 +18,8 @@ export declare const config: {
|
|
|
18
18
|
* Available templates
|
|
19
19
|
* Array of template definitions with display names and repository paths
|
|
20
20
|
*
|
|
21
|
-
* Format for repository: 'owner/repo/subdirectory'
|
|
22
|
-
*
|
|
23
|
-
* Examples:
|
|
24
|
-
* - 'vertesia/composableai/templates/tool-server-template'
|
|
25
|
-
* - 'vertesia/composableai/templates/tool-server-template#main'
|
|
26
|
-
* - 'vertesia/composableai/templates/tool-server-template#v1.0.0'
|
|
21
|
+
* Format for repository: 'owner/repo/subdirectory' (without branch/tag suffix)
|
|
22
|
+
* The branch or tag is resolved at runtime based on CLI version and --branch flag.
|
|
27
23
|
*/
|
|
28
24
|
readonly templates: TemplateDefinition[];
|
|
29
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,MAAM;IACjB
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,MAAM;IACjB;;;;;;OAMG;wBAcE,kBAAkB,EAAE;IAEzB;;;OAGG;;IAGH;;;;OAIG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB;;;OAGG;;IAGH;;OAEG;;IAGH;;OAEG;4BAME,MAAM,EAAE;CACL,CAAC"}
|
package/lib/configuration.js
CHANGED
|
@@ -9,12 +9,8 @@ export const config = {
|
|
|
9
9
|
* Available templates
|
|
10
10
|
* Array of template definitions with display names and repository paths
|
|
11
11
|
*
|
|
12
|
-
* Format for repository: 'owner/repo/subdirectory'
|
|
13
|
-
*
|
|
14
|
-
* Examples:
|
|
15
|
-
* - 'vertesia/composableai/templates/tool-server-template'
|
|
16
|
-
* - 'vertesia/composableai/templates/tool-server-template#main'
|
|
17
|
-
* - 'vertesia/composableai/templates/tool-server-template#v1.0.0'
|
|
12
|
+
* Format for repository: 'owner/repo/subdirectory' (without branch/tag suffix)
|
|
13
|
+
* The branch or tag is resolved at runtime based on CLI version and --branch flag.
|
|
18
14
|
*/
|
|
19
15
|
templates: [
|
|
20
16
|
{
|
|
@@ -27,7 +23,7 @@ export const config = {
|
|
|
27
23
|
},
|
|
28
24
|
{
|
|
29
25
|
name: 'Vertesia Workflow Worker',
|
|
30
|
-
repository: 'vertesia/composableai/templates/worker-template
|
|
26
|
+
repository: 'vertesia/composableai/templates/worker-template'
|
|
31
27
|
}
|
|
32
28
|
],
|
|
33
29
|
/**
|
package/lib/configuration.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;;;;;OAMG;IACH,SAAS,EAAE;QACT;YACE,IAAI,EAAE,sBAAsB;YAC5B,UAAU,EAAE,8DAA8D;SAC3E;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,4DAA4D;SACzE;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE,iDAAiD;SAC9D;KACsB;IAEzB;;;OAGG;IACH,kBAAkB,EAAE,sBAAsB;IAE1C;;;;OAIG;IACH,QAAQ,EAAE,KAAK;IAEf;;OAEG;IACH,OAAO,EAAE,2BAA2B;CAC5B,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;;OAGG;IACH,kBAAkB,EAAE,cAAc;IAElC;;OAEG;IACH,gBAAgB,EAAE,uEAAuE;IAEzF;;OAEG;IACH,aAAa,EAAE;QACb,MAAM;QACN,cAAc;QACd,MAAM;QACN,OAAO;KACI;CACL,CAAC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Download template from GitHub using degit
|
|
2
|
+
* Download template from GitHub using degit, or copy from a local directory.
|
|
3
|
+
*
|
|
4
|
+
* @param projectName - Target project directory name
|
|
5
|
+
* @param repository - Repository string (e.g. "owner/repo/path#ref")
|
|
6
|
+
* @param localTemplatesPath - When set, copy from this local path instead of fetching from GitHub
|
|
3
7
|
*/
|
|
4
|
-
export declare function downloadTemplate(projectName: string, repository: string): Promise<void>;
|
|
8
|
+
export declare function downloadTemplate(projectName: string, repository: string, localTemplatesPath?: string): Promise<void>;
|
|
5
9
|
//# sourceMappingURL=download-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-template.d.ts","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"download-template.d.ts","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|
package/lib/download-template.js
CHANGED
|
@@ -1,13 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Template downloading from GitHub
|
|
2
|
+
* Template downloading from GitHub or local copy
|
|
3
3
|
*/
|
|
4
4
|
import degit from 'degit';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import path from 'path';
|
|
6
8
|
import { config } from './configuration.js';
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
10
|
+
* Extract the template directory name from a repository string.
|
|
11
|
+
* e.g. "vertesia/composableai/templates/plugin-template#main" → "plugin-template"
|
|
9
12
|
*/
|
|
10
|
-
|
|
13
|
+
function extractTemplateDirName(repository) {
|
|
14
|
+
// Strip the #ref suffix if present
|
|
15
|
+
const repoPath = repository.split('#')[0];
|
|
16
|
+
// Last segment is the template directory name
|
|
17
|
+
return repoPath.split('/').pop();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Download template from GitHub using degit, or copy from a local directory.
|
|
21
|
+
*
|
|
22
|
+
* @param projectName - Target project directory name
|
|
23
|
+
* @param repository - Repository string (e.g. "owner/repo/path#ref")
|
|
24
|
+
* @param localTemplatesPath - When set, copy from this local path instead of fetching from GitHub
|
|
25
|
+
*/
|
|
26
|
+
export async function downloadTemplate(projectName, repository, localTemplatesPath) {
|
|
27
|
+
if (localTemplatesPath) {
|
|
28
|
+
const templateDir = extractTemplateDirName(repository);
|
|
29
|
+
const sourcePath = path.resolve(localTemplatesPath, templateDir);
|
|
30
|
+
console.log(chalk.blue('📦 Copying template from local directory...\n'));
|
|
31
|
+
console.log(chalk.gray(` Source: ${sourcePath}`));
|
|
32
|
+
console.log(chalk.gray(` Target: ./${projectName}\n`));
|
|
33
|
+
if (!fs.existsSync(sourcePath)) {
|
|
34
|
+
throw new Error(`Local template directory not found: ${sourcePath}`);
|
|
35
|
+
}
|
|
36
|
+
fs.cpSync(sourcePath, projectName, { recursive: true });
|
|
37
|
+
console.log(chalk.green(' ✓ Template copied\n'));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
11
40
|
console.log(chalk.blue('📦 Downloading template from GitHub...\n'));
|
|
12
41
|
console.log(chalk.gray(` Repository: ${repository}`));
|
|
13
42
|
console.log(chalk.gray(` Target: ./${projectName}\n`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-template.js","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"download-template.js","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -6,65 +6,39 @@
|
|
|
6
6
|
* Reads template.config.json from the template to determine prompts and file replacements.
|
|
7
7
|
*/
|
|
8
8
|
import chalk from 'chalk';
|
|
9
|
+
import { Command } from 'commander';
|
|
9
10
|
import fs from 'fs';
|
|
10
11
|
import { config, validation } from './configuration.js';
|
|
11
|
-
import { selectTemplate } from './template-selector.js';
|
|
12
|
-
import { selectPackageManager, installDependencies } from './package-manager.js';
|
|
13
12
|
import { downloadTemplate } from './download-template.js';
|
|
14
|
-
import {
|
|
13
|
+
import { installDependencies, selectPackageManager } from './package-manager.js';
|
|
14
|
+
import { runPostInstallHooks, runPreInstallHooks } from './post-install.js';
|
|
15
|
+
import { adjustPackageJson, handleConditionalRemoves, removeMetaFiles, renameFiles, replaceVariables } from './process-template.js';
|
|
15
16
|
import { promptUser } from './prompts.js';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
/**
|
|
19
|
-
* Parse command line arguments
|
|
20
|
-
*/
|
|
21
|
-
function parseArgs(args) {
|
|
22
|
-
let projectName;
|
|
23
|
-
let branch;
|
|
24
|
-
for (let i = 0; i < args.length; i++) {
|
|
25
|
-
const arg = args[i];
|
|
26
|
-
if (arg === '-b' || arg === '--branch') {
|
|
27
|
-
branch = args[i + 1];
|
|
28
|
-
i++; // Skip next arg
|
|
29
|
-
}
|
|
30
|
-
else if (!arg.startsWith('-')) {
|
|
31
|
-
projectName = arg;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (!projectName) {
|
|
35
|
-
throw new Error('Project name is required');
|
|
36
|
-
}
|
|
37
|
-
return { projectName, branch };
|
|
38
|
-
}
|
|
17
|
+
import { readTemplateConfig } from './template-config.js';
|
|
18
|
+
import { selectTemplate } from './template-selector.js';
|
|
39
19
|
/**
|
|
40
20
|
* Main entry point
|
|
41
21
|
*/
|
|
42
22
|
async function main() {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
console.log(chalk.gray(' npx @vertesia/create-plugin my-project\n'));
|
|
63
|
-
console.log(chalk.white('Options:'));
|
|
64
|
-
console.log(chalk.gray(' -b, --branch <branch> Use specific branch'));
|
|
65
|
-
console.log(chalk.gray(' -h, --help Show help\n'));
|
|
66
|
-
process.exit(1);
|
|
67
|
-
}
|
|
23
|
+
const program = new Command()
|
|
24
|
+
.name('create-plugin')
|
|
25
|
+
.description('CLI to create Vertesia plugins: UI plugins or tool servers')
|
|
26
|
+
.argument('<project-name>', 'Name of the project to create')
|
|
27
|
+
.option('-b, --branch <branch>', 'Use a specific template branch')
|
|
28
|
+
.option('-t, --template <name>', 'Template name (skips interactive selection)')
|
|
29
|
+
.option('-y, --yes', 'Non-interactive mode: use defaults for all prompts', false)
|
|
30
|
+
.option('--dev', 'Use workspace dependencies (development mode)', false)
|
|
31
|
+
.option('--local-templates <path>', 'Use local template directory instead of fetching from GitHub')
|
|
32
|
+
.addHelpText('after', `
|
|
33
|
+
Available Templates:
|
|
34
|
+
${config.templates.map(t => ` - ${t.name}`).join('\n')}
|
|
35
|
+
|
|
36
|
+
Documentation: ${config.docsUrl}
|
|
37
|
+
`)
|
|
38
|
+
.parse();
|
|
39
|
+
const projectName = program.args[0];
|
|
40
|
+
const opts = program.opts();
|
|
41
|
+
const { branch, template, yes: nonInteractive, dev, localTemplates } = opts;
|
|
68
42
|
// Validate project name
|
|
69
43
|
if (!validation.projectNamePattern.test(projectName)) {
|
|
70
44
|
console.log(chalk.red(`❌ ${validation.projectNameError}\n`));
|
|
@@ -81,22 +55,22 @@ async function main() {
|
|
|
81
55
|
}
|
|
82
56
|
try {
|
|
83
57
|
// Step 1: Select template (only prompts if multiple templates available)
|
|
84
|
-
const selectedTemplate = await selectTemplate(branch);
|
|
58
|
+
const selectedTemplate = await selectTemplate(branch, template);
|
|
85
59
|
// Show the selected template name with branch if specified
|
|
86
60
|
const branchInfo = branch ? chalk.gray(` (branch: ${branch})`) : '';
|
|
87
61
|
console.log(chalk.blue.bold(`\n🚀 Create ${selectedTemplate.name}`) + branchInfo + '\n');
|
|
88
|
-
// Step 2: Download template from GitHub
|
|
89
|
-
await downloadTemplate(projectName, selectedTemplate.repository);
|
|
62
|
+
// Step 2: Download template from GitHub (or copy from local path)
|
|
63
|
+
await downloadTemplate(projectName, selectedTemplate.repository, localTemplates);
|
|
90
64
|
// Step 3: Read template configuration
|
|
91
65
|
const templateConfig = readTemplateConfig(projectName);
|
|
92
66
|
// Step 4: Detect and select package manager (may be forced by template)
|
|
93
|
-
const packageManager = await selectPackageManager(templateConfig.packageManager);
|
|
67
|
+
const packageManager = await selectPackageManager(templateConfig.packageManager, nonInteractive);
|
|
94
68
|
// Step 5: Prompt user for configuration
|
|
95
|
-
const answers = await promptUser(projectName, templateConfig);
|
|
69
|
+
const answers = await promptUser(projectName, templateConfig, nonInteractive);
|
|
96
70
|
// Step 5: Replace variables in files
|
|
97
71
|
replaceVariables(projectName, templateConfig, answers);
|
|
98
72
|
// Step 6: Adjust package.json (name and workspace dependencies)
|
|
99
|
-
adjustPackageJson(projectName, answers);
|
|
73
|
+
adjustPackageJson(projectName, answers, dev);
|
|
100
74
|
// Step 7: Handle conditional removes
|
|
101
75
|
if (templateConfig.conditionalRemove) {
|
|
102
76
|
handleConditionalRemoves(projectName, templateConfig, answers);
|
|
@@ -108,7 +82,7 @@ async function main() {
|
|
|
108
82
|
// Step 9: Run pre-install hooks (if any) - e.g., CLI authentication for private registries
|
|
109
83
|
let skipDependencyInstall = false;
|
|
110
84
|
if (templateConfig.preInstall) {
|
|
111
|
-
const preInstallSuccess = await runPreInstallHooks(projectName, templateConfig.preInstall, packageManager);
|
|
85
|
+
const preInstallSuccess = await runPreInstallHooks(projectName, templateConfig.preInstall, packageManager, nonInteractive);
|
|
112
86
|
if (!preInstallSuccess) {
|
|
113
87
|
console.log(chalk.yellow('⚠️ Pre-install hooks failed. Skipping dependency installation.\n'));
|
|
114
88
|
console.log(chalk.gray('You can install dependencies manually after resolving the issue:\n'));
|
|
@@ -123,7 +97,7 @@ async function main() {
|
|
|
123
97
|
}
|
|
124
98
|
// Step 11: Run post-install hooks (if any)
|
|
125
99
|
if (!skipDependencyInstall && templateConfig.postInstall) {
|
|
126
|
-
await runPostInstallHooks(projectName, templateConfig.postInstall, packageManager);
|
|
100
|
+
await runPostInstallHooks(projectName, templateConfig.postInstall, packageManager, nonInteractive);
|
|
127
101
|
}
|
|
128
102
|
// Step 12: Success!
|
|
129
103
|
showSuccess(projectName, packageManager, selectedTemplate.name, selectedTemplate.repository);
|
|
@@ -151,29 +125,6 @@ function showSuccess(projectName, packageManager, templateName, repository) {
|
|
|
151
125
|
console.log(chalk.gray(`Template: ${templateName}`));
|
|
152
126
|
console.log(chalk.gray(`Repository: ${repository}\n`));
|
|
153
127
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Show help message
|
|
156
|
-
*/
|
|
157
|
-
function showHelp() {
|
|
158
|
-
console.log(chalk.blue.bold('\nVertesia Project Generator\n'));
|
|
159
|
-
console.log('Usage:');
|
|
160
|
-
console.log(chalk.gray(' pnpm create @vertesia/tool-server <project-name> [options]'));
|
|
161
|
-
console.log(chalk.gray(' npm create @vertesia/tool-server <project-name> [options]'));
|
|
162
|
-
console.log(chalk.gray(' npx @vertesia/create-tool-server <project-name> [options]\n'));
|
|
163
|
-
console.log('Options:');
|
|
164
|
-
console.log(chalk.gray(' -h, --help Show this help message'));
|
|
165
|
-
console.log(chalk.gray(' -b, --branch <branch> Use specific branch (default: configured branch or main)\n'));
|
|
166
|
-
console.log('Examples:');
|
|
167
|
-
console.log(chalk.gray(' pnpm create @vertesia/tool-server my-tool-server'));
|
|
168
|
-
console.log(chalk.gray(' npm create @vertesia/tool-server my-api-tools -b develop'));
|
|
169
|
-
console.log(chalk.gray(' npx @vertesia/create-tool-server my-project --branch v1.0.0\n'));
|
|
170
|
-
console.log('Available Templates:');
|
|
171
|
-
config.templates.forEach(template => {
|
|
172
|
-
console.log(chalk.gray(` - ${template.name}`));
|
|
173
|
-
});
|
|
174
|
-
console.log();
|
|
175
|
-
console.log(`Documentation: ${chalk.cyan(config.docsUrl)}\n`);
|
|
176
|
-
}
|
|
177
128
|
// Run the installer
|
|
178
129
|
main().catch((error) => {
|
|
179
130
|
console.error(chalk.red(`\n❌ Fatal error: ${error.message}\n`));
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/package-manager.d.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Detect available package managers and let user choose
|
|
3
3
|
* Returns the selected package manager ('pnpm' or 'npm')
|
|
4
4
|
* @param forcedPackageManager - If specified, skip selection and use this package manager
|
|
5
|
+
* @param nonInteractive - If true, auto-select pnpm (if available) or npm without prompting
|
|
5
6
|
*/
|
|
6
|
-
export declare function selectPackageManager(forcedPackageManager?: 'pnpm' | 'npm'): Promise<string>;
|
|
7
|
+
export declare function selectPackageManager(forcedPackageManager?: 'pnpm' | 'npm', nonInteractive?: boolean): Promise<string>;
|
|
7
8
|
/**
|
|
8
9
|
* Install dependencies using the specified package manager
|
|
9
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAsBA
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDzH;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAapG"}
|
package/lib/package-manager.js
CHANGED
|
@@ -23,8 +23,9 @@ function commandExists(command) {
|
|
|
23
23
|
* Detect available package managers and let user choose
|
|
24
24
|
* Returns the selected package manager ('pnpm' or 'npm')
|
|
25
25
|
* @param forcedPackageManager - If specified, skip selection and use this package manager
|
|
26
|
+
* @param nonInteractive - If true, auto-select pnpm (if available) or npm without prompting
|
|
26
27
|
*/
|
|
27
|
-
export async function selectPackageManager(forcedPackageManager) {
|
|
28
|
+
export async function selectPackageManager(forcedPackageManager, nonInteractive = false) {
|
|
28
29
|
const hasPnpm = commandExists('pnpm');
|
|
29
30
|
const hasNpm = commandExists('npm');
|
|
30
31
|
// If npm is not installed, something is seriously wrong
|
|
@@ -44,6 +45,11 @@ export async function selectPackageManager(forcedPackageManager) {
|
|
|
44
45
|
console.log(chalk.gray('Using npm (pnpm not found)\n'));
|
|
45
46
|
return 'npm';
|
|
46
47
|
}
|
|
48
|
+
// Non-interactive: auto-select pnpm (recommended default)
|
|
49
|
+
if (nonInteractive) {
|
|
50
|
+
console.log(chalk.gray('Using pnpm (non-interactive mode)\n'));
|
|
51
|
+
return 'pnpm';
|
|
52
|
+
}
|
|
47
53
|
// Both are installed - let user choose
|
|
48
54
|
console.log(chalk.blue('📦 Package Manager\n'));
|
|
49
55
|
const response = await prompts({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC/C,CAAC,CAAC,SAAS,OAAO,EAAE;YACpB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC;QACvB,QAAQ,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"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"}
|
package/lib/post-install.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import { PostInstallConfig, PreInstallConfig } from './template-config.js';
|
|
|
3
3
|
* Run pre-install hooks (before npm install)
|
|
4
4
|
* Returns true if all required hooks succeeded, false otherwise
|
|
5
5
|
*/
|
|
6
|
-
export declare function runPreInstallHooks(projectName: string, preInstall: PreInstallConfig, packageManager: string): Promise<boolean>;
|
|
6
|
+
export declare function runPreInstallHooks(projectName: string, preInstall: PreInstallConfig, packageManager: string, nonInteractive?: boolean): Promise<boolean>;
|
|
7
7
|
/**
|
|
8
8
|
* Run post-install hooks (after npm install)
|
|
9
9
|
*/
|
|
10
|
-
export declare function runPostInstallHooks(projectName: string, postInstall: PostInstallConfig, packageManager: string): Promise<void>;
|
|
10
|
+
export declare function runPostInstallHooks(projectName: string, postInstall: PostInstallConfig, packageManager: string, nonInteractive?: boolean): Promise<void>;
|
|
11
11
|
//# sourceMappingURL=post-install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-install.d.ts","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"post-install.d.ts","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAwJ3E;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,MAAM,EACtB,cAAc,UAAQ,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,MAAM,EACtB,cAAc,UAAQ,GACrB,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
package/lib/post-install.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Install hooks for running commands before/after project creation
|
|
3
3
|
*/
|
|
4
|
-
import { spawn, spawnSync } from 'child_process';
|
|
5
4
|
import chalk from 'chalk';
|
|
5
|
+
import { spawn, spawnSync } from 'child_process';
|
|
6
6
|
import prompts from 'prompts';
|
|
7
7
|
/**
|
|
8
8
|
* Check if a command exists in PATH
|
|
@@ -66,7 +66,7 @@ async function runCommand(command, cwd) {
|
|
|
66
66
|
/**
|
|
67
67
|
* Run install hooks (shared implementation for pre and post install)
|
|
68
68
|
*/
|
|
69
|
-
async function runInstallHooks(projectName, config, packageManager, phase) {
|
|
69
|
+
async function runInstallHooks(projectName, config, packageManager, phase, nonInteractive = false) {
|
|
70
70
|
if (!config.commands || config.commands.length === 0) {
|
|
71
71
|
return true;
|
|
72
72
|
}
|
|
@@ -79,12 +79,16 @@ async function runInstallHooks(projectName, config, packageManager, phase) {
|
|
|
79
79
|
const scopeMatch = config.cliPackage.match(/^@([^/]+)\//);
|
|
80
80
|
const cliBinary = scopeMatch ? scopeMatch[1] : config.cliPackage.replace(/-cli$/, '');
|
|
81
81
|
if (!commandExists(cliBinary)) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
let installCli = true;
|
|
83
|
+
if (!nonInteractive) {
|
|
84
|
+
const response = await prompts({
|
|
85
|
+
type: 'confirm',
|
|
86
|
+
name: 'installCli',
|
|
87
|
+
message: `The ${config.cliPackage} package is required. Do you want to install it globally?`,
|
|
88
|
+
initial: true
|
|
89
|
+
});
|
|
90
|
+
installCli = response.installCli;
|
|
91
|
+
}
|
|
88
92
|
if (installCli) {
|
|
89
93
|
const installed = await installGlobalPackage(config.cliPackage, packageManager);
|
|
90
94
|
if (!installed) {
|
|
@@ -100,7 +104,7 @@ async function runInstallHooks(projectName, config, packageManager, phase) {
|
|
|
100
104
|
}
|
|
101
105
|
// Run each command
|
|
102
106
|
for (const cmd of config.commands) {
|
|
103
|
-
if (cmd.optional) {
|
|
107
|
+
if (cmd.optional && !nonInteractive) {
|
|
104
108
|
const promptMessage = cmd.prompt || `Do you want to run "${cmd.name}"?`;
|
|
105
109
|
const { proceed } = await prompts({
|
|
106
110
|
type: 'confirm',
|
|
@@ -132,13 +136,13 @@ async function runInstallHooks(projectName, config, packageManager, phase) {
|
|
|
132
136
|
* Run pre-install hooks (before npm install)
|
|
133
137
|
* Returns true if all required hooks succeeded, false otherwise
|
|
134
138
|
*/
|
|
135
|
-
export async function runPreInstallHooks(projectName, preInstall, packageManager) {
|
|
136
|
-
return runInstallHooks(projectName, preInstall, packageManager, 'pre');
|
|
139
|
+
export async function runPreInstallHooks(projectName, preInstall, packageManager, nonInteractive = false) {
|
|
140
|
+
return runInstallHooks(projectName, preInstall, packageManager, 'pre', nonInteractive);
|
|
137
141
|
}
|
|
138
142
|
/**
|
|
139
143
|
* Run post-install hooks (after npm install)
|
|
140
144
|
*/
|
|
141
|
-
export async function runPostInstallHooks(projectName, postInstall, packageManager) {
|
|
142
|
-
await runInstallHooks(projectName, postInstall, packageManager, 'post');
|
|
145
|
+
export async function runPostInstallHooks(projectName, postInstall, packageManager, nonInteractive = false) {
|
|
146
|
+
await runInstallHooks(projectName, postInstall, packageManager, 'post', nonInteractive);
|
|
143
147
|
}
|
|
144
148
|
//# sourceMappingURL=post-install.js.map
|
package/lib/post-install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare function replaceVariables(projectName: string, templateConfig: Te
|
|
|
13
13
|
* 1. Sets the package name to PROJECT_NAME
|
|
14
14
|
* 2. Resolves workspace:* dependencies to actual latest versions
|
|
15
15
|
*/
|
|
16
|
-
export declare function adjustPackageJson(projectName: string, answers: Record<string, any
|
|
16
|
+
export declare function adjustPackageJson(projectName: string, answers: Record<string, any>, isDev: boolean): void;
|
|
17
17
|
/**
|
|
18
18
|
* Handle conditional file removal based on user answers
|
|
19
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-template.d.ts","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"process-template.d.ts","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgHtD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,IAAI,CAoCN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAoEzG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,IAAI,CAqBN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CAkBrF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CAczF"}
|
package/lib/process-template.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Template file processing - variable replacement and adjustments
|
|
3
3
|
*/
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import path from 'path';
|
|
6
4
|
import chalk from 'chalk';
|
|
7
5
|
import { execSync } from 'child_process';
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { getTemplateVersions } from './version.js';
|
|
8
9
|
/**
|
|
9
|
-
* Get the latest version of an npm package
|
|
10
|
-
*
|
|
10
|
+
* Get the latest version of an npm package from the registry.
|
|
11
|
+
* Used as a fallback when templateVersions is not available.
|
|
11
12
|
*/
|
|
12
13
|
function getLatestVersion(packageName) {
|
|
13
14
|
try {
|
|
@@ -21,6 +22,25 @@ function getLatestVersion(packageName) {
|
|
|
21
22
|
return null;
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the version for an internal package using the version map.
|
|
27
|
+
* Falls back to npm registry lookup if the map is not available or doesn't cover the scope.
|
|
28
|
+
* Returns { version, pinned } where pinned=true means the version came from the map
|
|
29
|
+
* and should be used as-is (exact), pinned=false means it came from the registry
|
|
30
|
+
* and should use caret range.
|
|
31
|
+
*/
|
|
32
|
+
function resolveInternalVersion(pkgName, versionMap) {
|
|
33
|
+
if (versionMap) {
|
|
34
|
+
for (const [scope, version] of Object.entries(versionMap)) {
|
|
35
|
+
if (pkgName.startsWith(`${scope}/`)) {
|
|
36
|
+
return { version, pinned: true };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Fallback: query npm registry
|
|
41
|
+
const latest = getLatestVersion(pkgName);
|
|
42
|
+
return latest ? { version: latest, pinned: false } : null;
|
|
43
|
+
}
|
|
24
44
|
/**
|
|
25
45
|
* Escape special regex characters
|
|
26
46
|
*/
|
|
@@ -123,7 +143,7 @@ export function replaceVariables(projectName, templateConfig, answers) {
|
|
|
123
143
|
* 1. Sets the package name to PROJECT_NAME
|
|
124
144
|
* 2. Resolves workspace:* dependencies to actual latest versions
|
|
125
145
|
*/
|
|
126
|
-
export function adjustPackageJson(projectName, answers) {
|
|
146
|
+
export function adjustPackageJson(projectName, answers, isDev) {
|
|
127
147
|
console.log(chalk.blue('📝 Adjusting package.json...\n'));
|
|
128
148
|
const packageJsonPath = path.join(projectName, 'package.json');
|
|
129
149
|
if (!fs.existsSync(packageJsonPath)) {
|
|
@@ -139,30 +159,42 @@ export function adjustPackageJson(projectName, answers) {
|
|
|
139
159
|
packageJson.name = newName;
|
|
140
160
|
console.log(chalk.gray(` ✓ Set package name to "${newName}"`));
|
|
141
161
|
}
|
|
142
|
-
// 2. Replace workspace:* with
|
|
162
|
+
// 2. Replace workspace:* with pinned versions
|
|
143
163
|
const internalScopes = ['@vertesia/', '@llumiverse/', '@dglabs/'];
|
|
164
|
+
const versionMap = isDev ? undefined : getTemplateVersions();
|
|
144
165
|
let workspaceReplacements = 0;
|
|
166
|
+
if (versionMap) {
|
|
167
|
+
console.log(chalk.gray(' Using pinned versions from CLI package'));
|
|
168
|
+
}
|
|
145
169
|
['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'].forEach(depType => {
|
|
146
170
|
if (packageJson[depType]) {
|
|
147
171
|
Object.keys(packageJson[depType]).forEach(pkgName => {
|
|
148
172
|
const isInternalPackage = internalScopes.some(scope => pkgName.startsWith(scope));
|
|
149
173
|
if (isInternalPackage && packageJson[depType][pkgName] === 'workspace:*') {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
packageJson[depType][pkgName] =
|
|
174
|
+
if (isDev) {
|
|
175
|
+
// Dev mode: use 'dev' npm tag
|
|
176
|
+
packageJson[depType][pkgName] = 'dev';
|
|
153
177
|
workspaceReplacements++;
|
|
154
178
|
}
|
|
155
179
|
else {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
180
|
+
const resolved = resolveInternalVersion(pkgName, versionMap);
|
|
181
|
+
if (resolved) {
|
|
182
|
+
// Exact version when from version map, caret range when from registry
|
|
183
|
+
packageJson[depType][pkgName] = resolved.pinned ? resolved.version : `^${resolved.version}`;
|
|
184
|
+
workspaceReplacements++;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
packageJson[depType][pkgName] = 'latest';
|
|
188
|
+
workspaceReplacements++;
|
|
189
|
+
}
|
|
159
190
|
}
|
|
160
191
|
}
|
|
161
192
|
});
|
|
162
193
|
}
|
|
163
194
|
});
|
|
164
195
|
if (workspaceReplacements > 0) {
|
|
165
|
-
|
|
196
|
+
const method = versionMap ? 'pinned' : 'latest';
|
|
197
|
+
console.log(chalk.gray(` ✓ Resolved ${workspaceReplacements} workspace:* dependencies to ${method} versions`));
|
|
166
198
|
}
|
|
167
199
|
// Write back to file
|
|
168
200
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-template.js","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"process-template.js","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"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"}
|
package/lib/prompts.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TemplateConfig } from './template-config.js';
|
|
2
2
|
/**
|
|
3
3
|
* Prompt user for configuration values
|
|
4
|
+
* @param nonInteractive - If true, skip prompts and use default/initial values
|
|
4
5
|
*/
|
|
5
|
-
export declare function promptUser(projectName: string, templateConfig: TemplateConfig): Promise<Record<string, any>>;
|
|
6
|
+
export declare function promptUser(projectName: string, templateConfig: TemplateConfig, nonInteractive?: boolean): Promise<Record<string, any>>;
|
|
6
7
|
//# sourceMappingURL=prompts.d.ts.map
|
package/lib/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CA8G1I"}
|
package/lib/prompts.js
CHANGED
|
@@ -6,12 +6,12 @@ import chalk from 'chalk';
|
|
|
6
6
|
import { applyTransform, concatValues } from './transforms.js';
|
|
7
7
|
/**
|
|
8
8
|
* Prompt user for configuration values
|
|
9
|
+
* @param nonInteractive - If true, skip prompts and use default/initial values
|
|
9
10
|
*/
|
|
10
|
-
export async function promptUser(projectName, templateConfig) {
|
|
11
|
+
export async function promptUser(projectName, templateConfig, nonInteractive = false) {
|
|
11
12
|
if (!templateConfig.prompts) {
|
|
12
13
|
return {};
|
|
13
14
|
}
|
|
14
|
-
console.log(chalk.blue('⚙️ Configure your project:\n'));
|
|
15
15
|
// Process prompts - replace ${PROJECT_NAME} and other variables in initial values
|
|
16
16
|
const processedPrompts = templateConfig.prompts.map(p => {
|
|
17
17
|
const prompt = { ...p };
|
|
@@ -51,14 +51,36 @@ export async function promptUser(projectName, templateConfig) {
|
|
|
51
51
|
}
|
|
52
52
|
return prompt;
|
|
53
53
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
let answers;
|
|
55
|
+
if (nonInteractive) {
|
|
56
|
+
// Use default/initial values for all prompts
|
|
57
|
+
console.log(chalk.gray('Using default values (non-interactive mode)\n'));
|
|
58
|
+
answers = {};
|
|
59
|
+
for (const prompt of processedPrompts) {
|
|
60
|
+
if (prompt.type === 'confirm') {
|
|
61
|
+
answers[prompt.name] = prompt.initial ?? true;
|
|
62
|
+
}
|
|
63
|
+
else if (prompt.type === 'select' && prompt.choices) {
|
|
64
|
+
// Use the initial index or first choice
|
|
65
|
+
const idx = typeof prompt.initial === 'number' ? prompt.initial : 0;
|
|
66
|
+
answers[prompt.name] = prompt.choices[idx]?.value ?? prompt.choices[0]?.value;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
answers[prompt.name] = prompt.initial ?? '';
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
console.log(chalk.blue('⚙️ Configure your project:\n'));
|
|
75
|
+
answers = await prompts(processedPrompts, {
|
|
76
|
+
onCancel: () => {
|
|
77
|
+
throw new Error('Installation cancelled by user');
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
// Check if all prompts were answered
|
|
81
|
+
if (Object.keys(answers).length !== processedPrompts.length) {
|
|
82
|
+
throw new Error('Installation cancelled');
|
|
57
83
|
}
|
|
58
|
-
});
|
|
59
|
-
// Check if all prompts were answered
|
|
60
|
-
if (Object.keys(answers).length !== processedPrompts.length) {
|
|
61
|
-
throw new Error('Installation cancelled');
|
|
62
84
|
}
|
|
63
85
|
// Process derived variables
|
|
64
86
|
if (templateConfig.derived) {
|
package/lib/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { TemplateDefinition } from './configuration.js';
|
|
2
2
|
/**
|
|
3
3
|
* Select a template (only prompts if multiple templates are available)
|
|
4
|
-
* Returns the selected template definition with
|
|
4
|
+
* Returns the selected template definition with the resolved git ref applied
|
|
5
|
+
* @param branchOverride - Optional branch to use instead of the auto-resolved ref
|
|
6
|
+
* @param templateName - Optional template name for non-interactive selection
|
|
5
7
|
*/
|
|
6
|
-
export declare function selectTemplate(branchOverride?: string): Promise<TemplateDefinition>;
|
|
8
|
+
export declare function selectTemplate(branchOverride?: string, templateName?: string): Promise<TemplateDefinition>;
|
|
7
9
|
//# sourceMappingURL=template-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-selector.d.ts","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"template-selector.d.ts","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAwBhE;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6ChH"}
|
package/lib/template-selector.js
CHANGED
|
@@ -1,30 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Template selection when multiple templates are available
|
|
3
3
|
*/
|
|
4
|
-
import prompts from 'prompts';
|
|
5
4
|
import chalk from 'chalk';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
6
|
import { config } from './configuration.js';
|
|
7
|
+
import { getCliVersion } from './version.js';
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* Resolve the git ref (branch or tag) for template fetching.
|
|
10
|
+
*
|
|
11
|
+
* Priority:
|
|
12
|
+
* 1. Explicit --branch flag from user (override for testing)
|
|
13
|
+
* 2. Release CLI version (no -dev. suffix) → templates@{version} tag
|
|
14
|
+
* 3. Dev/snapshot CLI version → main branch
|
|
9
15
|
*/
|
|
10
|
-
function
|
|
11
|
-
if (
|
|
12
|
-
return
|
|
16
|
+
function resolveTemplateRef(branchOverride) {
|
|
17
|
+
if (branchOverride) {
|
|
18
|
+
return branchOverride;
|
|
13
19
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
const version = getCliVersion();
|
|
21
|
+
if (!version.includes('-dev.')) {
|
|
22
|
+
return `v@${version}`;
|
|
23
|
+
}
|
|
24
|
+
return 'main';
|
|
18
25
|
}
|
|
19
26
|
/**
|
|
20
27
|
* Select a template (only prompts if multiple templates are available)
|
|
21
|
-
* Returns the selected template definition with
|
|
28
|
+
* Returns the selected template definition with the resolved git ref applied
|
|
29
|
+
* @param branchOverride - Optional branch to use instead of the auto-resolved ref
|
|
30
|
+
* @param templateName - Optional template name for non-interactive selection
|
|
22
31
|
*/
|
|
23
|
-
export async function selectTemplate(branchOverride) {
|
|
32
|
+
export async function selectTemplate(branchOverride, templateName) {
|
|
24
33
|
const templates = config.templates;
|
|
25
34
|
let selectedTemplate;
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
if (templateName) {
|
|
36
|
+
// Non-interactive: find template by name (case-insensitive)
|
|
37
|
+
const match = templates.find(t => t.name.toLowerCase() === templateName.toLowerCase());
|
|
38
|
+
if (!match) {
|
|
39
|
+
const available = templates.map(t => ` - ${t.name}`).join('\n');
|
|
40
|
+
throw new Error(`Template "${templateName}" not found. Available templates:\n${available}`);
|
|
41
|
+
}
|
|
42
|
+
selectedTemplate = match;
|
|
43
|
+
}
|
|
44
|
+
else if (templates.length === 1) {
|
|
45
|
+
// If only one template, return it directly
|
|
28
46
|
selectedTemplate = templates[0];
|
|
29
47
|
}
|
|
30
48
|
else {
|
|
@@ -47,10 +65,11 @@ export async function selectTemplate(branchOverride) {
|
|
|
47
65
|
console.log();
|
|
48
66
|
selectedTemplate = templates[response.template];
|
|
49
67
|
}
|
|
50
|
-
// Apply branch
|
|
68
|
+
// Apply resolved git ref (branch or tag)
|
|
69
|
+
const ref = resolveTemplateRef(branchOverride);
|
|
51
70
|
return {
|
|
52
71
|
...selectedTemplate,
|
|
53
|
-
repository:
|
|
72
|
+
repository: `${selectedTemplate.repository}#${ref}`
|
|
54
73
|
};
|
|
55
74
|
}
|
|
56
75
|
//# sourceMappingURL=template-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-selector.js","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"template-selector.js","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAsB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,cAAuB;IACjD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,cAAuB,EAAE,YAAqB;IACjF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAEnC,IAAI,gBAAoC,CAAC;IAEzC,IAAI,YAAY,EAAE,CAAC;QACjB,4DAA4D;QAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,sCAAsC,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,gBAAgB,GAAG,KAAK,CAAC;IAC3B,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,2CAA2C;QAC3C,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3C,KAAK,EAAE,QAAQ,CAAC,IAAI;gBACpB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;SACX,EAAE;YACD,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,yCAAyC;IACzC,MAAM,GAAG,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC/C,OAAO;QACL,GAAG,gBAAgB;QACnB,UAAU,EAAE,GAAG,gBAAgB,CAAC,UAAU,IAAI,GAAG,EAAE;KACpD,CAAC;AACJ,CAAC"}
|
package/lib/version.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the CLI's own version string (e.g., "1.0.0" or "1.0.0-dev.20260203.130115Z")
|
|
3
|
+
*/
|
|
4
|
+
export declare function getCliVersion(): string;
|
|
5
|
+
/**
|
|
6
|
+
* Get the template version map from the CLI's package.json.
|
|
7
|
+
* Maps package scope prefixes (e.g., "@vertesia") to exact versions.
|
|
8
|
+
* Returns undefined if the field is not present (e.g., running from source).
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTemplateVersions(): Record<string, string> | undefined;
|
|
11
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOxE"}
|
package/lib/version.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI version and metadata utilities
|
|
3
|
+
*
|
|
4
|
+
* Reads the CLI's own package.json to get version and templateVersions map.
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
let _cached;
|
|
11
|
+
function readCliPackageJson() {
|
|
12
|
+
if (_cached)
|
|
13
|
+
return _cached;
|
|
14
|
+
const pkgPath = path.resolve(__dirname, '..', 'package.json');
|
|
15
|
+
_cached = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
16
|
+
return _cached;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get the CLI's own version string (e.g., "1.0.0" or "1.0.0-dev.20260203.130115Z")
|
|
20
|
+
*/
|
|
21
|
+
export function getCliVersion() {
|
|
22
|
+
return readCliPackageJson().version;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the template version map from the CLI's package.json.
|
|
26
|
+
* Maps package scope prefixes (e.g., "@vertesia") to exact versions.
|
|
27
|
+
* Returns undefined if the field is not present (e.g., running from source).
|
|
28
|
+
*/
|
|
29
|
+
export function getTemplateVersions() {
|
|
30
|
+
const pkg = readCliPackageJson();
|
|
31
|
+
if (!pkg.templateVersions)
|
|
32
|
+
return undefined;
|
|
33
|
+
// Only return if versions are actually populated (not the placeholder 0.0.0)
|
|
34
|
+
const hasReal = Object.values(pkg.templateVersions).some(v => v !== '0.0.0');
|
|
35
|
+
return hasReal ? pkg.templateVersions : undefined;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAO/D,IAAI,OAAmC,CAAC;AAExC,SAAS,kBAAkB;IACzB,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,OAAO,OAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,kBAAkB,EAAE,CAAC,OAAO,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAE5C,6EAA6E;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vertesia/create-plugin",
|
|
3
|
-
"version": "0.82.
|
|
3
|
+
"version": "0.82.3",
|
|
4
4
|
"description": "CLI to create Vertesia plugins: UI plugins or tool servers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
],
|
|
21
21
|
"author": "Vertesia",
|
|
22
22
|
"license": "Apache-2.0",
|
|
23
|
+
"templateVersions": {
|
|
24
|
+
"@vertesia": "0.82.3",
|
|
25
|
+
"@llumiverse": "0.25.1"
|
|
26
|
+
},
|
|
23
27
|
"repository": {
|
|
24
28
|
"type": "git",
|
|
25
29
|
"url": "https://github.com/vertesia/composableai.git",
|
|
@@ -27,6 +31,7 @@
|
|
|
27
31
|
},
|
|
28
32
|
"dependencies": {
|
|
29
33
|
"chalk": "^5.3.0",
|
|
34
|
+
"commander": "^14.0.2",
|
|
30
35
|
"degit": "^2.8.4",
|
|
31
36
|
"prompts": "^2.4.2"
|
|
32
37
|
},
|