@vertesia/create-plugin 1.0.0-dev.20260203.130115Z → 1.0.0-dev.20260227.104700Z
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 +6 -10
- 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 +32 -83
- 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.map +1 -1
- package/lib/process-template.js +35 -9
- 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;wBAkBE,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,29 +9,25 @@ 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
|
{
|
|
21
17
|
name: 'Vertesia Plugin',
|
|
22
|
-
repository: 'vertesia/composableai/templates/plugin-template
|
|
18
|
+
repository: 'vertesia/composableai/templates/plugin-template'
|
|
23
19
|
},
|
|
24
20
|
{
|
|
25
21
|
name: 'Vertesia Tool Server (deprecated)',
|
|
26
|
-
repository: 'vertesia/composableai/templates/tool-server-template
|
|
22
|
+
repository: 'vertesia/composableai/templates/tool-server-template'
|
|
27
23
|
},
|
|
28
24
|
{
|
|
29
25
|
name: 'Vertesia UI Plugin (deprecated)',
|
|
30
|
-
repository: 'vertesia/composableai/templates/ui-plugin-template
|
|
26
|
+
repository: 'vertesia/composableai/templates/ui-plugin-template'
|
|
31
27
|
},
|
|
32
28
|
{
|
|
33
29
|
name: 'Vertesia Workflow Worker',
|
|
34
|
-
repository: 'vertesia/composableai/templates/worker-template
|
|
30
|
+
repository: 'vertesia/composableai/templates/worker-template'
|
|
35
31
|
}
|
|
36
32
|
],
|
|
37
33
|
/**
|
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,iBAAiB;YACvB,UAAU,EAAE,iDAAiD;SAC9D;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,UAAU,EAAE,sDAAsD;SACnE;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,UAAU,EAAE,oDAAoD;SACjE;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,67 +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, dev: args.includes('--dev') };
|
|
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.cyan(' npx @vertesia/create-plugin') + chalk.gray(' <project-name> [options]\n'));
|
|
63
|
-
console.log(chalk.white('Example:'));
|
|
64
|
-
console.log(chalk.gray(' npx @vertesia/create-plugin my-project\n'));
|
|
65
|
-
console.log(chalk.white('Options:'));
|
|
66
|
-
console.log(chalk.gray(' -b, --branch <branch> Use specific branch'));
|
|
67
|
-
console.log(chalk.gray(' -h, --help Show help\n'));
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
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;
|
|
70
42
|
// Validate project name
|
|
71
43
|
if (!validation.projectNamePattern.test(projectName)) {
|
|
72
44
|
console.log(chalk.red(`❌ ${validation.projectNameError}\n`));
|
|
@@ -83,18 +55,18 @@ async function main() {
|
|
|
83
55
|
}
|
|
84
56
|
try {
|
|
85
57
|
// Step 1: Select template (only prompts if multiple templates available)
|
|
86
|
-
const selectedTemplate = await selectTemplate(branch);
|
|
58
|
+
const selectedTemplate = await selectTemplate(branch, template);
|
|
87
59
|
// Show the selected template name with branch if specified
|
|
88
60
|
const branchInfo = branch ? chalk.gray(` (branch: ${branch})`) : '';
|
|
89
61
|
console.log(chalk.blue.bold(`\n🚀 Create ${selectedTemplate.name}`) + branchInfo + '\n');
|
|
90
|
-
// Step 2: Download template from GitHub
|
|
91
|
-
await downloadTemplate(projectName, selectedTemplate.repository);
|
|
62
|
+
// Step 2: Download template from GitHub (or copy from local path)
|
|
63
|
+
await downloadTemplate(projectName, selectedTemplate.repository, localTemplates);
|
|
92
64
|
// Step 3: Read template configuration
|
|
93
65
|
const templateConfig = readTemplateConfig(projectName);
|
|
94
66
|
// Step 4: Detect and select package manager (may be forced by template)
|
|
95
|
-
const packageManager = await selectPackageManager(templateConfig.packageManager);
|
|
67
|
+
const packageManager = await selectPackageManager(templateConfig.packageManager, nonInteractive);
|
|
96
68
|
// Step 5: Prompt user for configuration
|
|
97
|
-
const answers = await promptUser(projectName, templateConfig);
|
|
69
|
+
const answers = await promptUser(projectName, templateConfig, nonInteractive);
|
|
98
70
|
// Step 5: Replace variables in files
|
|
99
71
|
replaceVariables(projectName, templateConfig, answers);
|
|
100
72
|
// Step 6: Adjust package.json (name and workspace dependencies)
|
|
@@ -110,7 +82,7 @@ async function main() {
|
|
|
110
82
|
// Step 9: Run pre-install hooks (if any) - e.g., CLI authentication for private registries
|
|
111
83
|
let skipDependencyInstall = false;
|
|
112
84
|
if (templateConfig.preInstall) {
|
|
113
|
-
const preInstallSuccess = await runPreInstallHooks(projectName, templateConfig.preInstall, packageManager);
|
|
85
|
+
const preInstallSuccess = await runPreInstallHooks(projectName, templateConfig.preInstall, packageManager, nonInteractive);
|
|
114
86
|
if (!preInstallSuccess) {
|
|
115
87
|
console.log(chalk.yellow('⚠️ Pre-install hooks failed. Skipping dependency installation.\n'));
|
|
116
88
|
console.log(chalk.gray('You can install dependencies manually after resolving the issue:\n'));
|
|
@@ -125,7 +97,7 @@ async function main() {
|
|
|
125
97
|
}
|
|
126
98
|
// Step 11: Run post-install hooks (if any)
|
|
127
99
|
if (!skipDependencyInstall && templateConfig.postInstall) {
|
|
128
|
-
await runPostInstallHooks(projectName, templateConfig.postInstall, packageManager);
|
|
100
|
+
await runPostInstallHooks(projectName, templateConfig.postInstall, packageManager, nonInteractive);
|
|
129
101
|
}
|
|
130
102
|
// Step 12: Success!
|
|
131
103
|
showSuccess(projectName, packageManager, selectedTemplate.name, selectedTemplate.repository);
|
|
@@ -153,29 +125,6 @@ function showSuccess(projectName, packageManager, templateName, repository) {
|
|
|
153
125
|
console.log(chalk.gray(`Template: ${templateName}`));
|
|
154
126
|
console.log(chalk.gray(`Repository: ${repository}\n`));
|
|
155
127
|
}
|
|
156
|
-
/**
|
|
157
|
-
* Show help message
|
|
158
|
-
*/
|
|
159
|
-
function showHelp() {
|
|
160
|
-
console.log(chalk.blue.bold('\nVertesia Project Generator\n'));
|
|
161
|
-
console.log('Usage:');
|
|
162
|
-
console.log(chalk.gray(' pnpm create @vertesia/tool-server <project-name> [options]'));
|
|
163
|
-
console.log(chalk.gray(' npm create @vertesia/tool-server <project-name> [options]'));
|
|
164
|
-
console.log(chalk.gray(' npx @vertesia/create-tool-server <project-name> [options]\n'));
|
|
165
|
-
console.log('Options:');
|
|
166
|
-
console.log(chalk.gray(' -h, --help Show this help message'));
|
|
167
|
-
console.log(chalk.gray(' -b, --branch <branch> Use specific branch (default: configured branch or main)\n'));
|
|
168
|
-
console.log('Examples:');
|
|
169
|
-
console.log(chalk.gray(' pnpm create @vertesia/tool-server my-tool-server'));
|
|
170
|
-
console.log(chalk.gray(' npm create @vertesia/tool-server my-api-tools -b develop'));
|
|
171
|
-
console.log(chalk.gray(' npx @vertesia/create-tool-server my-project --branch v1.0.0\n'));
|
|
172
|
-
console.log('Available Templates:');
|
|
173
|
-
config.templates.forEach(template => {
|
|
174
|
-
console.log(chalk.gray(` - ${template.name}`));
|
|
175
|
-
});
|
|
176
|
-
console.log();
|
|
177
|
-
console.log(`Documentation: ${chalk.cyan(config.docsUrl)}\n`);
|
|
178
|
-
}
|
|
179
128
|
// Run the installer
|
|
180
129
|
main().catch((error) => {
|
|
181
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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"}
|
|
@@ -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
|
@@ -5,9 +5,10 @@ import chalk from 'chalk';
|
|
|
5
5
|
import { execSync } from 'child_process';
|
|
6
6
|
import fs from 'fs';
|
|
7
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
|
*/
|
|
@@ -139,26 +159,31 @@ export function adjustPackageJson(projectName, answers, isDev) {
|
|
|
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
|
-
if (isDev) {
|
|
174
|
+
if (isDev) {
|
|
175
|
+
// Dev mode: use 'dev' npm tag
|
|
151
176
|
packageJson[depType][pkgName] = 'dev';
|
|
152
177
|
workspaceReplacements++;
|
|
153
178
|
}
|
|
154
179
|
else {
|
|
155
|
-
const
|
|
156
|
-
if (
|
|
157
|
-
|
|
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}`;
|
|
158
184
|
workspaceReplacements++;
|
|
159
185
|
}
|
|
160
186
|
else {
|
|
161
|
-
// Fallback to 'latest' if we can't fetch the version
|
|
162
187
|
packageJson[depType][pkgName] = 'latest';
|
|
163
188
|
workspaceReplacements++;
|
|
164
189
|
}
|
|
@@ -168,7 +193,8 @@ export function adjustPackageJson(projectName, answers, isDev) {
|
|
|
168
193
|
}
|
|
169
194
|
});
|
|
170
195
|
if (workspaceReplacements > 0) {
|
|
171
|
-
|
|
196
|
+
const method = versionMap ? 'pinned' : 'latest';
|
|
197
|
+
console.log(chalk.gray(` ✓ Resolved ${workspaceReplacements} workspace:* dependencies to ${method} versions`));
|
|
172
198
|
}
|
|
173
199
|
// Write back to file
|
|
174
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,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
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,IAAI,OAAO,EAAE,CAAC;IACvB,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": "1.0.0-dev.
|
|
3
|
+
"version": "1.0.0-dev.20260227.104700Z",
|
|
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": "1.0.0-dev.20260227.104700Z",
|
|
25
|
+
"@llumiverse": "1.0.0-dev.20260224.234313Z"
|
|
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
|
},
|