@idealyst/cli 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.js +9 -3
- package/dist/constants.js.map +1 -1
- package/dist/generators/core/mobile.js +34 -69
- package/dist/generators/core/mobile.js.map +1 -1
- package/dist/generators/core/shared.js +283 -16
- package/dist/generators/core/shared.js.map +1 -1
- package/dist/generators/core/web.js +29 -76
- package/dist/generators/core/web.js.map +1 -1
- package/dist/generators/extensions/devcontainer.js +90 -25
- package/dist/generators/extensions/devcontainer.js.map +1 -1
- package/dist/generators/index.js +23 -7
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/reactNative.js +111 -35
- package/dist/generators/reactNative.js.map +1 -1
- package/dist/generators/workspace.js +31 -0
- package/dist/generators/workspace.js.map +1 -1
- package/dist/types/constants.d.ts +9 -3
- package/dist/types/generators/core/mobile.d.ts +1 -0
- package/dist/types/types.d.ts +31 -0
- package/dist/types/utils/logger.d.ts +6 -0
- package/dist/types.js +34 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/logger.js +11 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/shell.js +1 -1
- package/dist/utils/shell.js.map +1 -1
- package/dist/wizard/steps/devcontainerExtension.js +61 -8
- package/dist/wizard/steps/devcontainerExtension.js.map +1 -1
- package/dist/wizard/steps/summary.js +12 -0
- package/dist/wizard/steps/summary.js.map +1 -1
- package/package.json +1 -1
|
@@ -35,8 +35,7 @@ async function generateWebPackage(projectPath, data) {
|
|
|
35
35
|
*/
|
|
36
36
|
async function generateWebFiles(webDir, data) {
|
|
37
37
|
// Create directory structure
|
|
38
|
-
await fs_extra_1.default.ensureDir(path_1.default.join(webDir, 'src'
|
|
39
|
-
await fs_extra_1.default.ensureDir(path_1.default.join(webDir, 'src', 'navigation'));
|
|
38
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(webDir, 'src'));
|
|
40
39
|
await fs_extra_1.default.ensureDir(path_1.default.join(webDir, 'public'));
|
|
41
40
|
// Create package.json
|
|
42
41
|
await fs_extra_1.default.writeJson(path_1.default.join(webDir, 'package.json'), createWebPackageJson(data), { spaces: 2 });
|
|
@@ -52,10 +51,6 @@ async function generateWebFiles(webDir, data) {
|
|
|
52
51
|
await fs_extra_1.default.writeFile(path_1.default.join(webDir, 'src', 'main.tsx'), createMainTsx(data));
|
|
53
52
|
// Create src/App.tsx
|
|
54
53
|
await fs_extra_1.default.writeFile(path_1.default.join(webDir, 'src', 'App.tsx'), createAppTsx(data));
|
|
55
|
-
// Create src/pages/Home.tsx
|
|
56
|
-
await fs_extra_1.default.writeFile(path_1.default.join(webDir, 'src', 'pages', 'Home.tsx'), createHomePage(data));
|
|
57
|
-
// Create src/navigation/AppRouter.tsx
|
|
58
|
-
await fs_extra_1.default.writeFile(path_1.default.join(webDir, 'src', 'navigation', 'AppRouter.tsx'), createAppRouter(data));
|
|
59
54
|
}
|
|
60
55
|
/**
|
|
61
56
|
* Create web package.json
|
|
@@ -287,91 +282,49 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
|
287
282
|
}
|
|
288
283
|
/**
|
|
289
284
|
* Create App.tsx
|
|
285
|
+
* Web just wraps the shared App with BrowserRouter for web routing
|
|
290
286
|
*/
|
|
291
287
|
function createAppTsx(data) {
|
|
292
|
-
const imports = [
|
|
293
|
-
`import React from 'react';`,
|
|
294
|
-
`import { BrowserRouter } from 'react-router-dom';`,
|
|
295
|
-
`import { NavigatorProvider } from '@idealyst/navigation';`,
|
|
296
|
-
`import { AppRouter } from './navigation/AppRouter';`,
|
|
297
|
-
];
|
|
298
288
|
if (data.hasTrpc) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
289
|
+
return `/**
|
|
290
|
+
* Web App entry point
|
|
291
|
+
* Wraps the shared App with BrowserRouter for web routing
|
|
292
|
+
*/
|
|
293
|
+
|
|
294
|
+
import React from 'react';
|
|
295
|
+
import { BrowserRouter } from 'react-router-dom';
|
|
296
|
+
import { App } from '@${data.workspaceScope}/shared';
|
|
297
|
+
|
|
298
|
+
// API base URL for web - uses same origin in production, localhost in development
|
|
299
|
+
const API_BASE_URL = window.location.hostname === 'localhost'
|
|
300
|
+
? 'http://localhost:3001'
|
|
301
|
+
: window.location.origin;
|
|
302
|
+
|
|
303
|
+
export default function WebApp() {
|
|
304
304
|
return (
|
|
305
305
|
<BrowserRouter>
|
|
306
|
-
<
|
|
306
|
+
<App apiBaseUrl={API_BASE_URL} />
|
|
307
307
|
</BrowserRouter>
|
|
308
308
|
);
|
|
309
309
|
}
|
|
310
|
-
`;
|
|
311
|
-
if (data.hasTrpc) {
|
|
312
|
-
appContent = `
|
|
313
|
-
const queryClient = new QueryClient();
|
|
314
|
-
|
|
315
|
-
export default function App() {
|
|
316
|
-
return (
|
|
317
|
-
<trpc.Provider client={trpcClient} queryClient={queryClient}>
|
|
318
|
-
<QueryClientProvider client={queryClient}>
|
|
319
|
-
<BrowserRouter>
|
|
320
|
-
<NavigatorProvider route={AppRouter} />
|
|
321
|
-
</BrowserRouter>
|
|
322
|
-
</QueryClientProvider>
|
|
323
|
-
</trpc.Provider>
|
|
324
|
-
);
|
|
325
|
-
}
|
|
326
310
|
`;
|
|
327
311
|
}
|
|
328
|
-
return
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
* Create Home page
|
|
312
|
+
return `/**
|
|
313
|
+
* Web App entry point
|
|
314
|
+
* Wraps the shared App with BrowserRouter for web routing
|
|
332
315
|
*/
|
|
333
|
-
function createHomePage(data) {
|
|
334
|
-
return `import React from 'react';
|
|
335
|
-
import { HelloWorld } from '@${data.workspaceScope}/shared';
|
|
336
316
|
|
|
337
|
-
|
|
317
|
+
import React from 'react';
|
|
318
|
+
import { BrowserRouter } from 'react-router-dom';
|
|
319
|
+
import { App } from '@${data.workspaceScope}/shared';
|
|
320
|
+
|
|
321
|
+
export default function WebApp() {
|
|
338
322
|
return (
|
|
339
|
-
<
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
/>
|
|
323
|
+
<BrowserRouter>
|
|
324
|
+
<App />
|
|
325
|
+
</BrowserRouter>
|
|
343
326
|
);
|
|
344
327
|
}
|
|
345
328
|
`;
|
|
346
329
|
}
|
|
347
|
-
/**
|
|
348
|
-
* Create AppRouter
|
|
349
|
-
*/
|
|
350
|
-
function createAppRouter(data) {
|
|
351
|
-
return `import { NavigatorParam } from '@idealyst/navigation';
|
|
352
|
-
import Home from '../pages/Home';
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
* Application navigation router
|
|
356
|
-
*/
|
|
357
|
-
export const AppRouter: NavigatorParam = {
|
|
358
|
-
path: '/',
|
|
359
|
-
type: 'navigator',
|
|
360
|
-
layout: 'stack',
|
|
361
|
-
options: {
|
|
362
|
-
headerShown: false,
|
|
363
|
-
},
|
|
364
|
-
routes: [
|
|
365
|
-
{
|
|
366
|
-
path: '/',
|
|
367
|
-
type: 'screen',
|
|
368
|
-
component: Home,
|
|
369
|
-
options: { title: 'Home' },
|
|
370
|
-
},
|
|
371
|
-
],
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
export default AppRouter;
|
|
375
|
-
`;
|
|
376
|
-
}
|
|
377
330
|
//# sourceMappingURL=web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/generators/core/web.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAYH,gDAqBC;AA/BD,wDAA0B;AAC1B,gDAAwB;AAExB,mDAAoG;AACpG,+CAAiE;AACjE,+CAA4C;AAE5C;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,IAAkB;IAElB,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAEzD,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,kBAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE3B,0DAA0D;IAC1D,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEpD,IAAI,MAAM,IAAA,2BAAkB,EAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAA,8BAAqB,EAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,MAAc,EACd,IAAkB;IAElB,6BAA6B;IAC7B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/generators/core/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,16 +22,56 @@ const logger_1 = require("../../utils/logger");
|
|
|
22
22
|
*/
|
|
23
23
|
function normalizeDevcontainerConfig(config) {
|
|
24
24
|
if (typeof config === 'boolean') {
|
|
25
|
-
// If just --with-devcontainer flag was used, enable all services
|
|
25
|
+
// If just --with-devcontainer flag was used, enable all services with default MCP servers
|
|
26
26
|
return {
|
|
27
27
|
enabled: config,
|
|
28
28
|
postgres: config,
|
|
29
29
|
redis: config,
|
|
30
30
|
chrome: config,
|
|
31
31
|
claudeCode: config,
|
|
32
|
+
mcpServers: config ? ['idealyst', 'serena'] : [],
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
+
// Ensure mcpServers array exists
|
|
36
|
+
return {
|
|
37
|
+
...config,
|
|
38
|
+
mcpServers: config.mcpServers ?? [],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Generate MCP server setup commands for the selected servers
|
|
43
|
+
*/
|
|
44
|
+
function generateMcpSetupCommands(servers, config) {
|
|
45
|
+
const commands = [];
|
|
46
|
+
for (const server of servers) {
|
|
47
|
+
switch (server) {
|
|
48
|
+
case 'idealyst':
|
|
49
|
+
commands.push(`
|
|
50
|
+
# Idealyst MCP (component documentation)
|
|
51
|
+
claude mcp add idealyst -s user -- npx -y @idealyst/mcp-server@latest 2>/dev/null || true`);
|
|
52
|
+
break;
|
|
53
|
+
case 'serena':
|
|
54
|
+
commands.push(`
|
|
55
|
+
# Serena MCP (code navigation and semantic search)
|
|
56
|
+
claude mcp add serena -s user -- npx -y @anthropic-ai/mcp-serena@latest 2>/dev/null || true`);
|
|
57
|
+
break;
|
|
58
|
+
case 'playwright':
|
|
59
|
+
if (config.chrome) {
|
|
60
|
+
commands.push(`
|
|
61
|
+
# Playwright MCP (connects to browserless chrome)
|
|
62
|
+
claude mcp add playwright -s user -- npx -y @anthropic-ai/mcp-playwright@latest --browser-ws-endpoint ws://chrome:3000 2>/dev/null || true`);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case 'postgres':
|
|
66
|
+
if (config.postgres) {
|
|
67
|
+
commands.push(`
|
|
68
|
+
# PostgreSQL MCP (database queries)
|
|
69
|
+
claude mcp add postgres -s user -- npx -y @anthropic-ai/mcp-postgres@latest \$DATABASE_URL 2>/dev/null || true`);
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return commands.join('\n');
|
|
35
75
|
}
|
|
36
76
|
/**
|
|
37
77
|
* Apply devcontainer extension to a project
|
|
@@ -68,6 +108,10 @@ async function createDockerfile(devcontainerDir, config) {
|
|
|
68
108
|
if (config.postgres) {
|
|
69
109
|
aptPackages.push('postgresql-client');
|
|
70
110
|
}
|
|
111
|
+
// Add redis-tools (provides redis-cli) only if redis is enabled
|
|
112
|
+
if (config.redis) {
|
|
113
|
+
aptPackages.push('redis-tools');
|
|
114
|
+
}
|
|
71
115
|
const globalPackages = ['@expo/cli'];
|
|
72
116
|
// Add claude-code if enabled
|
|
73
117
|
if (config.claudeCode) {
|
|
@@ -89,16 +133,19 @@ RUN apt-get update && apt-get install -y \\
|
|
|
89
133
|
# Enable corepack for yarn
|
|
90
134
|
RUN corepack enable
|
|
91
135
|
|
|
136
|
+
# Disable corepack download prompts (auto-accept)
|
|
137
|
+
ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
|
138
|
+
|
|
92
139
|
# Install global tools
|
|
93
140
|
RUN npm install -g ${globalPackages.join(' ')}
|
|
94
141
|
|
|
95
142
|
# Set up git
|
|
96
143
|
RUN git config --global init.defaultBranch main
|
|
97
144
|
|
|
98
|
-
# Create workspace directory
|
|
99
|
-
RUN mkdir -p /workspace
|
|
145
|
+
# Create workspace directory with correct ownership
|
|
146
|
+
RUN mkdir -p /workspace && chown -R node:node /workspace
|
|
147
|
+
|
|
100
148
|
WORKDIR /workspace
|
|
101
|
-
RUN chown -R node:node /workspace
|
|
102
149
|
|
|
103
150
|
# Switch to node user
|
|
104
151
|
USER node
|
|
@@ -111,14 +158,13 @@ ${claudeCodeSetup}`;
|
|
|
111
158
|
async function createDockerCompose(devcontainerDir, data, config) {
|
|
112
159
|
const dbName = data.projectName.replace(/-/g, '_') + '_db';
|
|
113
160
|
const services = [];
|
|
114
|
-
const volumes = [
|
|
161
|
+
const volumes = [];
|
|
115
162
|
const appDependsOn = [];
|
|
116
163
|
const appEnv = [
|
|
117
164
|
'NODE_ENV: development',
|
|
118
165
|
];
|
|
119
166
|
const appVolumes = [
|
|
120
167
|
'../:/workspace:cached',
|
|
121
|
-
'node_modules:/workspace/node_modules',
|
|
122
168
|
];
|
|
123
169
|
// PostgreSQL service
|
|
124
170
|
if (config.postgres) {
|
|
@@ -220,12 +266,15 @@ ${appDependsOn.join('\n')}`
|
|
|
220
266
|
${dependsOnSection}
|
|
221
267
|
command: sleep infinity
|
|
222
268
|
`;
|
|
269
|
+
const volumesSection = volumes.length > 0
|
|
270
|
+
? `volumes:
|
|
271
|
+
${volumes.map(v => ` ${v}:`).join('\n')}
|
|
272
|
+
`
|
|
273
|
+
: '';
|
|
223
274
|
const content = `services:
|
|
224
275
|
${services.join('\n')}
|
|
225
276
|
${appService}
|
|
226
|
-
|
|
227
|
-
${volumes.map(v => ` ${v}:`).join('\n')}
|
|
228
|
-
`;
|
|
277
|
+
${volumesSection}`;
|
|
229
278
|
await fs_extra_1.default.writeFile(path_1.default.join(devcontainerDir, 'docker-compose.yml'), content);
|
|
230
279
|
}
|
|
231
280
|
/**
|
|
@@ -375,45 +424,61 @@ async function createSetupScript(devcontainerDir, data, config) {
|
|
|
375
424
|
const waitSections = [];
|
|
376
425
|
if (config.postgres) {
|
|
377
426
|
waitSections.push(`
|
|
378
|
-
# Wait for database to be ready
|
|
427
|
+
# Wait for database to be ready (timeout: 30s)
|
|
379
428
|
echo "⏳ Waiting for database to be ready..."
|
|
380
|
-
|
|
429
|
+
TIMEOUT=30
|
|
430
|
+
ELAPSED=0
|
|
431
|
+
until pg_isready -h postgres -p 5432 -U postgres > /dev/null 2>&1; do
|
|
432
|
+
if [ $ELAPSED -ge $TIMEOUT ]; then
|
|
433
|
+
echo "⚠️ Database not available after \${TIMEOUT}s - continuing anyway"
|
|
434
|
+
break
|
|
435
|
+
fi
|
|
381
436
|
echo "Database is unavailable - sleeping"
|
|
382
437
|
sleep 1
|
|
438
|
+
ELAPSED=$((ELAPSED + 1))
|
|
383
439
|
done
|
|
384
|
-
echo "✅ Database is ready!"`);
|
|
440
|
+
[ $ELAPSED -lt $TIMEOUT ] && echo "✅ Database is ready!"`);
|
|
385
441
|
}
|
|
386
442
|
if (config.redis) {
|
|
387
443
|
waitSections.push(`
|
|
388
|
-
# Wait for Redis to be ready
|
|
444
|
+
# Wait for Redis to be ready (timeout: 30s)
|
|
389
445
|
echo "⏳ Waiting for Redis to be ready..."
|
|
446
|
+
TIMEOUT=30
|
|
447
|
+
ELAPSED=0
|
|
390
448
|
until redis-cli -h redis ping > /dev/null 2>&1; do
|
|
449
|
+
if [ $ELAPSED -ge $TIMEOUT ]; then
|
|
450
|
+
echo "⚠️ Redis not available after \${TIMEOUT}s - continuing anyway"
|
|
451
|
+
break
|
|
452
|
+
fi
|
|
391
453
|
echo "Redis is unavailable - sleeping"
|
|
392
454
|
sleep 1
|
|
455
|
+
ELAPSED=$((ELAPSED + 1))
|
|
393
456
|
done
|
|
394
|
-
echo "✅ Redis is ready!"`);
|
|
457
|
+
[ $ELAPSED -lt $TIMEOUT ] && echo "✅ Redis is ready!"`);
|
|
395
458
|
}
|
|
396
459
|
if (config.chrome) {
|
|
397
460
|
waitSections.push(`
|
|
398
|
-
# Wait for Chrome to be ready
|
|
461
|
+
# Wait for Chrome to be ready (timeout: 30s)
|
|
399
462
|
echo "⏳ Waiting for Chrome browser to be ready..."
|
|
463
|
+
TIMEOUT=30
|
|
464
|
+
ELAPSED=0
|
|
400
465
|
until curl -s http://chrome:3000/json/version > /dev/null; do
|
|
466
|
+
if [ $ELAPSED -ge $TIMEOUT ]; then
|
|
467
|
+
echo "⚠️ Chrome not available after \${TIMEOUT}s - continuing anyway"
|
|
468
|
+
break
|
|
469
|
+
fi
|
|
401
470
|
echo "Chrome is unavailable - sleeping"
|
|
402
471
|
sleep 1
|
|
472
|
+
ELAPSED=$((ELAPSED + 1))
|
|
403
473
|
done
|
|
404
|
-
echo "✅ Chrome browser is ready!"`);
|
|
474
|
+
[ $ELAPSED -lt $TIMEOUT ] && echo "✅ Chrome browser is ready!"`);
|
|
405
475
|
}
|
|
406
|
-
// Claude Code setup
|
|
407
|
-
const claudeSetup = config.claudeCode
|
|
476
|
+
// Claude Code setup - generate commands for selected MCP servers
|
|
477
|
+
const claudeSetup = config.claudeCode && config.mcpServers.length > 0
|
|
408
478
|
? `
|
|
409
479
|
# Setup Claude Code MCP servers
|
|
410
480
|
echo "🤖 Configuring Claude Code MCP servers..."
|
|
411
|
-
${config.
|
|
412
|
-
# Add Playwright MCP (connects to browserless chrome)
|
|
413
|
-
claude mcp add playwright --transport sse --url http://chrome:3000/playwright 2>/dev/null || true
|
|
414
|
-
` : ''}
|
|
415
|
-
# Add Serena MCP for code navigation
|
|
416
|
-
claude mcp add serena 2>/dev/null || true
|
|
481
|
+
${generateMcpSetupCommands(config.mcpServers, config)}
|
|
417
482
|
`
|
|
418
483
|
: '';
|
|
419
484
|
// Prisma setup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../../src/generators/extensions/devcontainer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;
|
|
1
|
+
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../../src/generators/extensions/devcontainer.ts"],"names":[],"mappings":"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"}
|
package/dist/generators/index.js
CHANGED
|
@@ -52,12 +52,15 @@ async function generateProject(config) {
|
|
|
52
52
|
logger_1.logger.step('Creating web package...');
|
|
53
53
|
await (0, core_1.generateWebPackage)(projectPath, templateData);
|
|
54
54
|
// Step 3: Generate mobile package with React Native
|
|
55
|
-
|
|
55
|
+
if (!config.isInteractive) {
|
|
56
|
+
logger_1.logger.step('Setting up React Native mobile package...');
|
|
57
|
+
}
|
|
56
58
|
const mobileResult = await (0, core_1.generateMobilePackage)(projectPath, {
|
|
57
59
|
...templateData,
|
|
58
60
|
bundleId: config.iosBundleId,
|
|
59
61
|
packageName: config.androidPackageName,
|
|
60
62
|
skipInstall: true, // We'll install all at once at the end
|
|
63
|
+
interactive: config.isInteractive,
|
|
61
64
|
});
|
|
62
65
|
if (mobileResult.warning) {
|
|
63
66
|
warnings.push(mobileResult.warning);
|
|
@@ -96,13 +99,26 @@ async function generateProject(config) {
|
|
|
96
99
|
}
|
|
97
100
|
// Step 5: Install dependencies
|
|
98
101
|
if (!config.skipInstall) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
if (config.isInteractive) {
|
|
103
|
+
const spinner = logger_1.logger.spinner('Installing dependencies...');
|
|
104
|
+
try {
|
|
105
|
+
await (0, shell_1.installDependencies)(projectPath, { silent: true });
|
|
106
|
+
spinner.succeed('Dependencies installed');
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
spinner.fail('Failed to install dependencies');
|
|
110
|
+
warnings.push('Failed to install dependencies. Run `yarn install` manually.');
|
|
111
|
+
}
|
|
103
112
|
}
|
|
104
|
-
|
|
105
|
-
|
|
113
|
+
else {
|
|
114
|
+
logger_1.logger.step('Installing dependencies...');
|
|
115
|
+
try {
|
|
116
|
+
await (0, shell_1.installDependencies)(projectPath);
|
|
117
|
+
logger_1.logger.success('Dependencies installed successfully!');
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
warnings.push('Failed to install dependencies. Run `yarn install` manually.');
|
|
121
|
+
}
|
|
106
122
|
}
|
|
107
123
|
}
|
|
108
124
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;AAmBH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
|