@fnd-platform/cli 1.0.0-alpha.23 → 1.0.0-alpha.25
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/bin/fnd.js +101 -4
- package/lib/bin/fnd.js.map +1 -1
- package/lib/commands/add.js +72 -75
- package/lib/commands/add.js.map +1 -1
- package/lib/commands/build.js +29 -34
- package/lib/commands/build.js.map +1 -1
- package/lib/commands/deploy.d.ts +13 -5
- package/lib/commands/deploy.d.ts.map +1 -1
- package/lib/commands/deploy.js +94 -75
- package/lib/commands/deploy.js.map +1 -1
- package/lib/commands/destroy.js +33 -38
- package/lib/commands/destroy.js.map +1 -1
- package/lib/commands/index.d.ts +1 -0
- package/lib/commands/index.d.ts.map +1 -1
- package/lib/commands/index.js +7 -15
- package/lib/commands/index.js.map +1 -1
- package/lib/commands/new.js +46 -50
- package/lib/commands/new.js.map +1 -1
- package/lib/commands/synth.d.ts +8 -1
- package/lib/commands/synth.d.ts.map +1 -1
- package/lib/commands/synth.js +82 -22
- package/lib/commands/synth.js.map +1 -1
- package/lib/commands/test.d.ts +73 -0
- package/lib/commands/test.d.ts.map +1 -0
- package/lib/commands/test.js +193 -0
- package/lib/commands/test.js.map +1 -0
- package/lib/index.d.ts +11 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +29 -18
- package/lib/index.js.map +1 -1
- package/lib/lib/deploy-utils.d.ts.map +1 -1
- package/lib/lib/deploy-utils.js +73 -72
- package/lib/lib/deploy-utils.js.map +1 -1
- package/lib/lib/infra-generator.js +55 -63
- package/lib/lib/infra-generator.js.map +1 -1
- package/lib/lib/logger.js +23 -29
- package/lib/lib/logger.js.map +1 -1
- package/lib/lib/nx-stats.js +12 -18
- package/lib/lib/nx-stats.js.map +1 -1
- package/lib/lib/project.js +7 -11
- package/lib/lib/project.js.map +1 -1
- package/lib/lib/templates.js +2 -6
- package/lib/lib/templates.js.map +1 -1
- package/lib/lib/timer.js +2 -7
- package/lib/lib/timer.js.map +1 -1
- package/lib/lib/validation.d.ts +135 -0
- package/lib/lib/validation.d.ts.map +1 -0
- package/lib/lib/validation.js +233 -0
- package/lib/lib/validation.js.map +1 -0
- package/lib/tui/App.d.ts +11 -0
- package/lib/tui/App.d.ts.map +1 -0
- package/lib/tui/App.js +98 -0
- package/lib/tui/App.js.map +1 -0
- package/lib/tui/components/branding/AsciiBanner.d.ts +21 -0
- package/lib/tui/components/branding/AsciiBanner.d.ts.map +1 -0
- package/lib/tui/components/branding/AsciiBanner.js +15 -0
- package/lib/tui/components/branding/AsciiBanner.js.map +1 -0
- package/lib/tui/components/branding/index.d.ts +5 -0
- package/lib/tui/components/branding/index.d.ts.map +1 -0
- package/lib/tui/components/branding/index.js +5 -0
- package/lib/tui/components/branding/index.js.map +1 -0
- package/lib/tui/components/feedback/Notification.d.ts +51 -0
- package/lib/tui/components/feedback/Notification.d.ts.map +1 -0
- package/lib/tui/components/feedback/Notification.js +89 -0
- package/lib/tui/components/feedback/Notification.js.map +1 -0
- package/lib/tui/components/feedback/ProgressBar.d.ts +46 -0
- package/lib/tui/components/feedback/ProgressBar.d.ts.map +1 -0
- package/lib/tui/components/feedback/ProgressBar.js +30 -0
- package/lib/tui/components/feedback/ProgressBar.js.map +1 -0
- package/lib/tui/components/feedback/ProgressSteps.d.ts +35 -0
- package/lib/tui/components/feedback/ProgressSteps.d.ts.map +1 -0
- package/lib/tui/components/feedback/ProgressSteps.js +37 -0
- package/lib/tui/components/feedback/ProgressSteps.js.map +1 -0
- package/lib/tui/components/feedback/Spinner.d.ts +18 -0
- package/lib/tui/components/feedback/Spinner.d.ts.map +1 -0
- package/lib/tui/components/feedback/Spinner.js +28 -0
- package/lib/tui/components/feedback/Spinner.js.map +1 -0
- package/lib/tui/components/feedback/index.d.ts +8 -0
- package/lib/tui/components/feedback/index.d.ts.map +1 -0
- package/lib/tui/components/feedback/index.js +8 -0
- package/lib/tui/components/feedback/index.js.map +1 -0
- package/lib/tui/components/index.d.ts +8 -0
- package/lib/tui/components/index.d.ts.map +1 -0
- package/lib/tui/components/index.js +8 -0
- package/lib/tui/components/index.js.map +1 -0
- package/lib/tui/components/input/Checkbox.d.ts +26 -0
- package/lib/tui/components/input/Checkbox.d.ts.map +1 -0
- package/lib/tui/components/input/Checkbox.js +20 -0
- package/lib/tui/components/input/Checkbox.js.map +1 -0
- package/lib/tui/components/input/SelectInput.d.ts +41 -0
- package/lib/tui/components/input/SelectInput.d.ts.map +1 -0
- package/lib/tui/components/input/SelectInput.js +53 -0
- package/lib/tui/components/input/SelectInput.js.map +1 -0
- package/lib/tui/components/input/TextInput.d.ts +30 -0
- package/lib/tui/components/input/TextInput.d.ts.map +1 -0
- package/lib/tui/components/input/TextInput.js +48 -0
- package/lib/tui/components/input/TextInput.js.map +1 -0
- package/lib/tui/components/input/index.d.ts +7 -0
- package/lib/tui/components/input/index.d.ts.map +1 -0
- package/lib/tui/components/input/index.js +7 -0
- package/lib/tui/components/input/index.js.map +1 -0
- package/lib/tui/components/layout/Breadcrumbs.d.ts +11 -0
- package/lib/tui/components/layout/Breadcrumbs.d.ts.map +1 -0
- package/lib/tui/components/layout/Breadcrumbs.js +34 -0
- package/lib/tui/components/layout/Breadcrumbs.js.map +1 -0
- package/lib/tui/components/layout/Footer.d.ts +11 -0
- package/lib/tui/components/layout/Footer.d.ts.map +1 -0
- package/lib/tui/components/layout/Footer.js +20 -0
- package/lib/tui/components/layout/Footer.js.map +1 -0
- package/lib/tui/components/layout/Header.d.ts +21 -0
- package/lib/tui/components/layout/Header.d.ts.map +1 -0
- package/lib/tui/components/layout/Header.js +21 -0
- package/lib/tui/components/layout/Header.js.map +1 -0
- package/lib/tui/components/layout/Screen.d.ts +27 -0
- package/lib/tui/components/layout/Screen.d.ts.map +1 -0
- package/lib/tui/components/layout/Screen.js +11 -0
- package/lib/tui/components/layout/Screen.js.map +1 -0
- package/lib/tui/components/layout/index.d.ts +8 -0
- package/lib/tui/components/layout/index.d.ts.map +1 -0
- package/lib/tui/components/layout/index.js +8 -0
- package/lib/tui/components/layout/index.js.map +1 -0
- package/lib/tui/hooks/index.d.ts +20 -0
- package/lib/tui/hooks/index.d.ts.map +1 -0
- package/lib/tui/hooks/index.js +18 -0
- package/lib/tui/hooks/index.js.map +1 -0
- package/lib/tui/hooks/useAddPackage.d.ts +120 -0
- package/lib/tui/hooks/useAddPackage.d.ts.map +1 -0
- package/lib/tui/hooks/useAddPackage.js +347 -0
- package/lib/tui/hooks/useAddPackage.js.map +1 -0
- package/lib/tui/hooks/useCreateProject.d.ts +66 -0
- package/lib/tui/hooks/useCreateProject.d.ts.map +1 -0
- package/lib/tui/hooks/useCreateProject.js +156 -0
- package/lib/tui/hooks/useCreateProject.js.map +1 -0
- package/lib/tui/hooks/useDeploy.d.ts +93 -0
- package/lib/tui/hooks/useDeploy.d.ts.map +1 -0
- package/lib/tui/hooks/useDeploy.js +252 -0
- package/lib/tui/hooks/useDeploy.js.map +1 -0
- package/lib/tui/hooks/useKeyboard.d.ts +66 -0
- package/lib/tui/hooks/useKeyboard.d.ts.map +1 -0
- package/lib/tui/hooks/useKeyboard.js +101 -0
- package/lib/tui/hooks/useKeyboard.js.map +1 -0
- package/lib/tui/hooks/useNavigation.d.ts +33 -0
- package/lib/tui/hooks/useNavigation.d.ts.map +1 -0
- package/lib/tui/hooks/useNavigation.js +27 -0
- package/lib/tui/hooks/useNavigation.js.map +1 -0
- package/lib/tui/hooks/useProject.d.ts +36 -0
- package/lib/tui/hooks/useProject.d.ts.map +1 -0
- package/lib/tui/hooks/useProject.js +47 -0
- package/lib/tui/hooks/useProject.js.map +1 -0
- package/lib/tui/index.d.ts +15 -0
- package/lib/tui/index.d.ts.map +1 -0
- package/lib/tui/index.js +16 -0
- package/lib/tui/index.js.map +1 -0
- package/lib/tui/lib/add-package-tui.d.ts +127 -0
- package/lib/tui/lib/add-package-tui.d.ts.map +1 -0
- package/lib/tui/lib/add-package-tui.js +467 -0
- package/lib/tui/lib/add-package-tui.js.map +1 -0
- package/lib/tui/lib/create-project-tui.d.ts +84 -0
- package/lib/tui/lib/create-project-tui.d.ts.map +1 -0
- package/lib/tui/lib/create-project-tui.js +141 -0
- package/lib/tui/lib/create-project-tui.js.map +1 -0
- package/lib/tui/lib/deploy-tui.d.ts +131 -0
- package/lib/tui/lib/deploy-tui.d.ts.map +1 -0
- package/lib/tui/lib/deploy-tui.js +347 -0
- package/lib/tui/lib/deploy-tui.js.map +1 -0
- package/lib/tui/screens/AddPackageScreen.d.ts +12 -0
- package/lib/tui/screens/AddPackageScreen.d.ts.map +1 -0
- package/lib/tui/screens/AddPackageScreen.js +436 -0
- package/lib/tui/screens/AddPackageScreen.js.map +1 -0
- package/lib/tui/screens/CreateProjectScreen.d.ts +12 -0
- package/lib/tui/screens/CreateProjectScreen.d.ts.map +1 -0
- package/lib/tui/screens/CreateProjectScreen.js +252 -0
- package/lib/tui/screens/CreateProjectScreen.js.map +1 -0
- package/lib/tui/screens/DeployScreen.d.ts +11 -0
- package/lib/tui/screens/DeployScreen.d.ts.map +1 -0
- package/lib/tui/screens/DeployScreen.js +224 -0
- package/lib/tui/screens/DeployScreen.js.map +1 -0
- package/lib/tui/screens/ProjectDashboard.d.ts +11 -0
- package/lib/tui/screens/ProjectDashboard.d.ts.map +1 -0
- package/lib/tui/screens/ProjectDashboard.js +42 -0
- package/lib/tui/screens/ProjectDashboard.js.map +1 -0
- package/lib/tui/screens/WelcomeScreen.d.ts +11 -0
- package/lib/tui/screens/WelcomeScreen.d.ts.map +1 -0
- package/lib/tui/screens/WelcomeScreen.js +26 -0
- package/lib/tui/screens/WelcomeScreen.js.map +1 -0
- package/lib/tui/screens/index.d.ts +9 -0
- package/lib/tui/screens/index.d.ts.map +1 -0
- package/lib/tui/screens/index.js +9 -0
- package/lib/tui/screens/index.js.map +1 -0
- package/lib/tui/services/ConfigService.d.ts +133 -0
- package/lib/tui/services/ConfigService.d.ts.map +1 -0
- package/lib/tui/services/ConfigService.js +221 -0
- package/lib/tui/services/ConfigService.js.map +1 -0
- package/lib/tui/services/ProjectService.d.ts +55 -0
- package/lib/tui/services/ProjectService.d.ts.map +1 -0
- package/lib/tui/services/ProjectService.js +179 -0
- package/lib/tui/services/ProjectService.js.map +1 -0
- package/lib/tui/services/index.d.ts +6 -0
- package/lib/tui/services/index.d.ts.map +1 -0
- package/lib/tui/services/index.js +6 -0
- package/lib/tui/services/index.js.map +1 -0
- package/lib/tui/state/AppContext.d.ts +58 -0
- package/lib/tui/state/AppContext.d.ts.map +1 -0
- package/lib/tui/state/AppContext.js +75 -0
- package/lib/tui/state/AppContext.js.map +1 -0
- package/lib/tui/state/index.d.ts +7 -0
- package/lib/tui/state/index.d.ts.map +1 -0
- package/lib/tui/state/index.js +7 -0
- package/lib/tui/state/index.js.map +1 -0
- package/lib/tui/state/reducer.d.ts +13 -0
- package/lib/tui/state/reducer.d.ts.map +1 -0
- package/lib/tui/state/reducer.js +136 -0
- package/lib/tui/state/reducer.js.map +1 -0
- package/lib/tui/state/types.d.ts +132 -0
- package/lib/tui/state/types.d.ts.map +1 -0
- package/lib/tui/state/types.js +38 -0
- package/lib/tui/state/types.js.map +1 -0
- package/lib/tui/utils/ascii.d.ts +42 -0
- package/lib/tui/utils/ascii.d.ts.map +1 -0
- package/lib/tui/utils/ascii.js +63 -0
- package/lib/tui/utils/ascii.js.map +1 -0
- package/lib/tui/utils/colors.d.ts +65 -0
- package/lib/tui/utils/colors.d.ts.map +1 -0
- package/lib/tui/utils/colors.js +65 -0
- package/lib/tui/utils/colors.js.map +1 -0
- package/lib/tui/utils/index.d.ts +6 -0
- package/lib/tui/utils/index.d.ts.map +1 -0
- package/lib/tui/utils/index.js +6 -0
- package/lib/tui/utils/index.js.map +1 -0
- package/package.json +12 -3
package/lib/commands/index.js
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var build_js_1 = require("./build.js");
|
|
9
|
-
Object.defineProperty(exports, "buildCommand", { enumerable: true, get: function () { return build_js_1.buildCommand; } });
|
|
10
|
-
var add_js_1 = require("./add.js");
|
|
11
|
-
Object.defineProperty(exports, "addCommand", { enumerable: true, get: function () { return add_js_1.addCommand; } });
|
|
12
|
-
var deploy_js_1 = require("./deploy.js");
|
|
13
|
-
Object.defineProperty(exports, "deployCommand", { enumerable: true, get: function () { return deploy_js_1.deployCommand; } });
|
|
14
|
-
var destroy_js_1 = require("./destroy.js");
|
|
15
|
-
Object.defineProperty(exports, "destroyCommand", { enumerable: true, get: function () { return destroy_js_1.destroyCommand; } });
|
|
1
|
+
export { newCommand } from './new.js';
|
|
2
|
+
export { synthCommand } from './synth.js';
|
|
3
|
+
export { buildCommand } from './build.js';
|
|
4
|
+
export { testCommand } from './test.js';
|
|
5
|
+
export { addCommand } from './add.js';
|
|
6
|
+
export { deployCommand } from './deploy.js';
|
|
7
|
+
export { destroyCommand } from './destroy.js';
|
|
16
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/lib/commands/new.js
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const fs_1 = require("fs");
|
|
9
|
-
const path_1 = require("path");
|
|
10
|
-
const logger_js_1 = require("../lib/logger.js");
|
|
11
|
-
const templates_js_1 = require("../lib/templates.js");
|
|
12
|
-
const timer_js_1 = require("../lib/timer.js");
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { existsSync, mkdirSync, rmSync, writeFileSync } from 'fs';
|
|
4
|
+
import { join, resolve } from 'path';
|
|
5
|
+
import { logger } from '../lib/logger.js';
|
|
6
|
+
import { getProjenrcTemplate, getInitialPackageJson } from '../lib/templates.js';
|
|
7
|
+
import { PerformanceTimer } from '../lib/timer.js';
|
|
13
8
|
/**
|
|
14
9
|
* Valid project name pattern: lowercase alphanumeric with hyphens.
|
|
15
10
|
* Must start with a letter.
|
|
16
11
|
*/
|
|
17
12
|
const PROJECT_NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
18
|
-
exports.PROJECT_NAME_PATTERN = PROJECT_NAME_PATTERN;
|
|
19
13
|
/**
|
|
20
14
|
* Creates the `fnd new` command.
|
|
21
15
|
*
|
|
@@ -30,8 +24,8 @@ exports.PROJECT_NAME_PATTERN = PROJECT_NAME_PATTERN;
|
|
|
30
24
|
* program.parse(['node', 'fnd', 'new', 'my-app']);
|
|
31
25
|
* ```
|
|
32
26
|
*/
|
|
33
|
-
function newCommand() {
|
|
34
|
-
return new
|
|
27
|
+
export function newCommand() {
|
|
28
|
+
return new Command('new')
|
|
35
29
|
.description('Create a new fnd-platform monorepo project')
|
|
36
30
|
.argument('<name>', 'Project name (lowercase alphanumeric with hyphens)')
|
|
37
31
|
.option('--package-manager <pm>', 'Package manager to use (pnpm or yarn)', 'pnpm')
|
|
@@ -56,84 +50,84 @@ function newCommand() {
|
|
|
56
50
|
* });
|
|
57
51
|
* ```
|
|
58
52
|
*/
|
|
59
|
-
async function createProject(name, options) {
|
|
53
|
+
export async function createProject(name, options) {
|
|
60
54
|
// Initialize profiling if enabled
|
|
61
|
-
const timer =
|
|
55
|
+
const timer = PerformanceTimer.isEnabled() ? new PerformanceTimer('fnd new') : null;
|
|
62
56
|
// Validate project name
|
|
63
57
|
if (!PROJECT_NAME_PATTERN.test(name)) {
|
|
64
|
-
|
|
58
|
+
logger.error(`Invalid project name: '${name}'. ` +
|
|
65
59
|
'Project name must start with a letter and contain only lowercase letters, numbers, and hyphens.');
|
|
66
60
|
process.exit(1);
|
|
67
61
|
}
|
|
68
|
-
const projectDir =
|
|
62
|
+
const projectDir = resolve(process.cwd(), name);
|
|
69
63
|
// Check if directory already exists
|
|
70
|
-
if (
|
|
71
|
-
|
|
64
|
+
if (existsSync(projectDir)) {
|
|
65
|
+
logger.error(`Directory '${name}' already exists. ` +
|
|
72
66
|
'Please choose a different name or remove the existing directory.');
|
|
73
67
|
process.exit(1);
|
|
74
68
|
}
|
|
75
|
-
|
|
69
|
+
logger.info(`Creating new fnd-platform project: ${name}`);
|
|
76
70
|
try {
|
|
77
71
|
// Step 1: Create project directory and write files
|
|
78
72
|
timer?.start('file-generation');
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
logger.debug(`Creating directory: ${projectDir}`);
|
|
74
|
+
mkdirSync(projectDir, { recursive: true });
|
|
81
75
|
// Step 2: Write .projenrc.ts
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
logger.debug('Writing .projenrc.ts');
|
|
77
|
+
writeFileSync(join(projectDir, '.projenrc.ts'), getProjenrcTemplate(name));
|
|
84
78
|
// Step 3: Write initial package.json
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
logger.debug('Writing initial package.json');
|
|
80
|
+
writeFileSync(join(projectDir, 'package.json'), JSON.stringify(getInitialPackageJson(name, options.packageManager), null, 2));
|
|
87
81
|
const fileGenResult = timer?.end('file-generation');
|
|
88
82
|
if (fileGenResult) {
|
|
89
|
-
|
|
83
|
+
logger.timing('file-generation', fileGenResult.durationMs);
|
|
90
84
|
}
|
|
91
85
|
// Step 4: Initialize git repository (unless --no-git)
|
|
92
86
|
if (options.git) {
|
|
93
87
|
timer?.start('git-init');
|
|
94
|
-
|
|
88
|
+
logger.debug('Initializing git repository');
|
|
95
89
|
initializeGit(projectDir);
|
|
96
90
|
const gitResult = timer?.end('git-init');
|
|
97
91
|
if (gitResult) {
|
|
98
|
-
|
|
92
|
+
logger.timing('git-init', gitResult.durationMs);
|
|
99
93
|
}
|
|
100
94
|
}
|
|
101
95
|
// Step 5: Install dependencies and run Projen (unless --no-install)
|
|
102
96
|
if (options.install) {
|
|
103
97
|
timer?.start('install-dependencies');
|
|
104
|
-
|
|
98
|
+
logger.info('Installing dependencies...');
|
|
105
99
|
installDependencies(projectDir, options.packageManager);
|
|
106
100
|
const installResult = timer?.end('install-dependencies');
|
|
107
101
|
if (installResult) {
|
|
108
|
-
|
|
102
|
+
logger.timing('install-dependencies', installResult.durationMs);
|
|
109
103
|
}
|
|
110
104
|
timer?.start('projen-synth');
|
|
111
|
-
|
|
105
|
+
logger.info('Running Projen synthesis...');
|
|
112
106
|
runProjen(projectDir);
|
|
113
107
|
const synthResult = timer?.end('projen-synth');
|
|
114
108
|
if (synthResult) {
|
|
115
|
-
|
|
109
|
+
logger.timing('projen-synth', synthResult.durationMs);
|
|
116
110
|
}
|
|
117
111
|
}
|
|
118
|
-
|
|
112
|
+
logger.success(`Project '${name}' created successfully!`);
|
|
119
113
|
printNextSteps(name, options);
|
|
120
114
|
// Output profile report if enabled
|
|
121
115
|
if (timer) {
|
|
122
116
|
const report = timer.getReport(true);
|
|
123
|
-
|
|
117
|
+
logger.report(report);
|
|
124
118
|
}
|
|
125
119
|
}
|
|
126
120
|
catch (error) {
|
|
127
121
|
// Output profile report even on failure
|
|
128
122
|
if (timer) {
|
|
129
123
|
const report = timer.getReport(false);
|
|
130
|
-
|
|
124
|
+
logger.report(report);
|
|
131
125
|
}
|
|
132
|
-
|
|
126
|
+
logger.error(`Failed to create project: ${error.message}`);
|
|
133
127
|
// Clean up partial project on failure
|
|
134
|
-
if (
|
|
135
|
-
|
|
136
|
-
|
|
128
|
+
if (existsSync(projectDir)) {
|
|
129
|
+
logger.debug('Cleaning up partial project directory');
|
|
130
|
+
rmSync(projectDir, { recursive: true, force: true });
|
|
137
131
|
}
|
|
138
132
|
process.exit(1);
|
|
139
133
|
}
|
|
@@ -143,22 +137,22 @@ async function createProject(name, options) {
|
|
|
143
137
|
*/
|
|
144
138
|
function initializeGit(projectDir) {
|
|
145
139
|
try {
|
|
146
|
-
|
|
140
|
+
execSync('git init', {
|
|
147
141
|
cwd: projectDir,
|
|
148
142
|
stdio: 'pipe',
|
|
149
143
|
});
|
|
150
|
-
|
|
144
|
+
execSync('git add -A', {
|
|
151
145
|
cwd: projectDir,
|
|
152
146
|
stdio: 'pipe',
|
|
153
147
|
});
|
|
154
|
-
|
|
148
|
+
execSync('git commit -m "Initial commit from fnd-platform"', {
|
|
155
149
|
cwd: projectDir,
|
|
156
150
|
stdio: 'pipe',
|
|
157
151
|
});
|
|
158
152
|
}
|
|
159
153
|
catch (error) {
|
|
160
|
-
|
|
161
|
-
|
|
154
|
+
logger.warn('Git initialization failed (git may not be configured)');
|
|
155
|
+
logger.debug(`Git error: ${error.message}`);
|
|
162
156
|
}
|
|
163
157
|
}
|
|
164
158
|
/**
|
|
@@ -166,7 +160,7 @@ function initializeGit(projectDir) {
|
|
|
166
160
|
*/
|
|
167
161
|
function installDependencies(projectDir, packageManager) {
|
|
168
162
|
const installCmd = packageManager === 'pnpm' ? 'pnpm install' : 'yarn install';
|
|
169
|
-
|
|
163
|
+
execSync(installCmd, {
|
|
170
164
|
cwd: projectDir,
|
|
171
165
|
stdio: 'inherit',
|
|
172
166
|
});
|
|
@@ -175,7 +169,7 @@ function installDependencies(projectDir, packageManager) {
|
|
|
175
169
|
* Run Projen synthesis.
|
|
176
170
|
*/
|
|
177
171
|
function runProjen(projectDir) {
|
|
178
|
-
|
|
172
|
+
execSync('npx tsx .projenrc.ts', {
|
|
179
173
|
cwd: projectDir,
|
|
180
174
|
stdio: 'inherit',
|
|
181
175
|
});
|
|
@@ -185,7 +179,7 @@ function runProjen(projectDir) {
|
|
|
185
179
|
*/
|
|
186
180
|
function printNextSteps(name, options) {
|
|
187
181
|
console.log('');
|
|
188
|
-
|
|
182
|
+
logger.info('Next steps:');
|
|
189
183
|
console.log(` cd ${name}`);
|
|
190
184
|
if (!options.install) {
|
|
191
185
|
const pm = options.packageManager;
|
|
@@ -196,4 +190,6 @@ function printNextSteps(name, options) {
|
|
|
196
190
|
console.log(' fnd add frontend --name=frontend --api=api');
|
|
197
191
|
console.log('');
|
|
198
192
|
}
|
|
193
|
+
// Export for testing
|
|
194
|
+
export { PROJECT_NAME_PATTERN };
|
|
199
195
|
//# sourceMappingURL=new.js.map
|
package/lib/commands/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
package/lib/commands/synth.d.ts
CHANGED
|
@@ -30,10 +30,17 @@ export declare function synthCommand(): Command;
|
|
|
30
30
|
* // Run synthesis with default options
|
|
31
31
|
* await runSynth({});
|
|
32
32
|
*
|
|
33
|
-
* // Run synthesis with watch mode
|
|
33
|
+
* // Run synthesis with watch mode
|
|
34
34
|
* await runSynth({ watch: true });
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
37
|
export declare function runSynth(options: SynthCommandOptions): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Runs the Projen synthesis command.
|
|
40
|
+
*
|
|
41
|
+
* @param projectRoot - Root directory of the project
|
|
42
|
+
* @returns true if successful, false otherwise
|
|
43
|
+
*/
|
|
44
|
+
export declare function runProjenSynth(projectRoot: string): boolean;
|
|
38
45
|
export {};
|
|
39
46
|
//# sourceMappingURL=synth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAOtC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB1E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAa3D"}
|
package/lib/commands/synth.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const project_js_1 = require("../lib/project.js");
|
|
8
|
-
const logger_js_1 = require("../lib/logger.js");
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { watch, existsSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { requireProjectRoot } from '../lib/project.js';
|
|
6
|
+
import { logger } from '../lib/logger.js';
|
|
9
7
|
/**
|
|
10
8
|
* Creates the `fnd synth` command.
|
|
11
9
|
*
|
|
@@ -20,10 +18,10 @@ const logger_js_1 = require("../lib/logger.js");
|
|
|
20
18
|
* program.parse(['node', 'fnd', 'synth']);
|
|
21
19
|
* ```
|
|
22
20
|
*/
|
|
23
|
-
function synthCommand() {
|
|
24
|
-
return new
|
|
21
|
+
export function synthCommand() {
|
|
22
|
+
return new Command('synth')
|
|
25
23
|
.description('Synthesize project configuration using Projen')
|
|
26
|
-
.option('--watch', 'Watch for changes and re-synthesize
|
|
24
|
+
.option('--watch', 'Watch for changes and re-synthesize')
|
|
27
25
|
.action(async (options) => {
|
|
28
26
|
await runSynth(options);
|
|
29
27
|
});
|
|
@@ -38,35 +36,97 @@ function synthCommand() {
|
|
|
38
36
|
* // Run synthesis with default options
|
|
39
37
|
* await runSynth({});
|
|
40
38
|
*
|
|
41
|
-
* // Run synthesis with watch mode
|
|
39
|
+
* // Run synthesis with watch mode
|
|
42
40
|
* await runSynth({ watch: true });
|
|
43
41
|
* ```
|
|
44
42
|
*/
|
|
45
|
-
async function runSynth(options) {
|
|
43
|
+
export async function runSynth(options) {
|
|
46
44
|
let projectRoot;
|
|
47
45
|
try {
|
|
48
|
-
projectRoot =
|
|
46
|
+
projectRoot = requireProjectRoot();
|
|
49
47
|
}
|
|
50
48
|
catch (error) {
|
|
51
|
-
|
|
49
|
+
logger.error(error.message);
|
|
52
50
|
process.exit(1);
|
|
53
51
|
}
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
logger.info('Synthesizing project configuration...');
|
|
53
|
+
logger.debug(`Project root: ${projectRoot}`);
|
|
54
|
+
// Run initial synthesis
|
|
55
|
+
if (!runProjenSynth(projectRoot)) {
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
// If watch mode, set up file watcher
|
|
56
59
|
if (options.watch) {
|
|
57
|
-
|
|
60
|
+
await watchForChanges(projectRoot);
|
|
58
61
|
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Runs the Projen synthesis command.
|
|
65
|
+
*
|
|
66
|
+
* @param projectRoot - Root directory of the project
|
|
67
|
+
* @returns true if successful, false otherwise
|
|
68
|
+
*/
|
|
69
|
+
export function runProjenSynth(projectRoot) {
|
|
59
70
|
try {
|
|
60
|
-
|
|
71
|
+
execSync('npx projen', {
|
|
61
72
|
cwd: projectRoot,
|
|
62
73
|
stdio: 'inherit',
|
|
63
74
|
});
|
|
64
|
-
|
|
75
|
+
logger.success('Synthesis complete');
|
|
76
|
+
return true;
|
|
65
77
|
}
|
|
66
78
|
catch (error) {
|
|
67
|
-
|
|
68
|
-
|
|
79
|
+
logger.error('Synthesis failed');
|
|
80
|
+
logger.debug(`Error: ${error.message}`);
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Watches for changes to .projenrc.ts and re-runs synthesis.
|
|
86
|
+
*
|
|
87
|
+
* @param projectRoot - Root directory of the project
|
|
88
|
+
*/
|
|
89
|
+
async function watchForChanges(projectRoot) {
|
|
90
|
+
const projenrcPath = join(projectRoot, '.projenrc.ts');
|
|
91
|
+
if (!existsSync(projenrcPath)) {
|
|
92
|
+
logger.error('.projenrc.ts not found');
|
|
69
93
|
process.exit(1);
|
|
70
94
|
}
|
|
95
|
+
logger.info('Watching for changes to .projenrc.ts... (Ctrl+C to stop)');
|
|
96
|
+
// Debounce timer to avoid rapid re-runs
|
|
97
|
+
let debounceTimer = null;
|
|
98
|
+
const debounceMs = 500;
|
|
99
|
+
const watcher = watch(projenrcPath, (eventType) => {
|
|
100
|
+
if (eventType === 'change') {
|
|
101
|
+
// Clear existing timer if present
|
|
102
|
+
if (debounceTimer) {
|
|
103
|
+
clearTimeout(debounceTimer);
|
|
104
|
+
}
|
|
105
|
+
// Set new debounce timer
|
|
106
|
+
debounceTimer = setTimeout(() => {
|
|
107
|
+
logger.info('');
|
|
108
|
+
logger.info('Detected change in .projenrc.ts, re-synthesizing...');
|
|
109
|
+
runProjenSynth(projectRoot);
|
|
110
|
+
logger.info('Watching for changes... (Ctrl+C to stop)');
|
|
111
|
+
}, debounceMs);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
// Handle graceful shutdown
|
|
115
|
+
const cleanup = () => {
|
|
116
|
+
if (debounceTimer) {
|
|
117
|
+
clearTimeout(debounceTimer);
|
|
118
|
+
}
|
|
119
|
+
watcher.close();
|
|
120
|
+
logger.info('');
|
|
121
|
+
logger.info('Watch mode stopped');
|
|
122
|
+
process.exit(0);
|
|
123
|
+
};
|
|
124
|
+
process.on('SIGINT', cleanup);
|
|
125
|
+
process.on('SIGTERM', cleanup);
|
|
126
|
+
// Keep the process running
|
|
127
|
+
await new Promise(() => {
|
|
128
|
+
// This promise never resolves, keeping the process alive
|
|
129
|
+
// The process will exit via SIGINT/SIGTERM handlers
|
|
130
|
+
});
|
|
71
131
|
}
|
|
72
132
|
//# sourceMappingURL=synth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synth.js","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"synth.js","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Options for the test command.
|
|
4
|
+
*/
|
|
5
|
+
interface TestCommandOptions {
|
|
6
|
+
package?: string;
|
|
7
|
+
coverage?: boolean;
|
|
8
|
+
watch?: boolean;
|
|
9
|
+
update?: boolean;
|
|
10
|
+
ci?: boolean;
|
|
11
|
+
skipCache?: boolean;
|
|
12
|
+
parallel?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Creates the `fnd test` command.
|
|
16
|
+
*
|
|
17
|
+
* @returns Commander command instance
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { testCommand } from '@fnd-platform/cli';
|
|
22
|
+
*
|
|
23
|
+
* const program = new Command();
|
|
24
|
+
* program.addCommand(testCommand());
|
|
25
|
+
* program.parse(['node', 'fnd', 'test']);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function testCommand(): Command;
|
|
29
|
+
/**
|
|
30
|
+
* Runs the NX test.
|
|
31
|
+
*
|
|
32
|
+
* @param options - Command options
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Run all tests
|
|
37
|
+
* await runTest({});
|
|
38
|
+
*
|
|
39
|
+
* // Test a specific package with coverage
|
|
40
|
+
* await runTest({ package: 'api', coverage: true });
|
|
41
|
+
*
|
|
42
|
+
* // Run tests in watch mode
|
|
43
|
+
* await runTest({ watch: true });
|
|
44
|
+
*
|
|
45
|
+
* // Run tests in CI mode
|
|
46
|
+
* await runTest({ ci: true });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function runTest(options: TestCommandOptions): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Builds the NX command arguments based on options.
|
|
52
|
+
*
|
|
53
|
+
* @param options - Command options
|
|
54
|
+
* @returns Array of command arguments
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* // Run all tests
|
|
59
|
+
* buildNxTestArgs({});
|
|
60
|
+
* // Returns: ['npx', 'nx', 'run-many', '--target=test', '--all']
|
|
61
|
+
*
|
|
62
|
+
* // Test specific package with coverage
|
|
63
|
+
* buildNxTestArgs({ package: 'api', coverage: true });
|
|
64
|
+
* // Returns: ['npx', 'nx', 'run', 'api:test', '--', '--coverage']
|
|
65
|
+
*
|
|
66
|
+
* // Run all tests in CI mode
|
|
67
|
+
* buildNxTestArgs({ ci: true });
|
|
68
|
+
* // Returns: ['npx', 'nx', 'run-many', '--target=test', '--all', '--', '--ci']
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function buildNxTestArgs(options: TestCommandOptions): string[];
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAarC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwExE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAiCrE"}
|