@vertesia/create-plugin 0.80.0 → 0.81.0
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 +4 -4
- package/lib/configuration.d.ts.map +1 -1
- package/lib/configuration.js +10 -6
- package/lib/configuration.js.map +1 -1
- package/lib/index.js +37 -14
- 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 +10 -1
- package/lib/package-manager.js.map +1 -1
- package/lib/post-install.d.ts +11 -0
- package/lib/post-install.d.ts.map +1 -0
- package/lib/post-install.js +144 -0
- package/lib/post-install.js.map +1 -0
- package/lib/process-template.d.ts +6 -1
- package/lib/process-template.d.ts.map +1 -1
- package/lib/process-template.js +54 -7
- package/lib/process-template.js.map +1 -1
- package/lib/prompts.d.ts.map +1 -1
- package/lib/prompts.js +51 -8
- package/lib/prompts.js.map +1 -1
- package/lib/template-config.d.ts +56 -4
- package/lib/template-config.d.ts.map +1 -1
- package/lib/template-config.js.map +1 -1
- package/lib/transforms.d.ts +4 -0
- package/lib/transforms.d.ts.map +1 -1
- package/lib/transforms.js +6 -0
- package/lib/transforms.js.map +1 -1
- package/package.json +1 -1
package/lib/configuration.d.ts
CHANGED
|
@@ -21,9 +21,9 @@ export declare const config: {
|
|
|
21
21
|
* Format for repository: 'owner/repo/subdirectory' or 'owner/repo/subdirectory#branch'
|
|
22
22
|
*
|
|
23
23
|
* Examples:
|
|
24
|
-
* - 'vertesia/composableai/
|
|
25
|
-
* - 'vertesia/composableai/
|
|
26
|
-
* - 'vertesia/composableai/
|
|
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'
|
|
27
27
|
*/
|
|
28
28
|
readonly templates: TemplateDefinition[];
|
|
29
29
|
/**
|
|
@@ -40,7 +40,7 @@ export declare const config: {
|
|
|
40
40
|
/**
|
|
41
41
|
* Documentation URL to show in help messages
|
|
42
42
|
*/
|
|
43
|
-
readonly docsUrl: "https://docs.vertesia.com
|
|
43
|
+
readonly docsUrl: "https://docs.vertesia.com";
|
|
44
44
|
};
|
|
45
45
|
/**
|
|
46
46
|
* Validation rules for project names
|
|
@@ -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;;;;;;;;;;OAUG;
|
|
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;;;;;;;;;;OAUG;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
|
@@ -12,18 +12,22 @@ export const config = {
|
|
|
12
12
|
* Format for repository: 'owner/repo/subdirectory' or 'owner/repo/subdirectory#branch'
|
|
13
13
|
*
|
|
14
14
|
* Examples:
|
|
15
|
-
* - 'vertesia/composableai/
|
|
16
|
-
* - 'vertesia/composableai/
|
|
17
|
-
* - 'vertesia/composableai/
|
|
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'
|
|
18
18
|
*/
|
|
19
19
|
templates: [
|
|
20
20
|
{
|
|
21
21
|
name: 'Vertesia Tool Server',
|
|
22
|
-
repository: 'vertesia/composableai/
|
|
22
|
+
repository: 'vertesia/composableai/templates/tool-server-template#preview'
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
name: 'Vertesia UI Plugin',
|
|
26
|
-
repository: 'vertesia/composableai/
|
|
26
|
+
repository: 'vertesia/composableai/templates/ui-plugin-template#preview'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'Vertesia Workflow Worker',
|
|
30
|
+
repository: 'vertesia/composableai/templates/worker-template#preview'
|
|
27
31
|
}
|
|
28
32
|
],
|
|
29
33
|
/**
|
|
@@ -40,7 +44,7 @@ export const config = {
|
|
|
40
44
|
/**
|
|
41
45
|
* Documentation URL to show in help messages
|
|
42
46
|
*/
|
|
43
|
-
docsUrl: 'https://docs.vertesia.com
|
|
47
|
+
docsUrl: 'https://docs.vertesia.com',
|
|
44
48
|
};
|
|
45
49
|
/**
|
|
46
50
|
* Validation rules for project names
|
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;;;;;;;;;;OAUG;IACH,SAAS,EAAE;QACT;YACE,IAAI,EAAE,sBAAsB;YAC5B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;;;;;;;;;OAUG;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,yDAAyD;SACtE;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"}
|
package/lib/index.js
CHANGED
|
@@ -13,7 +13,8 @@ import { selectPackageManager, installDependencies } from './package-manager.js'
|
|
|
13
13
|
import { downloadTemplate } from './download-template.js';
|
|
14
14
|
import { readTemplateConfig } from './template-config.js';
|
|
15
15
|
import { promptUser } from './prompts.js';
|
|
16
|
-
import { replaceVariables, adjustPackageJson, handleConditionalRemoves, removeMetaFiles } from './process-template.js';
|
|
16
|
+
import { replaceVariables, adjustPackageJson, handleConditionalRemoves, renameFiles, removeMetaFiles } from './process-template.js';
|
|
17
|
+
import { runPreInstallHooks, runPostInstallHooks } from './post-install.js';
|
|
17
18
|
/**
|
|
18
19
|
* Parse command line arguments
|
|
19
20
|
*/
|
|
@@ -55,11 +56,13 @@ async function main() {
|
|
|
55
56
|
}
|
|
56
57
|
catch (error) {
|
|
57
58
|
console.log(chalk.red('❌ Please specify a project name:\n'));
|
|
58
|
-
console.log(chalk.
|
|
59
|
-
console.log(chalk.
|
|
60
|
-
console.log(chalk.
|
|
61
|
-
console.log(chalk.gray('
|
|
62
|
-
console.log(chalk.
|
|
59
|
+
console.log(chalk.white('Usage:'));
|
|
60
|
+
console.log(chalk.cyan(' npx @vertesia/create-plugin') + chalk.gray(' <project-name> [options]\n'));
|
|
61
|
+
console.log(chalk.white('Example:'));
|
|
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'));
|
|
63
66
|
process.exit(1);
|
|
64
67
|
}
|
|
65
68
|
// Validate project name
|
|
@@ -82,12 +85,12 @@ async function main() {
|
|
|
82
85
|
// Show the selected template name with branch if specified
|
|
83
86
|
const branchInfo = branch ? chalk.gray(` (branch: ${branch})`) : '';
|
|
84
87
|
console.log(chalk.blue.bold(`\n🚀 Create ${selectedTemplate.name}`) + branchInfo + '\n');
|
|
85
|
-
// Step 2:
|
|
86
|
-
const packageManager = await selectPackageManager();
|
|
87
|
-
// Step 3: Download template from GitHub
|
|
88
|
+
// Step 2: Download template from GitHub
|
|
88
89
|
await downloadTemplate(projectName, selectedTemplate.repository);
|
|
89
|
-
// Step
|
|
90
|
+
// Step 3: Read template configuration
|
|
90
91
|
const templateConfig = readTemplateConfig(projectName);
|
|
92
|
+
// Step 4: Detect and select package manager (may be forced by template)
|
|
93
|
+
const packageManager = await selectPackageManager(templateConfig.packageManager);
|
|
91
94
|
// Step 5: Prompt user for configuration
|
|
92
95
|
const answers = await promptUser(projectName, templateConfig);
|
|
93
96
|
// Step 5: Replace variables in files
|
|
@@ -98,11 +101,31 @@ async function main() {
|
|
|
98
101
|
if (templateConfig.conditionalRemove) {
|
|
99
102
|
handleConditionalRemoves(projectName, templateConfig, answers);
|
|
100
103
|
}
|
|
101
|
-
// Step 8:
|
|
104
|
+
// Step 8: Rename files (e.g., .env.template -> .env)
|
|
105
|
+
renameFiles(projectName, templateConfig);
|
|
106
|
+
// Step 9: Remove meta files
|
|
102
107
|
removeMetaFiles(projectName, templateConfig);
|
|
103
|
-
// Step 9:
|
|
104
|
-
|
|
105
|
-
|
|
108
|
+
// Step 9: Run pre-install hooks (if any) - e.g., CLI authentication for private registries
|
|
109
|
+
let skipDependencyInstall = false;
|
|
110
|
+
if (templateConfig.preInstall) {
|
|
111
|
+
const preInstallSuccess = await runPreInstallHooks(projectName, templateConfig.preInstall, packageManager);
|
|
112
|
+
if (!preInstallSuccess) {
|
|
113
|
+
console.log(chalk.yellow('⚠️ Pre-install hooks failed. Skipping dependency installation.\n'));
|
|
114
|
+
console.log(chalk.gray('You can install dependencies manually after resolving the issue:\n'));
|
|
115
|
+
console.log(chalk.gray(` cd ${projectName}`));
|
|
116
|
+
console.log(chalk.gray(` ${packageManager} install\n`));
|
|
117
|
+
skipDependencyInstall = true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Step 10: Install dependencies
|
|
121
|
+
if (!skipDependencyInstall) {
|
|
122
|
+
await installDependencies(projectName, packageManager);
|
|
123
|
+
}
|
|
124
|
+
// Step 11: Run post-install hooks (if any)
|
|
125
|
+
if (!skipDependencyInstall && templateConfig.postInstall) {
|
|
126
|
+
await runPostInstallHooks(projectName, templateConfig.postInstall, packageManager);
|
|
127
|
+
}
|
|
128
|
+
// Step 12: Success!
|
|
106
129
|
showSuccess(projectName, packageManager, selectedTemplate.name, selectedTemplate.repository);
|
|
107
130
|
}
|
|
108
131
|
catch (error) {
|
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,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EAChB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/package-manager.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Detect available package managers and let user choose
|
|
3
3
|
* Returns the selected package manager ('pnpm' or 'npm')
|
|
4
|
+
* @param forcedPackageManager - If specified, skip selection and use this package manager
|
|
4
5
|
*/
|
|
5
|
-
export declare function selectPackageManager(): Promise<string>;
|
|
6
|
+
export declare function selectPackageManager(forcedPackageManager?: 'pnpm' | 'npm'): Promise<string>;
|
|
6
7
|
/**
|
|
7
8
|
* Install dependencies using the specified package manager
|
|
8
9
|
*/
|
|
@@ -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;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CA4CjG;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
|
@@ -22,14 +22,23 @@ function commandExists(command) {
|
|
|
22
22
|
/**
|
|
23
23
|
* Detect available package managers and let user choose
|
|
24
24
|
* Returns the selected package manager ('pnpm' or 'npm')
|
|
25
|
+
* @param forcedPackageManager - If specified, skip selection and use this package manager
|
|
25
26
|
*/
|
|
26
|
-
export async function selectPackageManager() {
|
|
27
|
+
export async function selectPackageManager(forcedPackageManager) {
|
|
27
28
|
const hasPnpm = commandExists('pnpm');
|
|
28
29
|
const hasNpm = commandExists('npm');
|
|
29
30
|
// If npm is not installed, something is seriously wrong
|
|
30
31
|
if (!hasNpm) {
|
|
31
32
|
throw new Error('npm is not installed. Please install Node.js and npm first.');
|
|
32
33
|
}
|
|
34
|
+
// If a specific package manager is forced by the template
|
|
35
|
+
if (forcedPackageManager) {
|
|
36
|
+
if (forcedPackageManager === 'pnpm' && !hasPnpm) {
|
|
37
|
+
throw new Error('This template requires pnpm. Please install it first: npm install -g pnpm');
|
|
38
|
+
}
|
|
39
|
+
console.log(chalk.gray(`Using ${forcedPackageManager} (required by template)\n`));
|
|
40
|
+
return forcedPackageManager;
|
|
41
|
+
}
|
|
33
42
|
// If pnpm is not installed, use npm
|
|
34
43
|
if (!hasPnpm) {
|
|
35
44
|
console.log(chalk.gray('Using npm (pnpm not found)\n'));
|
|
@@ -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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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PostInstallConfig, PreInstallConfig } from './template-config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Run pre-install hooks (before npm install)
|
|
4
|
+
* Returns true if all required hooks succeeded, false otherwise
|
|
5
|
+
*/
|
|
6
|
+
export declare function runPreInstallHooks(projectName: string, preInstall: PreInstallConfig, packageManager: string): Promise<boolean>;
|
|
7
|
+
/**
|
|
8
|
+
* Run post-install hooks (after npm install)
|
|
9
|
+
*/
|
|
10
|
+
export declare function runPostInstallHooks(projectName: string, postInstall: PostInstallConfig, packageManager: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=post-install.d.ts.map
|
|
@@ -0,0 +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;AAmJ3E;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install hooks for running commands before/after project creation
|
|
3
|
+
*/
|
|
4
|
+
import { spawn, spawnSync } from 'child_process';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import prompts from 'prompts';
|
|
7
|
+
/**
|
|
8
|
+
* Check if a command exists in PATH
|
|
9
|
+
*/
|
|
10
|
+
function commandExists(command) {
|
|
11
|
+
const result = spawnSync(process.platform === 'win32' ? 'where' : 'which', [command], {
|
|
12
|
+
stdio: 'ignore'
|
|
13
|
+
});
|
|
14
|
+
return result.status === 0;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Install a global npm package
|
|
18
|
+
*/
|
|
19
|
+
async function installGlobalPackage(packageName, packageManager) {
|
|
20
|
+
console.log(chalk.blue(`📦 Installing ${packageName}...\n`));
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
const args = packageManager === 'npm'
|
|
23
|
+
? ['install', '-g', packageName]
|
|
24
|
+
: ['add', '-g', packageName];
|
|
25
|
+
const child = spawn(packageManager, args, {
|
|
26
|
+
stdio: 'inherit',
|
|
27
|
+
shell: true
|
|
28
|
+
});
|
|
29
|
+
child.on('close', (code) => {
|
|
30
|
+
if (code === 0) {
|
|
31
|
+
console.log(chalk.green(` ✓ ${packageName} installed successfully\n`));
|
|
32
|
+
resolve(true);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log(chalk.yellow(` ⚠️ Failed to install ${packageName}\n`));
|
|
36
|
+
resolve(false);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
child.on('error', () => {
|
|
40
|
+
console.log(chalk.yellow(` ⚠️ Failed to install ${packageName}\n`));
|
|
41
|
+
resolve(false);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Run a command in the project directory
|
|
47
|
+
* Uses npx to ensure globally installed packages are found even if PATH hasn't been refreshed
|
|
48
|
+
*/
|
|
49
|
+
async function runCommand(command, cwd) {
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
// Use npx to run the command - this ensures we find globally installed packages
|
|
52
|
+
// even if the shell's PATH hasn't been refreshed after installation
|
|
53
|
+
const child = spawn('npx', ['--yes', ...command.split(' ')], {
|
|
54
|
+
stdio: 'inherit',
|
|
55
|
+
shell: true,
|
|
56
|
+
cwd
|
|
57
|
+
});
|
|
58
|
+
child.on('close', (code) => {
|
|
59
|
+
resolve(code === 0);
|
|
60
|
+
});
|
|
61
|
+
child.on('error', () => {
|
|
62
|
+
resolve(false);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Run install hooks (shared implementation for pre and post install)
|
|
68
|
+
*/
|
|
69
|
+
async function runInstallHooks(projectName, config, packageManager, phase) {
|
|
70
|
+
if (!config.commands || config.commands.length === 0) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
const phaseLabel = phase === 'pre' ? 'pre-install' : 'post-install';
|
|
74
|
+
console.log(chalk.blue(`🔧 Running ${phaseLabel} hooks...\n`));
|
|
75
|
+
// Check and install CLI package if needed
|
|
76
|
+
if (config.cliPackage) {
|
|
77
|
+
// Extract the CLI binary name from the package (e.g., @vertesia/cli -> vertesia)
|
|
78
|
+
// For scoped packages like @vertesia/cli, the binary is typically the scope name (vertesia)
|
|
79
|
+
const scopeMatch = config.cliPackage.match(/^@([^/]+)\//);
|
|
80
|
+
const cliBinary = scopeMatch ? scopeMatch[1] : config.cliPackage.replace(/-cli$/, '');
|
|
81
|
+
if (!commandExists(cliBinary)) {
|
|
82
|
+
const { installCli } = await prompts({
|
|
83
|
+
type: 'confirm',
|
|
84
|
+
name: 'installCli',
|
|
85
|
+
message: `The ${config.cliPackage} package is required. Do you want to install it globally?`,
|
|
86
|
+
initial: true
|
|
87
|
+
});
|
|
88
|
+
if (installCli) {
|
|
89
|
+
const installed = await installGlobalPackage(config.cliPackage, packageManager);
|
|
90
|
+
if (!installed) {
|
|
91
|
+
console.log(chalk.yellow(` ⚠️ Skipping ${phaseLabel} commands that require the CLI\n`));
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.log(chalk.yellow(` ⚠️ Skipping ${phaseLabel} commands that require the CLI\n`));
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Run each command
|
|
102
|
+
for (const cmd of config.commands) {
|
|
103
|
+
if (cmd.optional) {
|
|
104
|
+
const promptMessage = cmd.prompt || `Do you want to run "${cmd.name}"?`;
|
|
105
|
+
const { proceed } = await prompts({
|
|
106
|
+
type: 'confirm',
|
|
107
|
+
name: 'proceed',
|
|
108
|
+
message: promptMessage,
|
|
109
|
+
initial: true
|
|
110
|
+
});
|
|
111
|
+
if (!proceed) {
|
|
112
|
+
console.log(chalk.gray(` ⏭️ Skipped: ${cmd.name}\n`));
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
console.log(chalk.gray(` Running: ${cmd.name}...`));
|
|
117
|
+
const success = await runCommand(cmd.command, projectName);
|
|
118
|
+
if (success) {
|
|
119
|
+
console.log(chalk.green(` ✓ ${cmd.name} completed\n`));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(chalk.yellow(` ⚠️ ${cmd.name} failed (you can run it manually later)\n`));
|
|
123
|
+
// For pre-install, a failure is critical - return false to skip dependency installation
|
|
124
|
+
if (phase === 'pre') {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Run pre-install hooks (before npm install)
|
|
133
|
+
* Returns true if all required hooks succeeded, false otherwise
|
|
134
|
+
*/
|
|
135
|
+
export async function runPreInstallHooks(projectName, preInstall, packageManager) {
|
|
136
|
+
return runInstallHooks(projectName, preInstall, packageManager, 'pre');
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Run post-install hooks (after npm install)
|
|
140
|
+
*/
|
|
141
|
+
export async function runPostInstallHooks(projectName, postInstall, packageManager) {
|
|
142
|
+
await runInstallHooks(projectName, postInstall, packageManager, 'post');
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=post-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,13 +11,18 @@ export declare function replaceVariables(projectName: string, templateConfig: Te
|
|
|
11
11
|
/**
|
|
12
12
|
* Adjust package.json after variable replacement
|
|
13
13
|
* 1. Sets the package name to PROJECT_NAME
|
|
14
|
-
* 2.
|
|
14
|
+
* 2. Resolves workspace:* dependencies to actual latest versions
|
|
15
15
|
*/
|
|
16
16
|
export declare function adjustPackageJson(projectName: string, answers: Record<string, any>): void;
|
|
17
17
|
/**
|
|
18
18
|
* Handle conditional file removal based on user answers
|
|
19
19
|
*/
|
|
20
20
|
export declare function handleConditionalRemoves(projectName: string, templateConfig: TemplateConfig, answers: Record<string, any>): void;
|
|
21
|
+
/**
|
|
22
|
+
* Rename files based on template configuration
|
|
23
|
+
* Useful for files like .env.template -> .env that can't be committed to git
|
|
24
|
+
*/
|
|
25
|
+
export declare function renameFiles(projectName: string, templateConfig: TemplateConfig): void;
|
|
21
26
|
/**
|
|
22
27
|
* Remove meta files that shouldn't be in the user's project
|
|
23
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-template.d.ts","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process-template.d.ts","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwFtD;;;;;;;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,GAAG,IAAI,CAwDzF;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
|
@@ -4,6 +4,23 @@
|
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import chalk from 'chalk';
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
/**
|
|
9
|
+
* Get the latest version of an npm package
|
|
10
|
+
* Returns the version string (e.g., "1.2.3") or null if not found
|
|
11
|
+
*/
|
|
12
|
+
function getLatestVersion(packageName) {
|
|
13
|
+
try {
|
|
14
|
+
const result = execSync(`npm view ${packageName} version`, {
|
|
15
|
+
encoding: 'utf8',
|
|
16
|
+
stdio: ['pipe', 'pipe', 'ignore']
|
|
17
|
+
});
|
|
18
|
+
return result.trim();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
7
24
|
/**
|
|
8
25
|
* Escape special regex characters
|
|
9
26
|
*/
|
|
@@ -104,7 +121,7 @@ export function replaceVariables(projectName, templateConfig, answers) {
|
|
|
104
121
|
/**
|
|
105
122
|
* Adjust package.json after variable replacement
|
|
106
123
|
* 1. Sets the package name to PROJECT_NAME
|
|
107
|
-
* 2.
|
|
124
|
+
* 2. Resolves workspace:* dependencies to actual latest versions
|
|
108
125
|
*/
|
|
109
126
|
export function adjustPackageJson(projectName, answers) {
|
|
110
127
|
console.log(chalk.blue('📝 Adjusting package.json...\n'));
|
|
@@ -122,21 +139,30 @@ export function adjustPackageJson(projectName, answers) {
|
|
|
122
139
|
packageJson.name = newName;
|
|
123
140
|
console.log(chalk.gray(` ✓ Set package name to "${newName}"`));
|
|
124
141
|
}
|
|
125
|
-
// 2. Replace workspace:* with
|
|
142
|
+
// 2. Replace workspace:* with actual latest versions
|
|
143
|
+
const internalScopes = ['@vertesia/', '@llumiverse/', '@dglabs/'];
|
|
126
144
|
let workspaceReplacements = 0;
|
|
127
145
|
['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'].forEach(depType => {
|
|
128
146
|
if (packageJson[depType]) {
|
|
129
147
|
Object.keys(packageJson[depType]).forEach(pkgName => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
148
|
+
const isInternalPackage = internalScopes.some(scope => pkgName.startsWith(scope));
|
|
149
|
+
if (isInternalPackage && packageJson[depType][pkgName] === 'workspace:*') {
|
|
150
|
+
const latestVersion = getLatestVersion(pkgName);
|
|
151
|
+
if (latestVersion) {
|
|
152
|
+
packageJson[depType][pkgName] = `^${latestVersion}`;
|
|
153
|
+
workspaceReplacements++;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Fallback to 'latest' if we can't fetch the version
|
|
157
|
+
packageJson[depType][pkgName] = 'latest';
|
|
158
|
+
workspaceReplacements++;
|
|
159
|
+
}
|
|
134
160
|
}
|
|
135
161
|
});
|
|
136
162
|
}
|
|
137
163
|
});
|
|
138
164
|
if (workspaceReplacements > 0) {
|
|
139
|
-
console.log(chalk.gray(` ✓
|
|
165
|
+
console.log(chalk.gray(` ✓ Resolved ${workspaceReplacements} workspace:* dependencies to latest versions`));
|
|
140
166
|
}
|
|
141
167
|
// Write back to file
|
|
142
168
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
|
|
@@ -168,6 +194,27 @@ export function handleConditionalRemoves(projectName, templateConfig, answers) {
|
|
|
168
194
|
}
|
|
169
195
|
console.log();
|
|
170
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Rename files based on template configuration
|
|
199
|
+
* Useful for files like .env.template -> .env that can't be committed to git
|
|
200
|
+
*/
|
|
201
|
+
export function renameFiles(projectName, templateConfig) {
|
|
202
|
+
if (!templateConfig.renameFiles)
|
|
203
|
+
return;
|
|
204
|
+
console.log(chalk.blue('📝 Renaming files...\n'));
|
|
205
|
+
for (const [source, destination] of Object.entries(templateConfig.renameFiles)) {
|
|
206
|
+
const sourcePath = path.join(projectName, source);
|
|
207
|
+
const destPath = path.join(projectName, destination);
|
|
208
|
+
if (fs.existsSync(sourcePath)) {
|
|
209
|
+
fs.renameSync(sourcePath, destPath);
|
|
210
|
+
console.log(chalk.gray(` ✓ ${source} → ${destination}`));
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
console.log(chalk.yellow(` ⚠️ File not found: ${source} (skipping rename)`));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
console.log();
|
|
217
|
+
}
|
|
171
218
|
/**
|
|
172
219
|
* Remove meta files that shouldn't be in the user's project
|
|
173
220
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-template.js","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,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.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;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CA2FlH"}
|
package/lib/prompts.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import prompts from 'prompts';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
-
import { applyTransform } from './transforms.js';
|
|
6
|
+
import { applyTransform, concatValues } from './transforms.js';
|
|
7
7
|
/**
|
|
8
8
|
* Prompt user for configuration values
|
|
9
9
|
*/
|
|
@@ -23,6 +23,32 @@ export async function promptUser(projectName, templateConfig) {
|
|
|
23
23
|
if (typeof prompt.initial === 'string') {
|
|
24
24
|
prompt.initial = prompt.initial.replace(/\$\{PROJECT_NAME\}/g, projectName);
|
|
25
25
|
}
|
|
26
|
+
// Convert validate string to function
|
|
27
|
+
// Can be either a regex pattern (e.g., "^[a-z]+$") or a function string (e.g., "(v) => v.length > 0")
|
|
28
|
+
if (typeof prompt.validate === 'string') {
|
|
29
|
+
const validateStr = prompt.validate;
|
|
30
|
+
if (validateStr.includes('=>') || validateStr.includes('function')) {
|
|
31
|
+
// It's a function string - evaluate it
|
|
32
|
+
try {
|
|
33
|
+
prompt.validate = eval(validateStr);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// If eval fails, remove the validator
|
|
37
|
+
delete prompt.validate;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// It's a regex pattern
|
|
42
|
+
try {
|
|
43
|
+
const regex = new RegExp(validateStr);
|
|
44
|
+
prompt.validate = (value) => regex.test(value) || `Must match pattern: ${validateStr}`;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// If regex is invalid, remove the validator
|
|
48
|
+
delete prompt.validate;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
26
52
|
return prompt;
|
|
27
53
|
});
|
|
28
54
|
const answers = await prompts(processedPrompts, {
|
|
@@ -36,16 +62,33 @@ export async function promptUser(projectName, templateConfig) {
|
|
|
36
62
|
}
|
|
37
63
|
// Process derived variables
|
|
38
64
|
if (templateConfig.derived) {
|
|
39
|
-
for (const [targetName,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
for (const [targetName, derivedConfig] of Object.entries(templateConfig.derived)) {
|
|
66
|
+
try {
|
|
67
|
+
if (derivedConfig.transform === 'concat') {
|
|
68
|
+
// Handle concat transform with multiple source fields
|
|
69
|
+
const sourceFields = Array.isArray(derivedConfig.from) ? derivedConfig.from : [derivedConfig.from];
|
|
70
|
+
const values = sourceFields.map(field => {
|
|
71
|
+
const value = answers[field];
|
|
72
|
+
if (value === undefined) {
|
|
73
|
+
throw new Error(`Source field "${field}" not found in answers`);
|
|
74
|
+
}
|
|
75
|
+
return String(value);
|
|
76
|
+
});
|
|
77
|
+
answers[targetName] = concatValues(values, derivedConfig.separator || '');
|
|
44
78
|
}
|
|
45
|
-
|
|
46
|
-
|
|
79
|
+
else {
|
|
80
|
+
// Handle single-source transforms
|
|
81
|
+
const sourceField = Array.isArray(derivedConfig.from) ? derivedConfig.from[0] : derivedConfig.from;
|
|
82
|
+
const sourceValue = answers[sourceField];
|
|
83
|
+
if (sourceValue !== undefined) {
|
|
84
|
+
answers[targetName] = applyTransform(String(sourceValue), derivedConfig.transform);
|
|
85
|
+
}
|
|
47
86
|
}
|
|
48
87
|
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const fromStr = Array.isArray(derivedConfig.from) ? derivedConfig.from.join(', ') : derivedConfig.from;
|
|
90
|
+
throw new Error(`Failed to derive ${targetName} from ${fromStr}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
91
|
+
}
|
|
49
92
|
}
|
|
50
93
|
}
|
|
51
94
|
console.log(); // Empty line after prompts
|
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,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/lib/template-config.d.ts
CHANGED
|
@@ -14,12 +14,20 @@ export interface TemplateConfig {
|
|
|
14
14
|
version: string;
|
|
15
15
|
/** Optional human-readable description of the template */
|
|
16
16
|
description?: string;
|
|
17
|
+
/** Optional package manager to force (skips selection prompt) */
|
|
18
|
+
packageManager?: 'pnpm' | 'npm';
|
|
17
19
|
/** Array of prompts to ask the user during installation */
|
|
18
20
|
prompts: PromptConfig[];
|
|
19
21
|
/** Array of file paths where {{VARIABLE}} replacement should occur */
|
|
20
22
|
files: string[];
|
|
21
23
|
/** Optional array of file paths to remove after installation (e.g., template.config.json) */
|
|
22
24
|
removeAfterInstall?: string[];
|
|
25
|
+
/**
|
|
26
|
+
* Optional file renaming after variable replacement
|
|
27
|
+
* Format: { "source": "destination" }
|
|
28
|
+
* Example: { ".env.template": ".env" }
|
|
29
|
+
*/
|
|
30
|
+
renameFiles?: Record<string, string>;
|
|
23
31
|
/**
|
|
24
32
|
* Optional conditional file removal based on user answers
|
|
25
33
|
* Format: { "VARIABLE_NAME": { "value": ["files", "to", "remove"] } }
|
|
@@ -29,19 +37,63 @@ export interface TemplateConfig {
|
|
|
29
37
|
/**
|
|
30
38
|
* Optional derived variables computed from user answers
|
|
31
39
|
* Format: { "NEW_VAR": { "from": "SOURCE_VAR", "transform": "pascalCase" } }
|
|
32
|
-
* Supported transforms: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase"
|
|
40
|
+
* Supported transforms: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase", "concat"
|
|
33
41
|
* Example: { "ComponentName": { "from": "PROJECT_NAME", "transform": "pascalCase" } }
|
|
42
|
+
* For concat: { "SERVICE_NAME": { "from": ["ORG", "NAME"], "transform": "concat", "separator": "_" } }
|
|
34
43
|
*/
|
|
35
44
|
derived?: Record<string, DerivedVariable>;
|
|
45
|
+
/**
|
|
46
|
+
* Optional pre-install hooks to run before dependencies are installed
|
|
47
|
+
* Used for CLI authentication, registry setup, etc.
|
|
48
|
+
*/
|
|
49
|
+
preInstall?: PreInstallConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Optional post-install hooks to run after the project is created
|
|
52
|
+
* Used for additional setup commands, etc.
|
|
53
|
+
*/
|
|
54
|
+
postInstall?: PostInstallConfig;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Configuration for pre-install hooks (runs before npm install)
|
|
58
|
+
*/
|
|
59
|
+
export interface PreInstallConfig {
|
|
60
|
+
/** Commands to run before installation */
|
|
61
|
+
commands: PostInstallCommand[];
|
|
62
|
+
/** CLI package to install globally before running commands (e.g., "@vertesia/cli") */
|
|
63
|
+
cliPackage?: string;
|
|
36
64
|
}
|
|
37
65
|
/**
|
|
38
66
|
* Configuration for a derived variable computed from user input
|
|
39
67
|
*/
|
|
40
68
|
export interface DerivedVariable {
|
|
41
|
-
/** Source variable name to derive from */
|
|
42
|
-
from: string;
|
|
43
|
-
/** Transformation to apply: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase" */
|
|
69
|
+
/** Source variable name(s) to derive from. Can be a single string or array of strings for concat transform */
|
|
70
|
+
from: string | string[];
|
|
71
|
+
/** Transformation to apply: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase", "concat" */
|
|
44
72
|
transform: string;
|
|
73
|
+
/** Separator for concat transform (default: "") */
|
|
74
|
+
separator?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Configuration for a post-install command
|
|
78
|
+
*/
|
|
79
|
+
export interface PostInstallCommand {
|
|
80
|
+
/** Display name for the command */
|
|
81
|
+
name: string;
|
|
82
|
+
/** Command to execute */
|
|
83
|
+
command: string;
|
|
84
|
+
/** If true, prompt user before running and allow skipping */
|
|
85
|
+
optional?: boolean;
|
|
86
|
+
/** Prompt message to show if optional (default: "Do you want to run {name}?") */
|
|
87
|
+
prompt?: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Configuration for post-install hooks
|
|
91
|
+
*/
|
|
92
|
+
export interface PostInstallConfig {
|
|
93
|
+
/** Commands to run after installation */
|
|
94
|
+
commands: PostInstallCommand[];
|
|
95
|
+
/** CLI package to install globally before running commands (e.g., "@vertesia/cli") */
|
|
96
|
+
cliPackage?: string;
|
|
45
97
|
}
|
|
46
98
|
/**
|
|
47
99
|
* Configuration for a single prompt shown to the user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-config.d.ts","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAEhB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2DAA2D;IAC3D,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7D
|
|
1
|
+
{"version":3,"file":"template-config.d.ts","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAEhB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEhC,2DAA2D;IAC3D,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7D;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE1C;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAE/B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8GAA8G;IAC9G,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,oIAAoI;IACpI,SAAS,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAEhB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAE/B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IAEb,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAatE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-config.js","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"template-config.js","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAqK5C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAErE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IACzH,CAAC;AACH,CAAC"}
|
package/lib/transforms.d.ts
CHANGED
|
@@ -30,4 +30,8 @@ export declare function toTitleCase(str: string): string;
|
|
|
30
30
|
* Apply a transformation to a string value
|
|
31
31
|
*/
|
|
32
32
|
export declare function applyTransform(value: string, transform: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Concatenate multiple values with a separator
|
|
35
|
+
*/
|
|
36
|
+
export declare function concatValues(values: string[], separator?: string): string;
|
|
33
37
|
//# sourceMappingURL=transforms.d.ts.map
|
package/lib/transforms.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBvE"}
|
|
1
|
+
{"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAE7E"}
|
package/lib/transforms.js
CHANGED
|
@@ -78,4 +78,10 @@ export function applyTransform(value, transform) {
|
|
|
78
78
|
throw new Error(`Unknown transform: ${transform}`);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Concatenate multiple values with a separator
|
|
83
|
+
*/
|
|
84
|
+
export function concatValues(values, separator = '') {
|
|
85
|
+
return values.join(separator);
|
|
86
|
+
}
|
|
81
87
|
//# sourceMappingURL=transforms.js.map
|
package/lib/transforms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,SAAiB;IAC7D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,SAAiB;IAC7D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAgB,EAAE,YAAoB,EAAE;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC"}
|