atxp 1.0.5 → 1.0.6
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 +21 -4
- package/dist/create-project.d.ts +2 -1
- package/dist/create-project.d.ts.map +1 -1
- package/dist/create-project.js +53 -48
- package/dist/create-project.js.map +1 -1
- package/dist/create-project.test.js +33 -6
- package/dist/create-project.test.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +14 -4
- package/dist/help.js.map +1 -1
- package/dist/index.js +48 -3
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +57 -11
- package/dist/index.test.js.map +1 -1
- package/dist/run-demo.d.ts.map +1 -1
- package/dist/run-demo.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ npx atxp
|
|
|
21
21
|
# Run the interactive demo
|
|
22
22
|
npx atxp demo
|
|
23
23
|
|
|
24
|
-
# Create a new project
|
|
24
|
+
# Create a new project (requires app name)
|
|
25
25
|
npx atxp create my-app
|
|
26
26
|
```
|
|
27
27
|
|
|
@@ -36,7 +36,7 @@ Runs the interactive ATXP demo application.
|
|
|
36
36
|
**Options:**
|
|
37
37
|
- `--verbose, -v` - Show detailed logs
|
|
38
38
|
- `--refresh` - Force refresh demo from GitHub
|
|
39
|
-
- `--port, -p` - Specify port number (default:
|
|
39
|
+
- `--port, -p` - Specify port number (default: 8017)
|
|
40
40
|
- `--dir, -d` - Specify demo directory (default: ~/.cache/atxp/demo)
|
|
41
41
|
|
|
42
42
|
**Examples:**
|
|
@@ -49,13 +49,30 @@ npx atxp demo --port 3000 --dir ./my-demo --verbose
|
|
|
49
49
|
npx atxp demo --refresh
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
### `npx atxp create
|
|
52
|
+
### `npx atxp create <app-name> [options]`
|
|
53
53
|
Creates a new ATXP project with the specified name.
|
|
54
54
|
|
|
55
|
+
**Options:**
|
|
56
|
+
- `--framework, -f` - Specify framework template (default: express)
|
|
57
|
+
- `--git` - Force git initialization
|
|
58
|
+
- `--no-git` - Skip git initialization
|
|
59
|
+
|
|
55
60
|
**Examples:**
|
|
56
61
|
```bash
|
|
62
|
+
# Basic usage (auto-detects git)
|
|
57
63
|
npx atxp create my-app
|
|
58
|
-
|
|
64
|
+
|
|
65
|
+
# With specific framework
|
|
66
|
+
npx atxp create my-app --framework express
|
|
67
|
+
|
|
68
|
+
# Skip git initialization
|
|
69
|
+
npx atxp create my-app --no-git
|
|
70
|
+
|
|
71
|
+
# Force git initialization
|
|
72
|
+
npx atxp create my-app --git
|
|
73
|
+
|
|
74
|
+
# Alternative using npm create
|
|
75
|
+
npm create atxp my-app
|
|
59
76
|
```
|
|
60
77
|
|
|
61
78
|
### `npx atxp help`
|
package/dist/create-project.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AA+BlC,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFtH"}
|
package/dist/create-project.js
CHANGED
|
@@ -1,62 +1,70 @@
|
|
|
1
|
-
import inquirer from 'inquirer';
|
|
2
1
|
import fs from 'fs-extra';
|
|
3
2
|
import path from 'path';
|
|
4
3
|
import chalk from 'chalk';
|
|
5
4
|
import { spawn } from 'child_process';
|
|
5
|
+
// Utility function to check if git is available
|
|
6
|
+
async function isGitAvailable() {
|
|
7
|
+
try {
|
|
8
|
+
const { execSync } = await import('child_process');
|
|
9
|
+
execSync('git --version', { stdio: 'ignore' });
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
6
16
|
// Template repositories
|
|
7
17
|
const TEMPLATES = {
|
|
8
|
-
|
|
9
|
-
url: 'https://github.com/atxp-dev/atxp-express-
|
|
10
|
-
humanText: '
|
|
18
|
+
express: {
|
|
19
|
+
url: 'https://github.com/atxp-dev/atxp-express-starter.git',
|
|
20
|
+
humanText: 'Express (Express.js starter template)'
|
|
11
21
|
}
|
|
22
|
+
// Future frameworks can be added here
|
|
23
|
+
// vercel: {
|
|
24
|
+
// url: 'https://github.com/atxp-dev/atxp-vercel-starter.git',
|
|
25
|
+
// humanText: 'Vercel (Vercel.js starter template)'
|
|
26
|
+
// }
|
|
12
27
|
};
|
|
13
|
-
export async function createProject() {
|
|
28
|
+
export async function createProject(appName, framework, gitOption) {
|
|
14
29
|
try {
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
value: key
|
|
38
|
-
})),
|
|
39
|
-
default: 'agent'
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
type: 'confirm',
|
|
43
|
-
name: 'initGit',
|
|
44
|
-
message: 'Initialize git repository?',
|
|
45
|
-
default: true
|
|
30
|
+
// Validate app name
|
|
31
|
+
if (!appName.trim()) {
|
|
32
|
+
console.error(chalk.red('Project name is required'));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
if (!/^[a-zA-Z0-9-_]+$/.test(appName)) {
|
|
36
|
+
console.error(chalk.red('Project name can only contain letters, numbers, hyphens, and underscores'));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
// Determine git initialization preference
|
|
40
|
+
let initGit;
|
|
41
|
+
if (gitOption === 'git') {
|
|
42
|
+
initGit = true;
|
|
43
|
+
}
|
|
44
|
+
else if (gitOption === 'no-git') {
|
|
45
|
+
initGit = false;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// Smart default: use git if available
|
|
49
|
+
initGit = await isGitAvailable();
|
|
50
|
+
if (initGit) {
|
|
51
|
+
console.log(chalk.blue('Git detected - will initialize git repository (use --no-git to skip)'));
|
|
46
52
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
else {
|
|
54
|
+
console.log(chalk.yellow('Git not found - skipping git initialization (install git or use --git to force)'));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const projectPath = path.resolve(process.cwd(), appName);
|
|
50
58
|
// Check if directory already exists
|
|
51
59
|
if (await fs.pathExists(projectPath)) {
|
|
52
|
-
console.error(chalk.red(`Directory "${
|
|
60
|
+
console.error(chalk.red(`Directory "${appName}" already exists`));
|
|
53
61
|
process.exit(1);
|
|
54
62
|
}
|
|
55
63
|
console.log(chalk.blue(`Creating project at ${projectPath}`));
|
|
56
64
|
// Create project directory
|
|
57
65
|
await fs.ensureDir(projectPath);
|
|
58
66
|
// Clone template from GitHub
|
|
59
|
-
await cloneTemplate(
|
|
67
|
+
await cloneTemplate(framework, projectPath);
|
|
60
68
|
// Copy .env file from env.example if it exists
|
|
61
69
|
const envExamplePath = path.join(projectPath, 'env.example');
|
|
62
70
|
const envPath = path.join(projectPath, '.env');
|
|
@@ -71,7 +79,7 @@ export async function createProject() {
|
|
|
71
79
|
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
72
80
|
if (await fs.pathExists(packageJsonPath)) {
|
|
73
81
|
const packageJson = await fs.readJson(packageJsonPath);
|
|
74
|
-
packageJson.name =
|
|
82
|
+
packageJson.name = appName;
|
|
75
83
|
await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
|
|
76
84
|
}
|
|
77
85
|
// Remove .git directory from template (if it exists)
|
|
@@ -92,7 +100,7 @@ export async function createProject() {
|
|
|
92
100
|
}
|
|
93
101
|
console.log(chalk.green('\nProject created successfully!'));
|
|
94
102
|
console.log(chalk.blue('\nNext steps:'));
|
|
95
|
-
console.log(chalk.white(` cd ${
|
|
103
|
+
console.log(chalk.white(` cd ${appName}`));
|
|
96
104
|
console.log(chalk.white(' npm install'));
|
|
97
105
|
console.log(chalk.white(' npm start'));
|
|
98
106
|
console.log(chalk.yellow('\nRemember to configure your environment variables in the .env file!'));
|
|
@@ -102,11 +110,8 @@ export async function createProject() {
|
|
|
102
110
|
process.exit(1);
|
|
103
111
|
}
|
|
104
112
|
}
|
|
105
|
-
async function cloneTemplate(
|
|
106
|
-
const templateConfig = TEMPLATES[
|
|
107
|
-
if (!templateConfig) {
|
|
108
|
-
throw new Error(`Template "${template}" not found`);
|
|
109
|
-
}
|
|
113
|
+
async function cloneTemplate(framework, projectPath) {
|
|
114
|
+
const templateConfig = TEMPLATES[framework];
|
|
110
115
|
return new Promise((resolve, reject) => {
|
|
111
116
|
console.log(chalk.blue('Downloading template from GitHub...'));
|
|
112
117
|
const git = spawn('git', [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
describe('createProject', () => {
|
|
3
|
-
|
|
3
|
+
describe('project name validation', () => {
|
|
4
4
|
const validateProjectName = (input) => {
|
|
5
5
|
if (!input.trim())
|
|
6
6
|
return 'Project name is required';
|
|
@@ -9,11 +9,38 @@ describe('createProject', () => {
|
|
|
9
9
|
}
|
|
10
10
|
return true;
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
it('should accept valid project names', () => {
|
|
13
|
+
expect(validateProjectName('my-project')).toBe(true);
|
|
14
|
+
expect(validateProjectName('project_123')).toBe(true);
|
|
15
|
+
expect(validateProjectName('MyProject')).toBe(true);
|
|
16
|
+
expect(validateProjectName('project123')).toBe(true);
|
|
17
|
+
expect(validateProjectName('my-awesome_project-2024')).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it('should reject invalid project names', () => {
|
|
20
|
+
expect(validateProjectName('')).toBe('Project name is required');
|
|
21
|
+
expect(validateProjectName(' ')).toBe('Project name is required');
|
|
22
|
+
expect(validateProjectName('invalid name')).toBe('Project name can only contain letters, numbers, hyphens, and underscores');
|
|
23
|
+
expect(validateProjectName('invalid@name')).toBe('Project name can only contain letters, numbers, hyphens, and underscores');
|
|
24
|
+
expect(validateProjectName('invalid.name')).toBe('Project name can only contain letters, numbers, hyphens, and underscores');
|
|
25
|
+
expect(validateProjectName('invalid/name')).toBe('Project name can only contain letters, numbers, hyphens, and underscores');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('Framework type', () => {
|
|
29
|
+
it('should have correct framework types', () => {
|
|
30
|
+
const validFramework = 'express';
|
|
31
|
+
expect(validFramework).toBe('express');
|
|
32
|
+
// Test that the type system prevents invalid frameworks
|
|
33
|
+
// This is compile-time validation, but we can test the concept
|
|
34
|
+
const frameworks = ['express'];
|
|
35
|
+
expect(frameworks).toContain('express');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('git options', () => {
|
|
39
|
+
it('should recognize valid git options', () => {
|
|
40
|
+
const validGitOptions = ['git', 'no-git'];
|
|
41
|
+
expect(validGitOptions).toContain('git');
|
|
42
|
+
expect(validGitOptions).toContain('no-git');
|
|
43
|
+
});
|
|
17
44
|
});
|
|
18
45
|
});
|
|
19
46
|
//# sourceMappingURL=create-project.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.test.js","sourceRoot":"","sources":["../src/create-project.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"create-project.test.js","sourceRoot":"","sources":["../src/create-project.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG9C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBAAE,OAAO,0BAA0B,CAAC;YACrD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO,0EAA0E,CAAC;YACpF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACjE,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACpE,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAC7H,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAC7H,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAC7H,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAC/H,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,cAAc,GAAc,SAAS,CAAC;YAC5C,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEvC,wDAAwD;YACxD,+DAA+D;YAC/D,MAAM,UAAU,GAAG,CAAC,SAAS,CAAU,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAU,CAAC;YAEnD,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,IAAI,CAgD/B"}
|
package/dist/help.js
CHANGED
|
@@ -5,11 +5,13 @@ export function showHelp() {
|
|
|
5
5
|
console.log();
|
|
6
6
|
console.log(chalk.bold('Usage:'));
|
|
7
7
|
console.log(' npx atxp <command> [options]');
|
|
8
|
+
console.log(' npx atxp create <app-name> [options]');
|
|
9
|
+
console.log(' npm create atxp <app-name> [options]');
|
|
8
10
|
console.log();
|
|
9
11
|
console.log(chalk.bold('Commands:'));
|
|
10
|
-
console.log(' ' + chalk.cyan('demo') + '
|
|
11
|
-
console.log(' ' + chalk.cyan('create') + '
|
|
12
|
-
console.log(' ' + chalk.cyan('help') + '
|
|
12
|
+
console.log(' ' + chalk.cyan('demo') + ' ' + 'Run the ATXP demo application');
|
|
13
|
+
console.log(' ' + chalk.cyan('create') + ' ' + chalk.yellow('<app-name>') + ' ' + 'Create a new ATXP project');
|
|
14
|
+
console.log(' ' + chalk.cyan('help') + ' ' + 'Show this help message');
|
|
13
15
|
console.log();
|
|
14
16
|
console.log(chalk.bold('Demo Options:'));
|
|
15
17
|
console.log(' ' + chalk.yellow('--verbose, -v') + ' ' + 'Show detailed logs');
|
|
@@ -18,6 +20,10 @@ export function showHelp() {
|
|
|
18
20
|
console.log(' ' + chalk.yellow('--backend-port, --bp') + ' ' + 'Specify backend port (default: 8017)');
|
|
19
21
|
console.log(' ' + chalk.yellow('--dir, -d') + ' ' + 'Specify demo directory (default: ~/.cache/atxp/demo)');
|
|
20
22
|
console.log();
|
|
23
|
+
console.log(chalk.bold('Create Options:'));
|
|
24
|
+
console.log(' ' + chalk.yellow('--framework, -f') + ' ' + 'Specify framework template (default: express)');
|
|
25
|
+
console.log(' ' + chalk.yellow('--git') + ' ' + 'Force git initialization');
|
|
26
|
+
console.log(' ' + chalk.yellow('--no-git') + ' ' + 'Skip git initialization');
|
|
21
27
|
console.log(chalk.bold('Examples:'));
|
|
22
28
|
console.log(' npx atxp demo # Run the demo with defaults (frontend: 8016, backend: 8017)');
|
|
23
29
|
console.log(' npx atxp demo --verbose # Run demo with detailed logs');
|
|
@@ -26,7 +32,11 @@ export function showHelp() {
|
|
|
26
32
|
console.log(' npx atxp demo --dir ./my-demo # Use custom demo directory');
|
|
27
33
|
console.log(' npx atxp demo --frontend-port 4000 --backend-port 4001 # Custom ports');
|
|
28
34
|
console.log(' npx atxp demo --dir ./my-demo --frontend-port 4000 # Custom directory and port');
|
|
29
|
-
console.log(' npx atxp create
|
|
35
|
+
console.log(' npx atxp create my-app # Create new project (auto-detect git)');
|
|
36
|
+
console.log(' npx atxp create my-app --framework express # Create with Express framework');
|
|
37
|
+
console.log(' npx atxp create my-app --no-git # Create without git initialization');
|
|
38
|
+
console.log(' npx atxp create my-app --git # Force git initialization');
|
|
39
|
+
console.log(' npm create atxp my-app # Create project using npm create');
|
|
30
40
|
console.log();
|
|
31
41
|
console.log(chalk.bold('Learn more:'));
|
|
32
42
|
console.log(' Website: ' + chalk.underline('https://atxp.dev'));
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,14 @@ import { checkAllDependencies, showDependencyError } from './check-dependencies.
|
|
|
8
8
|
// Parse command line arguments
|
|
9
9
|
function parseArgs() {
|
|
10
10
|
const command = process.argv[2];
|
|
11
|
+
// Check for help flags early
|
|
12
|
+
if (process.argv.includes('--help') || process.argv.includes('-h')) {
|
|
13
|
+
return {
|
|
14
|
+
command: 'help',
|
|
15
|
+
demoOptions: { port: 8017, dir: '', verbose: false, refresh: false },
|
|
16
|
+
createOptions: { framework: undefined, appName: undefined, git: undefined }
|
|
17
|
+
};
|
|
18
|
+
}
|
|
11
19
|
// Parse demo options
|
|
12
20
|
const getArgValue = (flag, shortFlag) => {
|
|
13
21
|
const index = process.argv.findIndex(arg => arg === flag || arg === shortFlag);
|
|
@@ -28,12 +36,35 @@ function parseArgs() {
|
|
|
28
36
|
})();
|
|
29
37
|
const verbose = process.argv.includes('--verbose') || process.argv.includes('-v');
|
|
30
38
|
const refresh = process.argv.includes('--refresh');
|
|
39
|
+
// Parse create options
|
|
40
|
+
const framework = getArgValue('--framework', '-f');
|
|
41
|
+
// Parse git options
|
|
42
|
+
let git;
|
|
43
|
+
if (process.argv.includes('--git')) {
|
|
44
|
+
git = 'git';
|
|
45
|
+
}
|
|
46
|
+
else if (process.argv.includes('--no-git')) {
|
|
47
|
+
git = 'no-git';
|
|
48
|
+
}
|
|
49
|
+
// Handle app name for different invocation methods
|
|
50
|
+
let appName;
|
|
51
|
+
if (command === 'create') {
|
|
52
|
+
// npx atxp create <app-name>
|
|
53
|
+
appName = process.argv[3];
|
|
54
|
+
}
|
|
55
|
+
else if (process.env.npm_config_argv?.includes('create')) {
|
|
56
|
+
// npm create atxp <app-name>
|
|
57
|
+
// The app name is typically the last argument in this case
|
|
58
|
+
const args = process.argv.slice(2);
|
|
59
|
+
appName = args.find(arg => !arg.startsWith('-') && arg !== 'create');
|
|
60
|
+
}
|
|
31
61
|
return {
|
|
32
62
|
command,
|
|
33
|
-
demoOptions: { port, dir, verbose, refresh }
|
|
63
|
+
demoOptions: { port, dir, verbose, refresh },
|
|
64
|
+
createOptions: { framework, appName, git }
|
|
34
65
|
};
|
|
35
66
|
}
|
|
36
|
-
const { command, demoOptions } = parseArgs();
|
|
67
|
+
const { command, demoOptions, createOptions } = parseArgs();
|
|
37
68
|
// Detect if we're in create mode (npm create atxp or npx atxp create)
|
|
38
69
|
const isCreateMode = process.env.npm_config_argv?.includes('create') ||
|
|
39
70
|
process.argv.includes('--create') ||
|
|
@@ -47,7 +78,21 @@ async function main() {
|
|
|
47
78
|
showDependencyError('create');
|
|
48
79
|
process.exit(1);
|
|
49
80
|
}
|
|
50
|
-
|
|
81
|
+
// Validate required parameters
|
|
82
|
+
const appName = createOptions.appName;
|
|
83
|
+
if (!appName) {
|
|
84
|
+
console.error('Error: App name is required');
|
|
85
|
+
console.log('Usage: npx atxp create <app-name> [--framework express]');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
const framework = createOptions.framework || 'express';
|
|
89
|
+
// Validate framework
|
|
90
|
+
const validFrameworks = ['express'];
|
|
91
|
+
if (createOptions.framework && !validFrameworks.includes(createOptions.framework)) {
|
|
92
|
+
console.error(`Error: Unknown framework "${createOptions.framework}". Available frameworks: ${validFrameworks.join(', ')}`);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
createProject(appName, framework, createOptions.git);
|
|
51
96
|
}
|
|
52
97
|
else if (command === 'demo') {
|
|
53
98
|
console.log('Starting ATXP demo...');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.test.js
CHANGED
|
@@ -1,16 +1,62 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
describe('ATXP CLI', () => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
describe('create mode detection', () => {
|
|
4
|
+
it('should detect create mode from command', () => {
|
|
5
|
+
// Test the logic without importing the actual module
|
|
6
|
+
const testCreateMode = (npmConfigArgv, argv = []) => {
|
|
7
|
+
return npmConfigArgv?.includes('create') ||
|
|
8
|
+
argv.includes('--create') ||
|
|
9
|
+
argv[2] === 'create';
|
|
10
|
+
};
|
|
11
|
+
expect(testCreateMode('create')).toBe(true);
|
|
12
|
+
expect(testCreateMode(undefined, ['node', 'script', 'create'])).toBe(true);
|
|
13
|
+
expect(testCreateMode(undefined, ['node', 'script', '--create'])).toBe(true);
|
|
14
|
+
expect(testCreateMode()).toBe(false);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('argument parsing logic', () => {
|
|
18
|
+
it('should parse app name from create command', () => {
|
|
19
|
+
const parseAppName = (argv) => {
|
|
20
|
+
const command = argv[2];
|
|
21
|
+
if (command === 'create') {
|
|
22
|
+
return argv[3]; // npx atxp create <app-name>
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
};
|
|
26
|
+
expect(parseAppName(['node', 'script', 'create', 'my-app'])).toBe('my-app');
|
|
27
|
+
expect(parseAppName(['node', 'script', 'create'])).toBe(undefined);
|
|
28
|
+
expect(parseAppName(['node', 'script', 'demo'])).toBe(undefined);
|
|
29
|
+
});
|
|
30
|
+
it('should parse framework flag', () => {
|
|
31
|
+
const parseFramework = (argv) => {
|
|
32
|
+
const frameworkIndex = argv.findIndex(arg => arg === '--framework' || arg === '-f');
|
|
33
|
+
return frameworkIndex !== -1 ? argv[frameworkIndex + 1] : undefined;
|
|
34
|
+
};
|
|
35
|
+
expect(parseFramework(['node', 'script', 'create', 'my-app', '--framework', 'express'])).toBe('express');
|
|
36
|
+
expect(parseFramework(['node', 'script', 'create', 'my-app', '-f', 'express'])).toBe('express');
|
|
37
|
+
expect(parseFramework(['node', 'script', 'create', 'my-app'])).toBe(undefined);
|
|
38
|
+
});
|
|
39
|
+
it('should parse git flags', () => {
|
|
40
|
+
const parseGitOption = (argv) => {
|
|
41
|
+
if (argv.includes('--git'))
|
|
42
|
+
return 'git';
|
|
43
|
+
if (argv.includes('--no-git'))
|
|
44
|
+
return 'no-git';
|
|
45
|
+
return undefined;
|
|
46
|
+
};
|
|
47
|
+
expect(parseGitOption(['node', 'script', 'create', 'my-app', '--git'])).toBe('git');
|
|
48
|
+
expect(parseGitOption(['node', 'script', 'create', 'my-app', '--no-git'])).toBe('no-git');
|
|
49
|
+
expect(parseGitOption(['node', 'script', 'create', 'my-app'])).toBe(undefined);
|
|
50
|
+
});
|
|
51
|
+
it('should detect help flags', () => {
|
|
52
|
+
const hasHelpFlag = (argv) => {
|
|
53
|
+
return argv.includes('--help') || argv.includes('-h');
|
|
54
|
+
};
|
|
55
|
+
expect(hasHelpFlag(['node', 'script', 'create', '--help'])).toBe(true);
|
|
56
|
+
expect(hasHelpFlag(['node', 'script', 'create', 'my-app', '-h'])).toBe(true);
|
|
57
|
+
expect(hasHelpFlag(['node', 'script', '--help'])).toBe(true);
|
|
58
|
+
expect(hasHelpFlag(['node', 'script', 'create', 'my-app'])).toBe(false);
|
|
59
|
+
});
|
|
14
60
|
});
|
|
15
61
|
});
|
|
16
62
|
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/run-demo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-demo.d.ts","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-demo.d.ts","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BjE"}
|
package/dist/run-demo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-demo.js","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"run-demo.js","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"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"}
|