@nexus-framework/cli 0.1.4 → 0.2.1
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/README.md +133 -40
- package/dist/cli.js +5 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +4 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +47 -8
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/generators/ai-config.d.ts.map +1 -1
- package/dist/generators/ai-config.js +208 -55
- package/dist/generators/ai-config.js.map +1 -1
- package/dist/generators/docs.d.ts +10 -1
- package/dist/generators/docs.d.ts.map +1 -1
- package/dist/generators/docs.js +40 -65
- package/dist/generators/docs.js.map +1 -1
- package/dist/generators/index.d.ts +2 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +49 -7
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/spring-boot.d.ts +12 -0
- package/dist/generators/spring-boot.d.ts.map +1 -0
- package/dist/generators/spring-boot.js +220 -0
- package/dist/generators/spring-boot.js.map +1 -0
- package/dist/generators/structure.d.ts +1 -0
- package/dist/generators/structure.d.ts.map +1 -1
- package/dist/generators/structure.js +90 -24
- package/dist/generators/structure.js.map +1 -1
- package/dist/prompts/adoption.d.ts +35 -0
- package/dist/prompts/adoption.d.ts.map +1 -0
- package/dist/prompts/adoption.js +153 -0
- package/dist/prompts/adoption.js.map +1 -0
- package/dist/prompts/frameworks.d.ts +5 -1
- package/dist/prompts/frameworks.d.ts.map +1 -1
- package/dist/prompts/frameworks.js +48 -0
- package/dist/prompts/frameworks.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +19 -7
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/persona.d.ts +16 -0
- package/dist/prompts/persona.d.ts.map +1 -0
- package/dist/prompts/persona.js +79 -0
- package/dist/prompts/persona.js.map +1 -0
- package/dist/prompts/project-type.d.ts.map +1 -1
- package/dist/prompts/project-type.js +6 -1
- package/dist/prompts/project-type.js.map +1 -1
- package/dist/types/config.d.ts +31 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +7 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +4 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +49 -36
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/project-detector.d.ts +20 -4
- package/dist/utils/project-detector.d.ts.map +1 -1
- package/dist/utils/project-detector.js +156 -27
- package/dist/utils/project-detector.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -2
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Coordinates all generators to produce a complete project.
|
|
5
5
|
* Also provides `adoptProject()` for adding .nexus/ to existing projects.
|
|
6
6
|
*/
|
|
7
|
+
import type { AdoptionContext } from '../prompts/adoption.js';
|
|
7
8
|
import type { NexusConfig } from '../types/config.js';
|
|
8
9
|
import type { ProjectInfo } from '../utils/project-detector.js';
|
|
9
10
|
/**
|
|
@@ -20,7 +21,7 @@ export declare function generateProject(config: NexusConfig): Promise<void>;
|
|
|
20
21
|
*
|
|
21
22
|
* It does NOT scaffold source code, configs, tests, or landing pages.
|
|
22
23
|
*/
|
|
23
|
-
export declare function adoptProject(targetDir: string, projectInfo: ProjectInfo): Promise<void>;
|
|
24
|
+
export declare function adoptProject(targetDir: string, projectInfo: ProjectInfo, adoptionContext: AdoptionContext): Promise<void>;
|
|
24
25
|
/** Reconcile mode: upgrade replaces scaffolding; repair only fixes broken files */
|
|
25
26
|
export type ReconcileMode = 'upgrade' | 'repair';
|
|
26
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAgBhE;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoExE;AAMD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmCf;AA0BD,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAmBjD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBtE;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CAgF1B;AAED,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wFAAwF;IACxF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC,CAE1B"}
|
package/dist/generators/index.js
CHANGED
|
@@ -7,12 +7,14 @@
|
|
|
7
7
|
import path from 'node:path';
|
|
8
8
|
import { execa } from 'execa';
|
|
9
9
|
import ora from 'ora';
|
|
10
|
+
import { DEFAULT_PERSONA } from '../types/config.js';
|
|
10
11
|
import { logger, writeGeneratorResult, readFile, fileExists, writeFile, ensureDirectory, getInstallCommand, gitInit, toDisplayName } from '../utils/index.js';
|
|
11
12
|
import { generateAiConfig } from './ai-config.js';
|
|
12
13
|
import { generateCiCd } from './ci-cd.js';
|
|
13
14
|
import { generateConfigs } from './config.js';
|
|
14
15
|
import { generateDocs } from './docs.js';
|
|
15
16
|
import { generateLandingPage } from './landing-page.js';
|
|
17
|
+
import { generateSpringBootFiles } from './spring-boot.js';
|
|
16
18
|
import { generateDirectories, generatePackageJson, generateGitignore, generateReadme, } from './structure.js';
|
|
17
19
|
import { generateTests } from './tests.js';
|
|
18
20
|
/**
|
|
@@ -28,15 +30,24 @@ export async function generateProject(config) {
|
|
|
28
30
|
generatePackageJson(config),
|
|
29
31
|
generateGitignore(),
|
|
30
32
|
generateReadme(config),
|
|
31
|
-
...generateDocs(config),
|
|
33
|
+
...generateDocs(config, config.localOnly ?? false),
|
|
32
34
|
...generateConfigs(config),
|
|
33
35
|
...generateTests(config),
|
|
34
36
|
...generateCiCd(config),
|
|
35
37
|
...generateLandingPage(config),
|
|
36
38
|
...generateAiConfig(config),
|
|
37
39
|
];
|
|
40
|
+
// Add Spring Boot files if backend is Spring Boot
|
|
41
|
+
if (config.backendFramework === 'spring-boot') {
|
|
42
|
+
files.push(...generateSpringBootFiles(config));
|
|
43
|
+
}
|
|
38
44
|
// Write everything to disk
|
|
39
45
|
await writeGeneratorResult(projectRoot, files, directories);
|
|
46
|
+
// If local-only mode, add .nexus/ to .gitignore
|
|
47
|
+
if (config.localOnly) {
|
|
48
|
+
await appendToGitignore(projectRoot);
|
|
49
|
+
spinner.text = 'NEXUS configured as local-only (not tracked by git)';
|
|
50
|
+
}
|
|
40
51
|
spinner.succeed('Project structure generated.');
|
|
41
52
|
// Install dependencies
|
|
42
53
|
if (config.installDeps) {
|
|
@@ -83,11 +94,11 @@ export async function generateProject(config) {
|
|
|
83
94
|
*
|
|
84
95
|
* It does NOT scaffold source code, configs, tests, or landing pages.
|
|
85
96
|
*/
|
|
86
|
-
export async function adoptProject(targetDir, projectInfo) {
|
|
97
|
+
export async function adoptProject(targetDir, projectInfo, adoptionContext) {
|
|
87
98
|
const spinner = ora('Generating NEXUS documentation & AI config...').start();
|
|
88
99
|
try {
|
|
89
|
-
// Build a minimal NexusConfig from detected project info
|
|
90
|
-
const config = buildAdoptConfig(targetDir, projectInfo);
|
|
100
|
+
// Build a minimal NexusConfig from detected project info + user interview
|
|
101
|
+
const config = buildAdoptConfig(targetDir, projectInfo, adoptionContext);
|
|
91
102
|
// Directories to create
|
|
92
103
|
const directories = [
|
|
93
104
|
{ path: '.nexus' },
|
|
@@ -96,10 +107,16 @@ export async function adoptProject(targetDir, projectInfo) {
|
|
|
96
107
|
{ path: '.github' },
|
|
97
108
|
];
|
|
98
109
|
// Files to generate — docs + AI config only
|
|
110
|
+
// Pass adoption context to docs generator for pre-filling
|
|
99
111
|
const files = [
|
|
100
|
-
...generateDocs(config),
|
|
112
|
+
...generateDocs(config, adoptionContext.localOnly, adoptionContext),
|
|
101
113
|
...generateAiConfig(config),
|
|
102
114
|
];
|
|
115
|
+
// If local-only mode, add .nexus/ to .gitignore
|
|
116
|
+
if (adoptionContext.localOnly) {
|
|
117
|
+
await appendToGitignore(targetDir);
|
|
118
|
+
spinner.text = 'NEXUS configured as local-only (not tracked by git)';
|
|
119
|
+
}
|
|
103
120
|
// Write to disk
|
|
104
121
|
await writeGeneratorResult(targetDir, files, directories);
|
|
105
122
|
spinner.succeed('NEXUS documentation & AI config generated.');
|
|
@@ -253,12 +270,12 @@ export async function repairProject(targetDir, config) {
|
|
|
253
270
|
return reconcileNexusFiles(targetDir, config, 'repair');
|
|
254
271
|
}
|
|
255
272
|
/**
|
|
256
|
-
* Build a NexusConfig from detected ProjectInfo.
|
|
273
|
+
* Build a NexusConfig from detected ProjectInfo + user interview.
|
|
257
274
|
*
|
|
258
275
|
* Maps detected values to the closest NexusConfig equivalents,
|
|
259
276
|
* using sensible defaults for anything not detected.
|
|
260
277
|
*/
|
|
261
|
-
function buildAdoptConfig(targetDir, info) {
|
|
278
|
+
function buildAdoptConfig(targetDir, info, _adoptionContext) {
|
|
262
279
|
const slug = info.name ?? path.basename(targetDir);
|
|
263
280
|
return {
|
|
264
281
|
projectName: slug,
|
|
@@ -273,6 +290,7 @@ function buildAdoptConfig(targetDir, info) {
|
|
|
273
290
|
packageManager: mapPackageManager(info.packageManager),
|
|
274
291
|
git: true,
|
|
275
292
|
installDeps: false,
|
|
293
|
+
persona: DEFAULT_PERSONA,
|
|
276
294
|
};
|
|
277
295
|
}
|
|
278
296
|
function mapFramework(detected) {
|
|
@@ -296,4 +314,28 @@ function mapPackageManager(detected) {
|
|
|
296
314
|
return 'pnpm';
|
|
297
315
|
return 'npm';
|
|
298
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Append `.nexus/` to .gitignore (for local-only mode).
|
|
319
|
+
*
|
|
320
|
+
* If .gitignore doesn't exist, create it. If it exists, append only if not already present.
|
|
321
|
+
*/
|
|
322
|
+
async function appendToGitignore(targetDir) {
|
|
323
|
+
const gitignorePath = path.join(targetDir, '.gitignore');
|
|
324
|
+
const entry = '\n# NEXUS (local-only mode)\n.nexus/\n';
|
|
325
|
+
if (await fileExists(gitignorePath)) {
|
|
326
|
+
const content = await readFile(gitignorePath);
|
|
327
|
+
if (!content) {
|
|
328
|
+
await writeFile(gitignorePath, entry.trim() + '\n');
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
if (content.includes('.nexus/')) {
|
|
332
|
+
// Already gitignored
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
await writeFile(gitignorePath, content + entry);
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
await writeFile(gitignorePath, entry.trim() + '\n');
|
|
339
|
+
}
|
|
340
|
+
}
|
|
299
341
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG9J,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAmB;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/D,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,WAAW,GAAyB,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAoB;YAC7B,mBAAmB,CAAC,MAAM,CAAC;YAC3B,iBAAiB,EAAE;YACnB,cAAc,CAAC,MAAM,CAAC;YACtB,GAAG,YAAY,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS CLI - Spring Boot Project Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates pom.xml, application.properties, and basic Spring Boot structure.
|
|
5
|
+
*/
|
|
6
|
+
import type { NexusConfig } from '../types/config.js';
|
|
7
|
+
import type { GeneratedFile } from '../types/templates.js';
|
|
8
|
+
/**
|
|
9
|
+
* Generate Spring Boot project files (Maven-based)
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateSpringBootFiles(config: NexusConfig): GeneratedFile[];
|
|
12
|
+
//# sourceMappingURL=spring-boot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spring-boot.d.ts","sourceRoot":"","sources":["../../src/generators/spring-boot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE,CAmB5E"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS CLI - Spring Boot Project Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates pom.xml, application.properties, and basic Spring Boot structure.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate Spring Boot project files (Maven-based)
|
|
8
|
+
*/
|
|
9
|
+
export function generateSpringBootFiles(config) {
|
|
10
|
+
const files = [];
|
|
11
|
+
// Generate pom.xml (Maven build file)
|
|
12
|
+
files.push(generatePomXml(config));
|
|
13
|
+
// Generate application.properties
|
|
14
|
+
files.push(generateApplicationProperties(config));
|
|
15
|
+
// Generate main Application class
|
|
16
|
+
files.push(generateApplicationClass(config));
|
|
17
|
+
// Generate a sample controller
|
|
18
|
+
files.push(generateSampleController(config));
|
|
19
|
+
// Generate application test
|
|
20
|
+
files.push(generateApplicationTest(config));
|
|
21
|
+
return files;
|
|
22
|
+
}
|
|
23
|
+
function generatePomXml(config) {
|
|
24
|
+
const groupId = 'com.example';
|
|
25
|
+
const artifactId = config.projectName;
|
|
26
|
+
return {
|
|
27
|
+
path: 'pom.xml',
|
|
28
|
+
content: `<?xml version="1.0" encoding="UTF-8"?>
|
|
29
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
30
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
31
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
|
|
32
|
+
https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
33
|
+
<modelVersion>4.0.0</modelVersion>
|
|
34
|
+
|
|
35
|
+
<parent>
|
|
36
|
+
<groupId>org.springframework.boot</groupId>
|
|
37
|
+
<artifactId>spring-boot-starter-parent</artifactId>
|
|
38
|
+
<version>3.2.0</version>
|
|
39
|
+
<relativePath/>
|
|
40
|
+
</parent>
|
|
41
|
+
|
|
42
|
+
<groupId>${groupId}</groupId>
|
|
43
|
+
<artifactId>${artifactId}</artifactId>
|
|
44
|
+
<version>0.1.0</version>
|
|
45
|
+
<name>${config.displayName}</name>
|
|
46
|
+
<description>${config.displayName} - Spring Boot API</description>
|
|
47
|
+
|
|
48
|
+
<properties>
|
|
49
|
+
<java.version>21</java.version>
|
|
50
|
+
</properties>
|
|
51
|
+
|
|
52
|
+
<dependencies>
|
|
53
|
+
<!-- Spring Boot Web Starter -->
|
|
54
|
+
<dependency>
|
|
55
|
+
<groupId>org.springframework.boot</groupId>
|
|
56
|
+
<artifactId>spring-boot-starter-web</artifactId>
|
|
57
|
+
</dependency>
|
|
58
|
+
|
|
59
|
+
<!-- Spring Boot DevTools (optional, for hot reload) -->
|
|
60
|
+
<dependency>
|
|
61
|
+
<groupId>org.springframework.boot</groupId>
|
|
62
|
+
<artifactId>spring-boot-devtools</artifactId>
|
|
63
|
+
<scope>runtime</scope>
|
|
64
|
+
<optional>true</optional>
|
|
65
|
+
</dependency>
|
|
66
|
+
|
|
67
|
+
<!-- Spring Boot Actuator (health checks, metrics) -->
|
|
68
|
+
<dependency>
|
|
69
|
+
<groupId>org.springframework.boot</groupId>
|
|
70
|
+
<artifactId>spring-boot-starter-actuator</artifactId>
|
|
71
|
+
</dependency>
|
|
72
|
+
|
|
73
|
+
<!-- Lombok (optional, reduces boilerplate) -->
|
|
74
|
+
<dependency>
|
|
75
|
+
<groupId>org.projectlombok</groupId>
|
|
76
|
+
<artifactId>lombok</artifactId>
|
|
77
|
+
<optional>true</optional>
|
|
78
|
+
</dependency>
|
|
79
|
+
|
|
80
|
+
<!-- Spring Boot Test -->
|
|
81
|
+
<dependency>
|
|
82
|
+
<groupId>org.springframework.boot</groupId>
|
|
83
|
+
<artifactId>spring-boot-starter-test</artifactId>
|
|
84
|
+
<scope>test</scope>
|
|
85
|
+
</dependency>
|
|
86
|
+
</dependencies>
|
|
87
|
+
|
|
88
|
+
<build>
|
|
89
|
+
<plugins>
|
|
90
|
+
<plugin>
|
|
91
|
+
<groupId>org.springframework.boot</groupId>
|
|
92
|
+
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
93
|
+
</plugin>
|
|
94
|
+
</plugins>
|
|
95
|
+
</build>
|
|
96
|
+
</project>
|
|
97
|
+
`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function generateApplicationProperties(config) {
|
|
101
|
+
return {
|
|
102
|
+
path: 'src/main/resources/application.properties',
|
|
103
|
+
content: `# ${config.displayName} Configuration
|
|
104
|
+
|
|
105
|
+
# Server Configuration
|
|
106
|
+
server.port=8080
|
|
107
|
+
|
|
108
|
+
# Application Name
|
|
109
|
+
spring.application.name=${config.projectName}
|
|
110
|
+
|
|
111
|
+
# Actuator Configuration
|
|
112
|
+
management.endpoints.web.exposure.include=health,info,metrics
|
|
113
|
+
|
|
114
|
+
# Logging Configuration
|
|
115
|
+
logging.level.root=INFO
|
|
116
|
+
logging.level.com.example=DEBUG
|
|
117
|
+
|
|
118
|
+
# TODO: Add your custom configuration here
|
|
119
|
+
`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function generateApplicationClass(config) {
|
|
123
|
+
const className = toPascalCase(config.projectName) + 'Application';
|
|
124
|
+
const packageName = `com.example.${config.projectName.replace(/-/g, '')}`;
|
|
125
|
+
return {
|
|
126
|
+
path: `src/main/java/${packageName.replace(/\./g, '/')}/${className}.java`,
|
|
127
|
+
content: `package ${packageName};
|
|
128
|
+
|
|
129
|
+
import org.springframework.boot.SpringApplication;
|
|
130
|
+
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* ${config.displayName} - Main Application Class
|
|
134
|
+
*
|
|
135
|
+
* This is the entry point for your Spring Boot application.
|
|
136
|
+
*/
|
|
137
|
+
@SpringBootApplication
|
|
138
|
+
public class ${className} {
|
|
139
|
+
|
|
140
|
+
public static void main(String[] args) {
|
|
141
|
+
SpringApplication.run(${className}.class, args);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
`,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function generateSampleController(config) {
|
|
148
|
+
const packageName = `com.example.${config.projectName.replace(/-/g, '')}`;
|
|
149
|
+
return {
|
|
150
|
+
path: `src/main/java/${packageName.replace(/\./g, '/')}/controller/HelloController.java`,
|
|
151
|
+
content: `package ${packageName}.controller;
|
|
152
|
+
|
|
153
|
+
import org.springframework.web.bind.annotation.GetMapping;
|
|
154
|
+
import org.springframework.web.bind.annotation.RequestMapping;
|
|
155
|
+
import org.springframework.web.bind.annotation.RestController;
|
|
156
|
+
|
|
157
|
+
import java.util.Map;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Sample REST controller demonstrating basic endpoint structure.
|
|
161
|
+
*
|
|
162
|
+
* Replace this with your actual API endpoints.
|
|
163
|
+
*/
|
|
164
|
+
@RestController
|
|
165
|
+
@RequestMapping("/api")
|
|
166
|
+
public class HelloController {
|
|
167
|
+
|
|
168
|
+
@GetMapping("/hello")
|
|
169
|
+
public Map<String, String> hello() {
|
|
170
|
+
return Map.of(
|
|
171
|
+
"message", "Hello from ${config.displayName}!",
|
|
172
|
+
"status", "ok"
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
@GetMapping("/health")
|
|
177
|
+
public Map<String, String> health() {
|
|
178
|
+
return Map.of(
|
|
179
|
+
"status", "UP",
|
|
180
|
+
"service", "${config.projectName}"
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function generateApplicationTest(config) {
|
|
188
|
+
const className = toPascalCase(config.projectName) + 'Application';
|
|
189
|
+
const packageName = `com.example.${config.projectName.replace(/-/g, '')}`;
|
|
190
|
+
return {
|
|
191
|
+
path: `src/test/java/${packageName.replace(/\./g, '/')}/${className}Tests.java`,
|
|
192
|
+
content: `package ${packageName};
|
|
193
|
+
|
|
194
|
+
import org.junit.jupiter.api.Test;
|
|
195
|
+
import org.springframework.boot.test.context.SpringBootTest;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Integration tests for ${config.displayName}
|
|
199
|
+
*/
|
|
200
|
+
@SpringBootTest
|
|
201
|
+
class ${className}Tests {
|
|
202
|
+
|
|
203
|
+
@Test
|
|
204
|
+
void contextLoads() {
|
|
205
|
+
// Verifies that Spring context loads successfully
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
`,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Convert kebab-case to PascalCase
|
|
213
|
+
*/
|
|
214
|
+
function toPascalCase(str) {
|
|
215
|
+
return str
|
|
216
|
+
.split('-')
|
|
217
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
218
|
+
.join('');
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=spring-boot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spring-boot.js","sourceRoot":"","sources":["../../src/generators/spring-boot.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import type { GeneratedFile, GeneratedDirectory } from '../types/templates.js';
|
|
|
11
11
|
export declare function generateDirectories(config: NexusConfig): GeneratedDirectory[];
|
|
12
12
|
/**
|
|
13
13
|
* Generate the project's package.json content.
|
|
14
|
+
* For Spring Boot projects, returns empty content (they use pom.xml/build.gradle).
|
|
14
15
|
*/
|
|
15
16
|
export declare function generatePackageJson(config: NexusConfig): GeneratedFile;
|
|
16
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAgG7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAsDtE;AAsMD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAqCjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CA0CjE"}
|
|
@@ -8,45 +8,66 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export function generateDirectories(config) {
|
|
10
10
|
const dirs = [
|
|
11
|
-
{ path: 'src' },
|
|
12
|
-
{ path: 'public' },
|
|
13
11
|
{ path: '.nexus' },
|
|
14
12
|
{ path: '.nexus/docs' },
|
|
15
13
|
{ path: '.nexus/ai' },
|
|
16
14
|
];
|
|
17
|
-
//
|
|
18
|
-
if (config.
|
|
15
|
+
// Spring Boot projects have a different structure
|
|
16
|
+
if (config.backendFramework === 'spring-boot') {
|
|
17
|
+
const packagePath = `com/example/${config.projectName.replace(/-/g, '')}`;
|
|
18
|
+
dirs.push({ path: 'src' }, { path: 'src/main' }, { path: 'src/main/java' }, { path: `src/main/java/${packagePath}` }, { path: `src/main/java/${packagePath}/controller` }, { path: 'src/main/resources' }, { path: 'src/test' }, { path: 'src/test/java' }, { path: `src/test/java/${packagePath}` });
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
// Node.js-based projects
|
|
22
|
+
dirs.push({ path: 'src' }, { path: 'public' });
|
|
23
|
+
}
|
|
24
|
+
// UI Library specific structure
|
|
25
|
+
if (config.projectType === 'ui-library') {
|
|
26
|
+
dirs.push({ path: 'src/components' }, { path: 'src/lib' }, { path: '.storybook' }, { path: 'stories' });
|
|
27
|
+
}
|
|
28
|
+
// Test directories (skip for Spring Boot as it has its own structure)
|
|
29
|
+
if (config.testFramework !== 'none' && config.backendFramework !== 'spring-boot') {
|
|
19
30
|
dirs.push({ path: 'tests' }, { path: 'tests/unit' }, { path: 'tests/integration' }, { path: 'tests/e2e' }, { path: 'tests/utils' });
|
|
20
31
|
}
|
|
21
32
|
// CI/CD
|
|
22
33
|
dirs.push({ path: '.github' }, { path: '.github/workflows' });
|
|
23
|
-
// Framework-specific
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
// Framework-specific (skip if Spring Boot or UI library)
|
|
35
|
+
if (config.backendFramework !== 'spring-boot' && config.projectType !== 'ui-library') {
|
|
36
|
+
switch (config.frontendFramework) {
|
|
37
|
+
case 'nextjs':
|
|
38
|
+
dirs.push({ path: 'src/app' }, { path: 'src/components' }, { path: 'src/lib' });
|
|
39
|
+
break;
|
|
40
|
+
case 'react-vite':
|
|
41
|
+
dirs.push({ path: 'src/components' }, { path: 'src/pages' }, { path: 'src/hooks' }, { path: 'src/lib' });
|
|
42
|
+
break;
|
|
43
|
+
case 'sveltekit':
|
|
44
|
+
dirs.push({ path: 'src/routes' }, { path: 'src/lib' }, { path: 'src/lib/components' }, { path: 'src/styles' });
|
|
45
|
+
break;
|
|
46
|
+
case 'nuxt':
|
|
47
|
+
dirs.push({ path: 'src/lib' }, { path: 'src/components' }, { path: 'pages' }, { path: 'assets' }, { path: 'assets/css' });
|
|
48
|
+
break;
|
|
49
|
+
case 'astro':
|
|
50
|
+
dirs.push({ path: 'src/pages' }, { path: 'src/layouts' }, { path: 'src/components' }, { path: 'src/styles' });
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
dirs.push({ path: 'src/lib' }, { path: 'src/components' });
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
43
56
|
}
|
|
44
57
|
return dirs;
|
|
45
58
|
}
|
|
46
59
|
/**
|
|
47
60
|
* Generate the project's package.json content.
|
|
61
|
+
* For Spring Boot projects, returns empty content (they use pom.xml/build.gradle).
|
|
48
62
|
*/
|
|
49
63
|
export function generatePackageJson(config) {
|
|
64
|
+
// Spring Boot projects don't use package.json - return empty
|
|
65
|
+
if (config.backendFramework === 'spring-boot') {
|
|
66
|
+
return {
|
|
67
|
+
path: 'package.json',
|
|
68
|
+
content: '',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
50
71
|
const scripts = getFrameworkScripts(config);
|
|
51
72
|
const { dependencies, devDependencies } = getFrameworkDependencies(config);
|
|
52
73
|
const pkg = {
|
|
@@ -58,6 +79,20 @@ export function generatePackageJson(config) {
|
|
|
58
79
|
dependencies,
|
|
59
80
|
devDependencies,
|
|
60
81
|
};
|
|
82
|
+
// UI Library specific fields
|
|
83
|
+
if (config.projectType === 'ui-library') {
|
|
84
|
+
pkg.main = './dist/index.js';
|
|
85
|
+
pkg.module = './dist/index.mjs';
|
|
86
|
+
pkg.types = './dist/index.d.ts';
|
|
87
|
+
pkg.exports = {
|
|
88
|
+
'.': {
|
|
89
|
+
import: './dist/index.mjs',
|
|
90
|
+
require: './dist/index.js',
|
|
91
|
+
types: './dist/index.d.ts',
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
pkg.files = ['dist'];
|
|
95
|
+
}
|
|
61
96
|
// Add test scripts & dependencies
|
|
62
97
|
if (config.testFramework === 'vitest') {
|
|
63
98
|
pkg.scripts.test = 'vitest run';
|
|
@@ -85,6 +120,16 @@ function getFrameworkScripts(config) {
|
|
|
85
120
|
format: 'prettier --write .',
|
|
86
121
|
'type-check': 'tsc --noEmit',
|
|
87
122
|
};
|
|
123
|
+
// UI Library scripts
|
|
124
|
+
if (config.projectType === 'ui-library') {
|
|
125
|
+
return {
|
|
126
|
+
dev: 'vite',
|
|
127
|
+
build: 'vite build && tsc --emitDeclarationOnly',
|
|
128
|
+
storybook: 'storybook dev -p 6006',
|
|
129
|
+
'build-storybook': 'storybook build',
|
|
130
|
+
...base,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
88
133
|
switch (config.frontendFramework) {
|
|
89
134
|
case 'nextjs':
|
|
90
135
|
return {
|
|
@@ -148,6 +193,27 @@ function getFrameworkDependencies(config) {
|
|
|
148
193
|
eslint: '^8.57.0',
|
|
149
194
|
prettier: '^3.4.0',
|
|
150
195
|
};
|
|
196
|
+
// UI Library dependencies
|
|
197
|
+
if (config.projectType === 'ui-library') {
|
|
198
|
+
return {
|
|
199
|
+
dependencies: {},
|
|
200
|
+
devDependencies: {
|
|
201
|
+
...baseDev,
|
|
202
|
+
react: '^19.0.0',
|
|
203
|
+
'react-dom': '^19.0.0',
|
|
204
|
+
'@types/react': '^19.0.0',
|
|
205
|
+
'@types/react-dom': '^19.0.0',
|
|
206
|
+
vite: '^6.0.0',
|
|
207
|
+
'@vitejs/plugin-react': '^4.3.0',
|
|
208
|
+
storybook: '^8.0.0',
|
|
209
|
+
'@storybook/react': '^8.0.0',
|
|
210
|
+
'@storybook/react-vite': '^8.0.0',
|
|
211
|
+
'@storybook/addon-essentials': '^8.0.0',
|
|
212
|
+
'@storybook/addon-interactions': '^8.0.0',
|
|
213
|
+
'@storybook/test': '^8.0.0',
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
151
217
|
switch (config.frontendFramework) {
|
|
152
218
|
case 'nextjs':
|
|
153
219
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,MAAM,IAAI,GAAyB;QACjC,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"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"}
|