mcpize 1.0.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/LICENSE +21 -0
- package/README.md +140 -0
- package/dist/commands/deploy.d.ts +8 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +337 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +257 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +238 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/link.d.ts +6 -0
- package/dist/commands/link.d.ts.map +1 -0
- package/dist/commands/link.js +147 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +88 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +2 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +9 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +13 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +173 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/secrets.d.ts +16 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +195 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +187 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +241 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +154 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +364 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/auth.d.ts +20 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +106 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/cache.d.ts +39 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +112 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/config.d.ts +21 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +90 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/degit.d.ts +25 -0
- package/dist/lib/degit.d.ts.map +1 -0
- package/dist/lib/degit.js +187 -0
- package/dist/lib/degit.js.map +1 -0
- package/dist/lib/git.d.ts +10 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +43 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/project.d.ts +38 -0
- package/dist/lib/project.d.ts.map +1 -0
- package/dist/lib/project.js +72 -0
- package/dist/lib/project.js.map +1 -0
- package/dist/lib/tarball.d.ts +7 -0
- package/dist/lib/tarball.d.ts.map +1 -0
- package/dist/lib/tarball.js +130 -0
- package/dist/lib/tarball.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { execSync } from "node:child_process";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { hasManifest, loadManifest, loadPackageJson } from "../lib/project.js";
|
|
6
|
+
import { loadProjectConfig } from "../lib/project.js";
|
|
7
|
+
import { getToken } from "../lib/config.js";
|
|
8
|
+
function check(name, condition, passMessage, failMessage, fix) {
|
|
9
|
+
return {
|
|
10
|
+
name,
|
|
11
|
+
status: condition ? "pass" : "fail",
|
|
12
|
+
message: condition ? passMessage : failMessage,
|
|
13
|
+
fix: condition ? undefined : fix,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function warn(name, message, fix) {
|
|
17
|
+
return { name, status: "warn", message, fix };
|
|
18
|
+
}
|
|
19
|
+
function formatResult(result) {
|
|
20
|
+
const icon = result.status === "pass"
|
|
21
|
+
? chalk.green("✓")
|
|
22
|
+
: result.status === "warn"
|
|
23
|
+
? chalk.yellow("!")
|
|
24
|
+
: chalk.red("✗");
|
|
25
|
+
const color = result.status === "pass"
|
|
26
|
+
? chalk.green
|
|
27
|
+
: result.status === "warn"
|
|
28
|
+
? chalk.yellow
|
|
29
|
+
: chalk.red;
|
|
30
|
+
console.log(` ${icon} ${result.name}: ${color(result.message)}`);
|
|
31
|
+
if (result.fix) {
|
|
32
|
+
console.log(chalk.dim(` Fix: ${result.fix}`));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function getNodeVersion() {
|
|
36
|
+
try {
|
|
37
|
+
const version = execSync("node --version", { encoding: "utf-8" }).trim();
|
|
38
|
+
return version.replace("v", "");
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function getNpmVersion() {
|
|
45
|
+
try {
|
|
46
|
+
return execSync("npm --version", { encoding: "utf-8" }).trim();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function getDockerVersion() {
|
|
53
|
+
try {
|
|
54
|
+
const output = execSync("docker --version", { encoding: "utf-8" }).trim();
|
|
55
|
+
const match = output.match(/Docker version (\d+\.\d+\.\d+)/);
|
|
56
|
+
return match ? match[1] : output;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function checkRuntimeEnvironment() {
|
|
63
|
+
const results = [];
|
|
64
|
+
// Node.js version
|
|
65
|
+
const nodeVersion = getNodeVersion();
|
|
66
|
+
if (nodeVersion) {
|
|
67
|
+
const major = parseInt(nodeVersion.split(".")[0], 10);
|
|
68
|
+
if (major >= 20) {
|
|
69
|
+
results.push(check("Node.js", true, `v${nodeVersion}`, ""));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
results.push(check("Node.js", false, "", `v${nodeVersion} (requires v20+)`, "Install Node.js 20 LTS: https://nodejs.org/"));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
results.push(check("Node.js", false, "", "Not installed", "Install Node.js 20 LTS: https://nodejs.org/"));
|
|
77
|
+
}
|
|
78
|
+
// npm version
|
|
79
|
+
const npmVersion = getNpmVersion();
|
|
80
|
+
if (npmVersion) {
|
|
81
|
+
results.push(check("npm", true, `v${npmVersion}`, ""));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
results.push(check("npm", false, "", "Not installed"));
|
|
85
|
+
}
|
|
86
|
+
// Docker (optional but recommended)
|
|
87
|
+
const dockerVersion = getDockerVersion();
|
|
88
|
+
if (dockerVersion) {
|
|
89
|
+
results.push(check("Docker", true, `v${dockerVersion}`, ""));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
results.push(warn("Docker", "Not installed (optional for local testing)", "Install Docker: https://docker.com/"));
|
|
93
|
+
}
|
|
94
|
+
return results;
|
|
95
|
+
}
|
|
96
|
+
function checkProject(cwd) {
|
|
97
|
+
const results = [];
|
|
98
|
+
// mcpize.yaml
|
|
99
|
+
if (hasManifest(cwd)) {
|
|
100
|
+
const manifest = loadManifest(cwd);
|
|
101
|
+
if (manifest) {
|
|
102
|
+
results.push(check("mcpize.yaml", true, "Found and valid", ""));
|
|
103
|
+
// Check required fields
|
|
104
|
+
if (manifest.runtime) {
|
|
105
|
+
results.push(check("Manifest: runtime", true, manifest.runtime, ""));
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
results.push(check("Manifest: runtime", false, "", "Missing 'runtime' field", "Add 'runtime: node20' to mcpize.yaml"));
|
|
109
|
+
}
|
|
110
|
+
if (manifest.entry) {
|
|
111
|
+
results.push(check("Manifest: entry", true, manifest.entry, ""));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
results.push(warn("Manifest: entry", "Not specified (will use default)"));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
results.push(check("mcpize.yaml", false, "", "Invalid YAML syntax", "Check mcpize.yaml for syntax errors"));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
results.push(check("mcpize.yaml", false, "", "Not found", "Run: mcpize init"));
|
|
123
|
+
}
|
|
124
|
+
// package.json
|
|
125
|
+
const packageJson = loadPackageJson(cwd);
|
|
126
|
+
if (packageJson) {
|
|
127
|
+
results.push(check("package.json", true, "Found", ""));
|
|
128
|
+
// Check for main/entry
|
|
129
|
+
if (packageJson.main || packageJson.exports) {
|
|
130
|
+
results.push(check("Package entry", true, packageJson.main || "exports defined", ""));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
results.push(warn("Package entry", "No 'main' or 'exports' field"));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
results.push(warn("package.json", "Not found (may not be a Node.js project)"));
|
|
138
|
+
}
|
|
139
|
+
// .mcpize/project.json (linked server)
|
|
140
|
+
const projectConfig = loadProjectConfig(cwd);
|
|
141
|
+
if (projectConfig?.serverId) {
|
|
142
|
+
results.push(check("Project linked", true, `Server: ${projectConfig.serverName || projectConfig.serverId.slice(0, 8)}`, ""));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
results.push(warn("Project linked", "Not linked to server", "Run: mcpize link or mcpize deploy"));
|
|
146
|
+
}
|
|
147
|
+
return results;
|
|
148
|
+
}
|
|
149
|
+
function checkAuth() {
|
|
150
|
+
const results = [];
|
|
151
|
+
const token = getToken();
|
|
152
|
+
if (token) {
|
|
153
|
+
results.push(check("Authentication", true, "Logged in", ""));
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
results.push(check("Authentication", false, "", "Not logged in", "Run: mcpize login"));
|
|
157
|
+
}
|
|
158
|
+
return results;
|
|
159
|
+
}
|
|
160
|
+
function checkDockerfile(cwd) {
|
|
161
|
+
const results = [];
|
|
162
|
+
const dockerfilePath = join(cwd, "Dockerfile");
|
|
163
|
+
if (!existsSync(dockerfilePath)) {
|
|
164
|
+
results.push(warn("Dockerfile", "Not found (will use auto-generated)", "Create Dockerfile for custom builds"));
|
|
165
|
+
return results;
|
|
166
|
+
}
|
|
167
|
+
results.push(check("Dockerfile", true, "Found", ""));
|
|
168
|
+
// Basic Dockerfile checks (without parsing)
|
|
169
|
+
try {
|
|
170
|
+
const { readFileSync } = require("node:fs");
|
|
171
|
+
const content = readFileSync(dockerfilePath, "utf-8");
|
|
172
|
+
// Check for EXPOSE 8080
|
|
173
|
+
if (content.includes("EXPOSE 8080")) {
|
|
174
|
+
results.push(check("Dockerfile: PORT", true, "EXPOSE 8080 configured", ""));
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
results.push(warn("Dockerfile: PORT", "EXPOSE 8080 not found (required for Cloud Run)"));
|
|
178
|
+
}
|
|
179
|
+
// Check for non-root user
|
|
180
|
+
if (content.includes("USER ") && !content.includes("USER root")) {
|
|
181
|
+
results.push(check("Dockerfile: USER", true, "Non-root user configured", ""));
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
results.push(warn("Dockerfile: USER", "Running as root (consider adding USER directive)", "Add 'USER node' or 'USER nobody'"));
|
|
185
|
+
}
|
|
186
|
+
// Check for health check
|
|
187
|
+
if (content.includes("HEALTHCHECK")) {
|
|
188
|
+
results.push(check("Dockerfile: HEALTHCHECK", true, "Health check configured", ""));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
results.push(warn("Dockerfile: HEALTHCHECK", "No health check (recommended for production)"));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
results.push(warn("Dockerfile", "Could not read file"));
|
|
196
|
+
}
|
|
197
|
+
return results;
|
|
198
|
+
}
|
|
199
|
+
export async function doctorCommand(options) {
|
|
200
|
+
const cwd = process.cwd();
|
|
201
|
+
console.log(chalk.bold("\nMCPize Doctor - Local Diagnostics\n"));
|
|
202
|
+
let allResults = [];
|
|
203
|
+
let hasErrors = false;
|
|
204
|
+
// Runtime Environment
|
|
205
|
+
if (!options.manifest && !options.dockerfile) {
|
|
206
|
+
console.log(chalk.bold("Runtime Environment:"));
|
|
207
|
+
const runtimeResults = checkRuntimeEnvironment();
|
|
208
|
+
runtimeResults.forEach(formatResult);
|
|
209
|
+
allResults = allResults.concat(runtimeResults);
|
|
210
|
+
console.log();
|
|
211
|
+
}
|
|
212
|
+
// Authentication
|
|
213
|
+
if (!options.manifest && !options.dockerfile) {
|
|
214
|
+
console.log(chalk.bold("Authentication:"));
|
|
215
|
+
const authResults = checkAuth();
|
|
216
|
+
authResults.forEach(formatResult);
|
|
217
|
+
allResults = allResults.concat(authResults);
|
|
218
|
+
console.log();
|
|
219
|
+
}
|
|
220
|
+
// Project Configuration
|
|
221
|
+
if (!options.dockerfile) {
|
|
222
|
+
console.log(chalk.bold("Project Configuration:"));
|
|
223
|
+
const projectResults = checkProject(cwd);
|
|
224
|
+
projectResults.forEach(formatResult);
|
|
225
|
+
allResults = allResults.concat(projectResults);
|
|
226
|
+
console.log();
|
|
227
|
+
}
|
|
228
|
+
// Dockerfile (if --dockerfile or found)
|
|
229
|
+
if (options.dockerfile || existsSync(join(cwd, "Dockerfile"))) {
|
|
230
|
+
console.log(chalk.bold("Dockerfile:"));
|
|
231
|
+
const dockerResults = checkDockerfile(cwd);
|
|
232
|
+
dockerResults.forEach(formatResult);
|
|
233
|
+
allResults = allResults.concat(dockerResults);
|
|
234
|
+
console.log();
|
|
235
|
+
}
|
|
236
|
+
// Summary
|
|
237
|
+
const passed = allResults.filter((r) => r.status === "pass").length;
|
|
238
|
+
const warnings = allResults.filter((r) => r.status === "warn").length;
|
|
239
|
+
const failed = allResults.filter((r) => r.status === "fail").length;
|
|
240
|
+
console.log(chalk.bold("Summary:"));
|
|
241
|
+
console.log(` ${chalk.green(passed + " passed")}, ${chalk.yellow(warnings + " warnings")}, ${chalk.red(failed + " failed")}`);
|
|
242
|
+
if (failed > 0) {
|
|
243
|
+
console.log(chalk.red("\nSome checks failed. Please fix the issues above before deploying."));
|
|
244
|
+
hasErrors = true;
|
|
245
|
+
}
|
|
246
|
+
else if (warnings > 0) {
|
|
247
|
+
console.log(chalk.yellow("\nAll checks passed with warnings."));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
console.log(chalk.green("\nAll checks passed! Ready to deploy."));
|
|
251
|
+
}
|
|
252
|
+
console.log();
|
|
253
|
+
if (hasErrors) {
|
|
254
|
+
process.exit(1);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAe5C,SAAS,KAAK,CACZ,IAAY,EACZ,SAAkB,EAClB,WAAmB,EACnB,WAAmB,EACnB,GAAY;IAEZ,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACnC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;QAC9C,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe,EAAE,GAAY;IACvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB;IACvC,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,KAAK,MAAM;QACtB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;YACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,KAAK,MAAM;QACtB,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;YACxB,CAAC,CAAC,KAAK,CAAC,MAAM;YACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAElB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,kBAAkB;IAClB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,KAAK,CACH,SAAS,EACT,KAAK,EACL,EAAE,EACF,IAAI,WAAW,kBAAkB,EACjC,6CAA6C,CAC9C,CACF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,KAAK,CACH,SAAS,EACT,KAAK,EACL,EAAE,EACF,eAAe,EACf,6CAA6C,CAC9C,CACF,CAAC;IACJ,CAAC;IAED,cAAc;IACd,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,oCAAoC;IACpC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,QAAQ,EAAE,4CAA4C,EAAE,qCAAqC,CAAC,CACpG,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,cAAc;IACd,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC;YAEhE,wBAAwB;YACxB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CACV,KAAK,CACH,mBAAmB,EACnB,KAAK,EACL,EAAE,EACF,yBAAyB,EACzB,sCAAsC,CACvC,CACF,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,iBAAiB,EAAE,kCAAkC,CAAC,CAC5D,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,KAAK,CACH,aAAa,EACb,KAAK,EACL,EAAE,EACF,qBAAqB,EACrB,qCAAqC,CACtC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,KAAK,CACH,aAAa,EACb,KAAK,EACL,EAAE,EACF,WAAW,EACX,kBAAkB,CACnB,CACF,CAAC;IACJ,CAAC;IAED,eAAe;IACf,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvD,uBAAuB;QACvB,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,0CAA0C,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,uCAAuC;IACvC,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,aAAa,EAAE,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAC/G,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,mCAAmC,CAAC,CACpF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,KAAK,CACH,gBAAgB,EAChB,KAAK,EACL,EAAE,EACF,eAAe,EACf,mBAAmB,CACpB,CACF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,YAAY,EAAE,qCAAqC,EAAE,qCAAqC,CAAC,CACjG,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAErD,4CAA4C;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEtD,wBAAwB;QACxB,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,kBAAkB,EAAE,gDAAgD,CAAC,CAC3E,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,kBAAkB,EAAE,kDAAkD,EAAE,kCAAkC,CAAC,CACjH,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,EAAE,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,yBAAyB,EAAE,8CAA8C,CAAC,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAEjE,IAAI,UAAU,GAAkB,EAAE,CAAC;IACnC,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,sBAAsB;IACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,uBAAuB,EAAE,CAAC;QACjD,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC;QAChC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACzC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,wCAAwC;IACxC,IAAI,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAC3C,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACpC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,UAAU;IACV,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAEpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAClH,CAAC;IAEF,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC,CAAC;QAC9F,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface InitOptions {
|
|
2
|
+
template?: string;
|
|
3
|
+
dir?: string;
|
|
4
|
+
noInstall?: boolean;
|
|
5
|
+
noGit?: boolean;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function initCommand(name: string | undefined, options: InitOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAuHD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Kf"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import Enquirer from "enquirer";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { execSync } from "node:child_process";
|
|
7
|
+
import { downloadTemplate, fetchTemplatesList } from "../lib/degit.js";
|
|
8
|
+
const { prompt } = Enquirer;
|
|
9
|
+
/**
|
|
10
|
+
* Convert options to environment variables for post-init script
|
|
11
|
+
* --from-url -> MCPIZE_INIT_FROM_URL
|
|
12
|
+
* --some-option -> MCPIZE_INIT_SOME_OPTION
|
|
13
|
+
*/
|
|
14
|
+
function optionsToEnv(options) {
|
|
15
|
+
const env = {};
|
|
16
|
+
for (const [key, value] of Object.entries(options)) {
|
|
17
|
+
// Skip internal options
|
|
18
|
+
if (["template", "dir", "noInstall", "noGit"].includes(key)) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (value !== undefined && value !== null && value !== false) {
|
|
22
|
+
// Convert camelCase to SCREAMING_SNAKE_CASE
|
|
23
|
+
const envKey = "MCPIZE_INIT_" +
|
|
24
|
+
key
|
|
25
|
+
.replace(/([A-Z])/g, "_$1")
|
|
26
|
+
.toUpperCase()
|
|
27
|
+
.replace(/^_/, "");
|
|
28
|
+
env[envKey] = String(value);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return env;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Load and parse template.config.json if it exists
|
|
35
|
+
*/
|
|
36
|
+
function loadTemplateConfig(targetDir) {
|
|
37
|
+
const configPath = path.join(targetDir, "template.config.json");
|
|
38
|
+
if (!fs.existsSync(configPath)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
43
|
+
// Remove config file from output (it's internal)
|
|
44
|
+
fs.unlinkSync(configPath);
|
|
45
|
+
return config;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Run post-init script if defined in template config
|
|
53
|
+
* Script runs from target directory
|
|
54
|
+
*/
|
|
55
|
+
async function runPostInit(targetDir, templateConfig, options) {
|
|
56
|
+
if (!templateConfig.postInit) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
const spinner = ora("Running post-init script...").start();
|
|
60
|
+
try {
|
|
61
|
+
// Build environment with all options
|
|
62
|
+
const optionsEnv = optionsToEnv(options);
|
|
63
|
+
// Check if any options were passed (excluding internal ones)
|
|
64
|
+
const hasCustomOptions = Object.keys(optionsEnv).length > 0;
|
|
65
|
+
if (!hasCustomOptions) {
|
|
66
|
+
spinner.info("Skipping post-init (no custom options provided)");
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
const env = {
|
|
70
|
+
...process.env,
|
|
71
|
+
...optionsEnv,
|
|
72
|
+
MCPIZE_PROJECT_DIR: targetDir,
|
|
73
|
+
MCPIZE_PROJECT_NAME: path.basename(targetDir),
|
|
74
|
+
};
|
|
75
|
+
// Run post-init from target directory
|
|
76
|
+
execSync(templateConfig.postInit, {
|
|
77
|
+
cwd: targetDir,
|
|
78
|
+
stdio: "inherit",
|
|
79
|
+
env,
|
|
80
|
+
});
|
|
81
|
+
spinner.succeed("Post-init completed");
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
spinner.fail("Post-init failed");
|
|
86
|
+
if (error instanceof Error && "stderr" in error) {
|
|
87
|
+
console.error(chalk.red(String(error.stderr)));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export async function initCommand(name, options) {
|
|
96
|
+
console.log(chalk.bold("\nMCPize Init\n"));
|
|
97
|
+
// Determine project name
|
|
98
|
+
let projectName = name;
|
|
99
|
+
if (!projectName) {
|
|
100
|
+
const response = await prompt({
|
|
101
|
+
type: "input",
|
|
102
|
+
name: "name",
|
|
103
|
+
message: "Project name:",
|
|
104
|
+
initial: path.basename(process.cwd()),
|
|
105
|
+
});
|
|
106
|
+
projectName = response.name;
|
|
107
|
+
}
|
|
108
|
+
// Determine target directory
|
|
109
|
+
const targetDir = options.dir || path.join(process.cwd(), projectName);
|
|
110
|
+
// Check if directory exists
|
|
111
|
+
if (fs.existsSync(targetDir) && fs.readdirSync(targetDir).length > 0) {
|
|
112
|
+
const response = await prompt({
|
|
113
|
+
type: "confirm",
|
|
114
|
+
name: "overwrite",
|
|
115
|
+
message: `Directory "${projectName}" is not empty. Continue anyway?`,
|
|
116
|
+
initial: false,
|
|
117
|
+
});
|
|
118
|
+
if (!response.overwrite) {
|
|
119
|
+
console.log(chalk.dim("\nInit cancelled."));
|
|
120
|
+
process.exit(0);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Fetch available templates
|
|
124
|
+
const templates = await fetchTemplatesList();
|
|
125
|
+
// Determine template
|
|
126
|
+
let template = options.template;
|
|
127
|
+
if (!template) {
|
|
128
|
+
const response = await prompt({
|
|
129
|
+
type: "select",
|
|
130
|
+
name: "template",
|
|
131
|
+
message: "Select template:",
|
|
132
|
+
choices: templates.map((t) => ({
|
|
133
|
+
name: t.name,
|
|
134
|
+
message: `${t.name} - ${t.description}`,
|
|
135
|
+
})),
|
|
136
|
+
});
|
|
137
|
+
template = response.template;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// Normalize template name: "typescript" -> "typescript/default"
|
|
141
|
+
if (!template.includes("/")) {
|
|
142
|
+
template = `${template}/default`;
|
|
143
|
+
}
|
|
144
|
+
// Also handle "openapi" -> "typescript/openapi"
|
|
145
|
+
if (template === "openapi" || template === "openapi/default") {
|
|
146
|
+
template = "typescript/openapi";
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Download template from GitHub
|
|
150
|
+
const spinner = ora(`Downloading template ${template}...`).start();
|
|
151
|
+
try {
|
|
152
|
+
await downloadTemplate(template, targetDir, { force: true });
|
|
153
|
+
spinner.succeed(`Downloaded ${template}`);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
spinner.fail(`Failed to download template "${template}"`);
|
|
157
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
158
|
+
// Check for common errors
|
|
159
|
+
if (errorMessage.includes("could not find")) {
|
|
160
|
+
console.error(chalk.red(`Template "${template}" not found in repository.`));
|
|
161
|
+
console.error(chalk.dim(`Available templates: ${templates.map((t) => t.name).join(", ")}`));
|
|
162
|
+
}
|
|
163
|
+
else if (errorMessage.includes("rate limit")) {
|
|
164
|
+
console.error(chalk.red("GitHub API rate limit exceeded. Try again later."));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
console.error(chalk.red(errorMessage));
|
|
168
|
+
}
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
// Load template config (and remove it from output)
|
|
172
|
+
const templateConfig = loadTemplateConfig(targetDir);
|
|
173
|
+
// Update package.json name
|
|
174
|
+
const packageJsonPath = path.join(targetDir, "package.json");
|
|
175
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
176
|
+
try {
|
|
177
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
178
|
+
packageJson.name = projectName;
|
|
179
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// Ignore package.json errors
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Initialize git
|
|
186
|
+
if (!options.noGit) {
|
|
187
|
+
try {
|
|
188
|
+
execSync("git init", { cwd: targetDir, stdio: "pipe" });
|
|
189
|
+
console.log(chalk.dim("Initialized git repository"));
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Git not available, skip
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Run post-init script if defined (before npm install, so it can modify package.json)
|
|
196
|
+
if (templateConfig) {
|
|
197
|
+
const success = await runPostInit(targetDir, templateConfig, options);
|
|
198
|
+
if (!success) {
|
|
199
|
+
console.error(chalk.yellow("\nPost-init failed. Project created but may need manual setup."));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Install dependencies
|
|
203
|
+
if (!options.noInstall) {
|
|
204
|
+
const installSpinner = ora("Installing dependencies...").start();
|
|
205
|
+
try {
|
|
206
|
+
// Detect package manager
|
|
207
|
+
const hasYarn = fs.existsSync(path.join(targetDir, "yarn.lock"));
|
|
208
|
+
const hasPnpm = fs.existsSync(path.join(targetDir, "pnpm-lock.yaml"));
|
|
209
|
+
const pm = hasPnpm ? "pnpm" : hasYarn ? "yarn" : "npm";
|
|
210
|
+
execSync(`${pm} install`, { cwd: targetDir, stdio: "pipe" });
|
|
211
|
+
installSpinner.succeed("Dependencies installed");
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
installSpinner.fail("Failed to install dependencies");
|
|
215
|
+
console.error(chalk.dim("Run 'npm install' manually"));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Print next steps
|
|
219
|
+
console.log(chalk.bold.green(`\n✓ Project created!\n`));
|
|
220
|
+
console.log("Next steps:");
|
|
221
|
+
console.log(chalk.dim(` cd ${projectName}`));
|
|
222
|
+
if (options.noInstall) {
|
|
223
|
+
console.log(chalk.dim(" npm install"));
|
|
224
|
+
}
|
|
225
|
+
// Special instructions for OpenAPI template without --from-url
|
|
226
|
+
const hasFromUrl = options.fromUrl || options.fromFile;
|
|
227
|
+
if (template === "typescript/openapi" && !hasFromUrl) {
|
|
228
|
+
console.log(chalk.dim(" # Generate from URL:"));
|
|
229
|
+
console.log(chalk.dim(" mcpize init . --template openapi --from-url <openapi-url>"));
|
|
230
|
+
console.log(chalk.dim(" # Or from local file:"));
|
|
231
|
+
console.log(chalk.dim(" mcpize init . --template openapi --from-file ./openapi.yaml"));
|
|
232
|
+
console.log();
|
|
233
|
+
}
|
|
234
|
+
console.log(chalk.dim(" npm run dev # Start local development"));
|
|
235
|
+
console.log(chalk.dim(" mcpize deploy # Deploy to MCPize"));
|
|
236
|
+
console.log();
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGrE"}
|