@tachles/starter 1.0.3 ā 1.1.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/dist/api/types.d.ts +1 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +31 -38
- package/dist/commands/install.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/recipe/executor.d.ts +3 -1
- package/dist/recipe/executor.d.ts.map +1 -1
- package/dist/recipe/executor.js +97 -53
- package/dist/recipe/executor.js.map +1 -1
- package/package.json +1 -1
package/dist/api/types.d.ts
CHANGED
package/dist/api/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC9C;AAGD,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAiBxD,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,iBAgFxB"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import ora from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { RecipeExecutor } from '../recipe/executor.js';
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import { TachlesAPIClient } from "../api/client.js";
|
|
4
|
+
import { RecipePrompter } from "../recipe/prompter.js";
|
|
5
|
+
import { RecipeExecutor } from "../recipe/executor.js";
|
|
7
6
|
export async function installTemplate(templateArg, options) {
|
|
8
7
|
// Parse template@version syntax
|
|
9
8
|
const { templateId, version } = parseTemplateArg(templateArg);
|
|
10
|
-
const spinner = ora(
|
|
9
|
+
const spinner = ora("Fetching template...").start();
|
|
11
10
|
try {
|
|
12
11
|
const api = new TachlesAPIClient(undefined, options.verbose);
|
|
13
12
|
// Fetch template with options
|
|
@@ -18,12 +17,16 @@ export async function installTemplate(templateArg, options) {
|
|
|
18
17
|
// Show cache information
|
|
19
18
|
if (response.cacheInfo) {
|
|
20
19
|
const cacheStatus = response.cacheInfo.status;
|
|
21
|
-
const cacheIcon = cacheStatus ===
|
|
22
|
-
const versionStr = response.data.version
|
|
20
|
+
const cacheIcon = cacheStatus === "HIT" ? "ā”" : cacheStatus === "MISS" ? "š¾" : "š”";
|
|
21
|
+
const versionStr = response.data.version
|
|
22
|
+
? `(v${response.data.version})`
|
|
23
|
+
: "";
|
|
23
24
|
spinner.succeed(`${cacheIcon} Fetched template: ${templateId} ${versionStr} [Cache: ${cacheStatus}]`);
|
|
24
25
|
}
|
|
25
26
|
else {
|
|
26
|
-
const versionStr = response.data.version
|
|
27
|
+
const versionStr = response.data.version
|
|
28
|
+
? `(v${response.data.version})`
|
|
29
|
+
: "";
|
|
27
30
|
spinner.succeed(`Fetched template: ${templateId} ${versionStr}`);
|
|
28
31
|
}
|
|
29
32
|
const recipe = response.data.recipe;
|
|
@@ -41,37 +44,26 @@ export async function installTemplate(templateArg, options) {
|
|
|
41
44
|
// Execute recipe
|
|
42
45
|
const executor = new RecipeExecutor(selections, options.yes);
|
|
43
46
|
await executor.execute(recipe);
|
|
44
|
-
|
|
45
|
-
const projectId = createHash('sha256')
|
|
46
|
-
.update(process.cwd())
|
|
47
|
-
.digest('hex');
|
|
48
|
-
await api.reportInstallation({
|
|
49
|
-
templateId,
|
|
50
|
-
templateVersion: response.data.version,
|
|
51
|
-
projectId,
|
|
52
|
-
selections,
|
|
53
|
-
});
|
|
54
|
-
console.log(chalk.green('\\n⨠Template installed successfully!\\n'));
|
|
47
|
+
console.log(chalk.green("\\n⨠Template installed successfully!\\n"));
|
|
55
48
|
// Show next steps
|
|
56
49
|
if (recipe.envKeys && recipe.envKeys.length > 0) {
|
|
57
|
-
console.log(chalk.blue(
|
|
58
|
-
console.log(chalk.dim(
|
|
59
|
-
console.log(chalk.dim(
|
|
50
|
+
console.log(chalk.blue("Next steps:"));
|
|
51
|
+
console.log(chalk.dim("1. Configure your environment variables in .env"));
|
|
52
|
+
console.log(chalk.dim("2. Start your development server"));
|
|
60
53
|
console.log();
|
|
61
54
|
}
|
|
62
55
|
}
|
|
63
56
|
catch (error) {
|
|
64
|
-
spinner.fail(
|
|
57
|
+
spinner.fail("Installation failed");
|
|
65
58
|
if (error.response?.status === 404) {
|
|
66
59
|
console.error(chalk.red(`\nā Template "${templateId}" not found`));
|
|
67
60
|
}
|
|
68
61
|
else if (error.response?.status === 401) {
|
|
69
|
-
console.error(chalk.red(
|
|
62
|
+
console.error(chalk.red("\nā Authentication required for this template"));
|
|
70
63
|
}
|
|
71
64
|
else {
|
|
72
65
|
console.error(chalk.red(`\nā ${error.message}\n`));
|
|
73
66
|
}
|
|
74
|
-
throw error;
|
|
75
67
|
}
|
|
76
68
|
}
|
|
77
69
|
/**
|
|
@@ -79,7 +71,7 @@ export async function installTemplate(templateArg, options) {
|
|
|
79
71
|
* Supports: "template-name" or "template-name@1.2.0"
|
|
80
72
|
*/
|
|
81
73
|
function parseTemplateArg(templateArg) {
|
|
82
|
-
const atIndex = templateArg.lastIndexOf(
|
|
74
|
+
const atIndex = templateArg.lastIndexOf("@");
|
|
83
75
|
// No @ symbol, just template ID
|
|
84
76
|
if (atIndex === -1) {
|
|
85
77
|
return { templateId: templateArg };
|
|
@@ -88,7 +80,7 @@ function parseTemplateArg(templateArg) {
|
|
|
88
80
|
const templateId = templateArg.substring(0, atIndex);
|
|
89
81
|
const version = templateArg.substring(atIndex + 1);
|
|
90
82
|
// Validate version format (basic check)
|
|
91
|
-
if (!version || version.trim() ===
|
|
83
|
+
if (!version || version.trim() === "") {
|
|
92
84
|
return { templateId: templateArg }; // Treat as no version
|
|
93
85
|
}
|
|
94
86
|
return { templateId, version };
|
|
@@ -96,11 +88,12 @@ function parseTemplateArg(templateArg) {
|
|
|
96
88
|
function getDefaultSelections(variables) {
|
|
97
89
|
const selections = {};
|
|
98
90
|
for (const variable of variables) {
|
|
99
|
-
if (variable.type ===
|
|
91
|
+
if (variable.type === "confirm") {
|
|
100
92
|
selections[variable.key] = variable.defaultValue ?? true;
|
|
101
93
|
}
|
|
102
|
-
else if (variable.type ===
|
|
103
|
-
selections[variable.key] =
|
|
94
|
+
else if (variable.type === "select") {
|
|
95
|
+
selections[variable.key] =
|
|
96
|
+
variable.defaultValue || variable.options[0].value;
|
|
104
97
|
}
|
|
105
98
|
}
|
|
106
99
|
return selections;
|
|
@@ -121,26 +114,26 @@ function displayTemplateHelp(templateId, version, metadata, variables) {
|
|
|
121
114
|
}
|
|
122
115
|
console.log();
|
|
123
116
|
}
|
|
124
|
-
console.log(chalk.blue(
|
|
117
|
+
console.log(chalk.blue("Configuration Options:\\n"));
|
|
125
118
|
for (const variable of variables) {
|
|
126
|
-
if (variable.type ===
|
|
119
|
+
if (variable.type === "confirm") {
|
|
127
120
|
console.log(chalk.bold(` ${variable.label}`));
|
|
128
121
|
console.log(chalk.dim(` Type: Yes/No`));
|
|
129
|
-
console.log(chalk.dim(` Default: ${variable.defaultValue ?
|
|
122
|
+
console.log(chalk.dim(` Default: ${variable.defaultValue ? "Yes" : "No"}`));
|
|
130
123
|
console.log();
|
|
131
124
|
}
|
|
132
|
-
else if (variable.type ===
|
|
125
|
+
else if (variable.type === "select") {
|
|
133
126
|
console.log(chalk.bold(` ${variable.label}`));
|
|
134
127
|
console.log(chalk.dim(` Type: Select one`));
|
|
135
128
|
console.log(chalk.dim(` Options:`));
|
|
136
129
|
variable.options.forEach((opt) => {
|
|
137
|
-
const isDefault = opt.value === variable.defaultValue ?
|
|
130
|
+
const isDefault = opt.value === variable.defaultValue ? " (default)" : "";
|
|
138
131
|
console.log(chalk.dim(` - ${opt.label}${isDefault}`));
|
|
139
132
|
});
|
|
140
133
|
console.log();
|
|
141
134
|
}
|
|
142
135
|
}
|
|
143
|
-
console.log(chalk.blue(
|
|
136
|
+
console.log(chalk.blue("Usage:\\n"));
|
|
144
137
|
console.log(chalk.dim(` npx @tachles/starter ${templateId}`));
|
|
145
138
|
console.log(chalk.dim(` npx @tachles/starter ${templateId}@${version}`));
|
|
146
139
|
console.log(chalk.dim(` npx @tachles/starter ${templateId} -y # Use defaults`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const API_BASE_URL = process.env.TACHLES_API_URL || 'https://
|
|
1
|
+
export const API_BASE_URL = process.env.TACHLES_API_URL || 'https://starter.tachles.dev/api';
|
|
2
2
|
export const CLI_NAME = '@tachles/starter';
|
|
3
3
|
export const CLI_VERSION = '1.0.0';
|
|
4
4
|
//# sourceMappingURL=constants.js.map
|
|
@@ -4,9 +4,11 @@ export declare class RecipeExecutor {
|
|
|
4
4
|
private skipYes;
|
|
5
5
|
constructor(selections: Record<string, string | boolean>, skipYes?: boolean);
|
|
6
6
|
execute(recipe: Recipe): Promise<void>;
|
|
7
|
+
private calculateTotalSteps;
|
|
8
|
+
private countOperations;
|
|
7
9
|
private executeOperations;
|
|
8
10
|
private installPackages;
|
|
9
11
|
private setupEnvVariables;
|
|
10
|
-
private
|
|
12
|
+
private runCommand;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/recipe/executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAuD,MAAM,iBAAiB,CAAC;AAG9F,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,OAAO,CAAU;gBAEb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,OAAO,UAAQ;IAKnE,OAAO,CAAC,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/recipe/executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAuD,MAAM,iBAAiB,CAAC;AAG9F,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,OAAO,CAAU;gBAEb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,OAAO,UAAQ;IAKnE,OAAO,CAAC,MAAM,EAAE,MAAM;IA4B5B,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,eAAe;YAQT,iBAAiB;YA2BjB,eAAe;YAwBf,iBAAiB;YAWjB,UAAU;CAgDzB"}
|
package/dist/recipe/executor.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
|
-
import ora from 'ora';
|
|
3
2
|
import chalk from 'chalk';
|
|
4
3
|
import { detectPackageManager } from '../utils/package-manager.js';
|
|
5
4
|
export class RecipeExecutor {
|
|
@@ -10,105 +9,150 @@ export class RecipeExecutor {
|
|
|
10
9
|
this.skipYes = skipYes;
|
|
11
10
|
}
|
|
12
11
|
async execute(recipe) {
|
|
13
|
-
|
|
12
|
+
// Calculate total steps
|
|
13
|
+
const totalSteps = this.calculateTotalSteps(recipe);
|
|
14
|
+
let currentStep = 0;
|
|
15
|
+
console.log(chalk.blue(`\nš Starting installation (${totalSteps} steps)\n`));
|
|
14
16
|
for (const variable of recipe.variables) {
|
|
15
17
|
if (variable.type === 'confirm') {
|
|
16
18
|
const answer = this.selections[variable.key];
|
|
17
19
|
const operations = answer ? variable.onTrue : variable.onFalse;
|
|
18
20
|
if (operations) {
|
|
19
|
-
await this.executeOperations(operations);
|
|
21
|
+
currentStep = await this.executeOperations(operations, currentStep, totalSteps);
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
24
|
else if (variable.type === 'select') {
|
|
23
25
|
const answer = this.selections[variable.key];
|
|
24
26
|
const option = variable.options.find((opt) => opt.value === answer);
|
|
25
27
|
if (option?.operations) {
|
|
26
|
-
await this.executeOperations(option.operations);
|
|
28
|
+
currentStep = await this.executeOperations(option.operations, currentStep, totalSteps);
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
|
-
console.log(chalk.green(
|
|
32
|
+
console.log(chalk.green(`\nā
Installation complete! (${totalSteps}/${totalSteps} steps)\n`));
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
calculateTotalSteps(recipe) {
|
|
35
|
+
let steps = 0;
|
|
36
|
+
for (const variable of recipe.variables) {
|
|
37
|
+
if (variable.type === 'confirm') {
|
|
38
|
+
const answer = this.selections[variable.key];
|
|
39
|
+
const operations = answer ? variable.onTrue : variable.onFalse;
|
|
40
|
+
if (operations) {
|
|
41
|
+
steps += this.countOperations(operations);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (variable.type === 'select') {
|
|
45
|
+
const answer = this.selections[variable.key];
|
|
46
|
+
const option = variable.options.find((opt) => opt.value === answer);
|
|
47
|
+
if (option?.operations) {
|
|
48
|
+
steps += this.countOperations(option.operations);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return steps;
|
|
53
|
+
}
|
|
54
|
+
countOperations(operations) {
|
|
55
|
+
let count = 0;
|
|
56
|
+
if (operations.packages && operations.packages.length > 0)
|
|
57
|
+
count++;
|
|
58
|
+
if (operations.envVariables && operations.envVariables.length > 0)
|
|
59
|
+
count++;
|
|
60
|
+
if (operations.commands)
|
|
61
|
+
count += operations.commands.length;
|
|
62
|
+
return count;
|
|
63
|
+
}
|
|
64
|
+
async executeOperations(operations, currentStep, totalSteps) {
|
|
33
65
|
// Install packages
|
|
34
66
|
if (operations.packages && operations.packages.length > 0) {
|
|
67
|
+
currentStep++;
|
|
68
|
+
console.log(chalk.cyan(`\n[${currentStep}/${totalSteps}] Installing packages\n`));
|
|
35
69
|
await this.installPackages(operations.packages);
|
|
36
70
|
}
|
|
37
71
|
// Set env variables
|
|
38
72
|
if (operations.envVariables && operations.envVariables.length > 0) {
|
|
73
|
+
currentStep++;
|
|
74
|
+
console.log(chalk.cyan(`\n[${currentStep}/${totalSteps}] Configuring environment variables\n`));
|
|
39
75
|
await this.setupEnvVariables(operations.envVariables);
|
|
40
76
|
}
|
|
41
77
|
// Run commands
|
|
42
78
|
if (operations.commands && operations.commands.length > 0) {
|
|
43
|
-
|
|
79
|
+
for (const command of operations.commands) {
|
|
80
|
+
currentStep++;
|
|
81
|
+
console.log(chalk.cyan(`\n[${currentStep}/${totalSteps}] ${command.description || 'Running command'}\n`));
|
|
82
|
+
await this.runCommand(command);
|
|
83
|
+
}
|
|
44
84
|
}
|
|
85
|
+
return currentStep;
|
|
45
86
|
}
|
|
46
87
|
async installPackages(packages) {
|
|
47
88
|
const pm = detectPackageManager();
|
|
48
|
-
const
|
|
89
|
+
const packageStrings = packages.map((pkg) => pkg.version === 'latest' ? pkg.name : `${pkg.name}@${pkg.version}`);
|
|
90
|
+
console.log(chalk.dim(` Packages: ${packageStrings.join(', ')}`));
|
|
91
|
+
console.log(chalk.dim(` Using: ${pm}\n`));
|
|
49
92
|
try {
|
|
50
|
-
const packageStrings = packages.map((pkg) => pkg.version === 'latest' ? pkg.name : `${pkg.name}@${pkg.version}`);
|
|
51
93
|
const installCmd = pm === 'npm' ? 'install' : 'add';
|
|
52
94
|
await execa(pm, [installCmd, ...packageStrings], {
|
|
53
95
|
stdio: 'inherit',
|
|
54
96
|
cwd: process.cwd(),
|
|
55
97
|
});
|
|
56
|
-
|
|
98
|
+
console.log(chalk.green(` ā Packages installed successfully`));
|
|
57
99
|
}
|
|
58
100
|
catch (error) {
|
|
59
|
-
|
|
101
|
+
console.log(chalk.red(` ā Package installation failed`));
|
|
60
102
|
throw error;
|
|
61
103
|
}
|
|
62
104
|
}
|
|
63
105
|
async setupEnvVariables(envVars) {
|
|
64
|
-
console.log(chalk.yellow('
|
|
106
|
+
console.log(chalk.yellow(' Environment variables to configure:\n'));
|
|
65
107
|
for (const envVar of envVars) {
|
|
66
|
-
console.log(chalk.dim(
|
|
108
|
+
console.log(chalk.dim(` ⢠${envVar.key}`));
|
|
109
|
+
console.log(chalk.dim(` ${envVar.description}\n`));
|
|
67
110
|
}
|
|
68
|
-
console.log(chalk.dim('
|
|
111
|
+
console.log(chalk.dim(' ā Add these to your .env file\n'));
|
|
69
112
|
}
|
|
70
|
-
async
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
spinner.succeed(cmd.description || 'Command completed');
|
|
113
|
+
async runCommand(cmd) {
|
|
114
|
+
console.log(chalk.dim(` Command: ${cmd.customCommand || `${cmd.packageName} ${cmd.commandArgs}`.trim()}`));
|
|
115
|
+
if (cmd.requiresInteraction) {
|
|
116
|
+
console.log(chalk.yellow(' ā ļø This step requires your input\n'));
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
if (cmd.runner === 'custom' && cmd.customCommand) {
|
|
120
|
+
await execa(cmd.customCommand, {
|
|
121
|
+
shell: true,
|
|
122
|
+
stdio: 'inherit',
|
|
123
|
+
cwd: process.cwd(),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const runner = cmd.runner || 'npx';
|
|
128
|
+
const fullCommand = `${cmd.packageName} ${cmd.commandArgs}`.trim();
|
|
129
|
+
const args = fullCommand.split(' ');
|
|
130
|
+
await execa(runner, args, {
|
|
131
|
+
stdio: 'inherit',
|
|
132
|
+
cwd: process.cwd(),
|
|
133
|
+
});
|
|
93
134
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
135
|
+
console.log(chalk.green(` ā Completed\n`));
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.log(chalk.red(` ā Failed\n`));
|
|
139
|
+
if (!this.skipYes) {
|
|
140
|
+
const inquirer = (await import('inquirer')).default;
|
|
141
|
+
const answer = await inquirer.prompt([
|
|
142
|
+
{
|
|
143
|
+
type: 'confirm',
|
|
144
|
+
name: 'continue',
|
|
145
|
+
message: 'Continue with remaining steps?',
|
|
146
|
+
default: true,
|
|
147
|
+
},
|
|
148
|
+
]);
|
|
149
|
+
if (!answer.continue) {
|
|
150
|
+
throw new Error('Installation aborted by user');
|
|
110
151
|
}
|
|
111
152
|
}
|
|
153
|
+
else {
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
112
156
|
}
|
|
113
157
|
}
|
|
114
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/recipe/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/recipe/executor.ts"],"names":[],"mappings":"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"}
|