zerostart-cli 0.0.1 → 0.0.7
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 +237 -57
- package/VERIFICATION_GUIDE.md +103 -0
- package/out/cli.js +184 -49
- package/out/cli.js.map +1 -1
- package/out/managers/GitManager.js +39 -0
- package/out/managers/GitManager.js.map +1 -1
- package/out/managers/TemplateManager.js +136 -136
- package/out/services/GitHubServiceCLI.js +10 -0
- package/out/services/GitHubServiceCLI.js.map +1 -1
- package/package.json +54 -54
package/README.md
CHANGED
|
@@ -1,57 +1,237 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- **
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
# ZeroStart CLI 🚀
|
|
2
|
+
|
|
3
|
+
Create and deploy a complete project with **one command**.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/zerostart-cli)
|
|
6
|
+
[](https://www.npmjs.com/package/zerostart-cli)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📦 Installation
|
|
11
|
+
|
|
12
|
+
**⚠️ IMPORTANT: Use the `-g` flag to install globally!**
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g zerostart-cli
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
> **Why `-g`?** The `-g` flag installs ZeroStart globally on your system, making the `zerostart` command available from anywhere in your terminal. Without it, you'll only get `node_modules` and `package-lock.json` files, and the CLI won't work!
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 🚀 Quick Start
|
|
23
|
+
|
|
24
|
+
After installing globally, create a new project:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
zerostart my-awesome-project
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Or simply run:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
zerostart
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Then follow the interactive prompts!
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## ✨ Features
|
|
41
|
+
|
|
42
|
+
- 🎯 **Interactive CLI** - Guided prompts for project setup
|
|
43
|
+
- 🌐 **Multiple Languages** - Node.js, React, Python, Java, C++
|
|
44
|
+
- 📦 **Project Types** - Web App, CLI Tool, DSA Practice, ML Project
|
|
45
|
+
- 🔧 **Auto-scaffolding** - Complete project structure generation
|
|
46
|
+
- 📝 **Documentation** - Auto-generated README, roadmap, .gitignore
|
|
47
|
+
- 🔄 **Git Integration** - Automatic Git initialization and first commit
|
|
48
|
+
- 🐙 **GitHub Integration** - Create and push to GitHub repository
|
|
49
|
+
- 🔒 **Visibility Control** - Choose public or private repositories
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 📖 Usage
|
|
54
|
+
|
|
55
|
+
### Basic Usage
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Create a project with interactive prompts
|
|
59
|
+
zerostart
|
|
60
|
+
|
|
61
|
+
# Create a project with a specific name
|
|
62
|
+
zerostart my-project-name
|
|
63
|
+
|
|
64
|
+
# Check version
|
|
65
|
+
zerostart --version
|
|
66
|
+
|
|
67
|
+
# Get help
|
|
68
|
+
zerostart --help
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Example Workflow
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
$ zerostart my-web-app
|
|
75
|
+
|
|
76
|
+
ZeroStart: Project Starter AI
|
|
77
|
+
|
|
78
|
+
? Select Programming Language: › Node.js
|
|
79
|
+
? Select Project Type: › Web App
|
|
80
|
+
? Select Repository Visibility: › Private
|
|
81
|
+
? Create GitHub Repository? › Yes
|
|
82
|
+
? Enter GitHub Personal Access Token: ********
|
|
83
|
+
|
|
84
|
+
✔ Generating project structure...
|
|
85
|
+
✔ Initializing Git...
|
|
86
|
+
✔ Creating GitHub Repository...
|
|
87
|
+
✔ Pushing to GitHub...
|
|
88
|
+
✔ Project 'my-web-app' created successfully!
|
|
89
|
+
|
|
90
|
+
Path: C:\Users\YourName\my-web-app
|
|
91
|
+
To get started:
|
|
92
|
+
cd my-web-app
|
|
93
|
+
code .
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 🛠️ Requirements
|
|
99
|
+
|
|
100
|
+
- **Node.js** (v18 or higher)
|
|
101
|
+
- **Git** (must be installed and in PATH)
|
|
102
|
+
- **GitHub Personal Access Token** (optional, for GitHub integration)
|
|
103
|
+
|
|
104
|
+
### Getting a GitHub Token
|
|
105
|
+
|
|
106
|
+
1. Go to [GitHub Settings → Developer settings → Personal access tokens](https://github.com/settings/tokens)
|
|
107
|
+
2. Click "Generate new token (classic)"
|
|
108
|
+
3. Select scopes: `repo` (full control of private repositories)
|
|
109
|
+
4. Copy the token and use it when prompted by ZeroStart
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🏗️ What Gets Created
|
|
114
|
+
|
|
115
|
+
ZeroStart automatically generates:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
my-project/
|
|
119
|
+
├── src/
|
|
120
|
+
│ └── (language-specific files)
|
|
121
|
+
├── .gitignore
|
|
122
|
+
├── README.md
|
|
123
|
+
├── roadmap.md
|
|
124
|
+
└── (additional config files based on language/type)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Plus:
|
|
128
|
+
- ✅ Git repository initialized
|
|
129
|
+
- ✅ Initial commit made
|
|
130
|
+
- ✅ GitHub repository created (if requested)
|
|
131
|
+
- ✅ Code pushed to GitHub (if requested)
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 🔧 Development
|
|
136
|
+
|
|
137
|
+
Want to contribute or modify ZeroStart?
|
|
138
|
+
|
|
139
|
+
### Setup
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Clone the repository
|
|
143
|
+
git clone https://github.com/yourusername/zerostart-cli.git
|
|
144
|
+
cd zerostart-cli
|
|
145
|
+
|
|
146
|
+
# Install dependencies
|
|
147
|
+
npm install
|
|
148
|
+
|
|
149
|
+
# Build the project
|
|
150
|
+
npm run compile
|
|
151
|
+
|
|
152
|
+
# Test locally
|
|
153
|
+
node ./out/cli.js --help
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Project Structure
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
src/
|
|
160
|
+
├── cli.ts # CLI entry point
|
|
161
|
+
├── extension.ts # VS Code extension entry (legacy)
|
|
162
|
+
├── types.ts # TypeScript interfaces
|
|
163
|
+
├── managers/
|
|
164
|
+
│ ├── TemplateManager.ts # Project scaffolding
|
|
165
|
+
│ ├── GitManager.ts # Git operations
|
|
166
|
+
│ └── ProjectManager.ts # Main orchestration
|
|
167
|
+
└── services/
|
|
168
|
+
├── GitHubServiceCLI.ts # GitHub API (CLI)
|
|
169
|
+
└── GitHubService.ts # GitHub API (VS Code)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 📝 Publishing Updates
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Update version
|
|
178
|
+
npm version patch # or minor, or major
|
|
179
|
+
|
|
180
|
+
# Rebuild
|
|
181
|
+
npm run compile
|
|
182
|
+
|
|
183
|
+
# Publish to npm
|
|
184
|
+
npm publish
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 🐛 Troubleshooting
|
|
190
|
+
|
|
191
|
+
### "zerostart: command not found"
|
|
192
|
+
|
|
193
|
+
**Problem:** You installed without the `-g` flag.
|
|
194
|
+
|
|
195
|
+
**Solution:**
|
|
196
|
+
```bash
|
|
197
|
+
# Remove local installation
|
|
198
|
+
rm -rf node_modules package-lock.json
|
|
199
|
+
|
|
200
|
+
# Install globally
|
|
201
|
+
npm install -g zerostart-cli
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### "Git is not installed"
|
|
205
|
+
|
|
206
|
+
**Problem:** Git is not in your system PATH.
|
|
207
|
+
|
|
208
|
+
**Solution:** Install Git from [git-scm.com](https://git-scm.com/) and ensure it's in your PATH.
|
|
209
|
+
|
|
210
|
+
### "GitHub repository creation failed"
|
|
211
|
+
|
|
212
|
+
**Problem:** Invalid or insufficient GitHub token permissions.
|
|
213
|
+
|
|
214
|
+
**Solution:** Generate a new token with `repo` scope from GitHub settings.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 📄 License
|
|
219
|
+
|
|
220
|
+
MIT
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## 🤝 Contributing
|
|
225
|
+
|
|
226
|
+
Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 📧 Support
|
|
231
|
+
|
|
232
|
+
- 📦 npm: [zerostart-cli](https://www.npmjs.com/package/zerostart-cli)
|
|
233
|
+
- 🐙 GitHub: [Issues](https://github.com/yourusername/zerostart-cli/issues)
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
**Made with ❤️ by ZeroStart Team**
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# ZeroStart CLI - Verification Guide ✅
|
|
2
|
+
|
|
3
|
+
## ✅ Publication Status: **CONFIRMED**
|
|
4
|
+
|
|
5
|
+
Your CLI tool `zerostart-cli` is **successfully published** to npm!
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 📦 Published Package Details
|
|
10
|
+
|
|
11
|
+
- **Package Name:** `zerostart-cli`
|
|
12
|
+
- **Version:** `0.0.6`
|
|
13
|
+
- **Description:** Create and deploy a complete project with one command
|
|
14
|
+
- **Registry:** npm (public)
|
|
15
|
+
- **Package URL:** https://www.npmjs.com/package/zerostart-cli
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 🧪 Verification Tests
|
|
20
|
+
|
|
21
|
+
### Test 1: Check Package on npm Registry ✅
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm view zerostart-cli
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Expected Output:** Package information including version, description, and author
|
|
28
|
+
|
|
29
|
+
**Status:** ✅ PASSED
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
### Test 2: Local CLI Functionality ✅
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# From your project directory
|
|
37
|
+
node ./out/cli.js --version
|
|
38
|
+
node ./out/cli.js --help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Expected Output:**
|
|
42
|
+
- Version: `0.0.6`
|
|
43
|
+
- Help menu with usage instructions
|
|
44
|
+
|
|
45
|
+
**Status:** ✅ PASSED
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### Test 3: Install from npm (Fresh Installation)
|
|
50
|
+
|
|
51
|
+
To verify users can install your CLI globally:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Install globally from npm
|
|
55
|
+
npm install -g zerostart-cli --force
|
|
56
|
+
|
|
57
|
+
# Verify installation
|
|
58
|
+
zerostart --version
|
|
59
|
+
zerostart --help
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Expected Output:**
|
|
63
|
+
- Version: `0.0.6`
|
|
64
|
+
- Help menu showing available commands
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### Test 4: Create a Test Project
|
|
69
|
+
|
|
70
|
+
Create a test project to verify full functionality:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Create a new test directory
|
|
74
|
+
cd C:\Users\kusha\Downloads
|
|
75
|
+
mkdir zerostart-test
|
|
76
|
+
cd zerostart-test
|
|
77
|
+
|
|
78
|
+
# Run ZeroStart CLI
|
|
79
|
+
zerostart my-test-project
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Expected Behavior:**
|
|
83
|
+
1. Prompts for programming language
|
|
84
|
+
2. Prompts for project type
|
|
85
|
+
3. Prompts for repository visibility
|
|
86
|
+
4. Prompts for GitHub repository creation
|
|
87
|
+
5. Creates project structure
|
|
88
|
+
6. Initializes Git repository
|
|
89
|
+
7. (Optional) Creates GitHub repository and pushes
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 🎯 Next Steps
|
|
94
|
+
|
|
95
|
+
### 1. **Share Your CLI**
|
|
96
|
+
- Share the npm package link with others
|
|
97
|
+
- Add installation instructions to your README
|
|
98
|
+
- Promote on social media, GitHub, etc.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
**Last Verified:** 2026-02-13
|
|
103
|
+
**Status:** ✅ All Systems Operational
|
package/out/cli.js
CHANGED
|
@@ -48,25 +48,53 @@ const TemplateManager_1 = require("./managers/TemplateManager");
|
|
|
48
48
|
const GitManager_1 = require("./managers/GitManager");
|
|
49
49
|
const GitHubServiceCLI_1 = require("./services/GitHubServiceCLI");
|
|
50
50
|
const program = new commander_1.Command();
|
|
51
|
+
// Basic ASCII banner for maximum compatibility
|
|
52
|
+
function showBanner() {
|
|
53
|
+
console.log();
|
|
54
|
+
console.log(chalk_1.default.cyan('------------------------------------------------------------'));
|
|
55
|
+
console.log(chalk_1.default.bold.white(' ZeroStart CLI '));
|
|
56
|
+
console.log(chalk_1.default.gray(' Create and deploy projects in seconds '));
|
|
57
|
+
console.log(chalk_1.default.cyan('------------------------------------------------------------'));
|
|
58
|
+
}
|
|
59
|
+
// Show GitHub token help (ASCII only)
|
|
60
|
+
function showGitHubTokenHelp() {
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(chalk_1.default.yellow(' GitHub Access Token Required:'));
|
|
63
|
+
console.log(chalk_1.default.gray(' +----------------------------------------------------------+'));
|
|
64
|
+
console.log(chalk_1.default.gray(' | ') + chalk_1.default.white('To create a token, Ctrl+Click the link below: ') + chalk_1.default.gray(' |'));
|
|
65
|
+
console.log(chalk_1.default.gray(' | ') + chalk_1.default.cyan('https://github.com/settings/tokens/new ') + chalk_1.default.gray(' |'));
|
|
66
|
+
console.log(chalk_1.default.gray(' | |'));
|
|
67
|
+
console.log(chalk_1.default.gray(' | ') + chalk_1.default.white('1. Select scope: repo ') + chalk_1.default.gray(' |'));
|
|
68
|
+
console.log(chalk_1.default.gray(' | ') + chalk_1.default.white('2. Scroll down and click "Generate token" ') + chalk_1.default.gray(' |'));
|
|
69
|
+
console.log(chalk_1.default.gray(' +----------------------------------------------------------+'));
|
|
70
|
+
console.log();
|
|
71
|
+
}
|
|
51
72
|
program
|
|
52
|
-
.name('
|
|
73
|
+
.name('zerostart')
|
|
53
74
|
.description('Create and deploy a complete project with one command')
|
|
54
|
-
.version('0.0.
|
|
75
|
+
.version('0.0.6')
|
|
55
76
|
.argument('[projectName]', 'Name of the project')
|
|
56
77
|
.action(async (projectName) => {
|
|
57
78
|
try {
|
|
58
|
-
|
|
79
|
+
showBanner();
|
|
59
80
|
// 1. Get Project Name
|
|
60
|
-
|
|
61
|
-
|
|
81
|
+
let name = projectName;
|
|
82
|
+
if (!name) {
|
|
83
|
+
const nameAnswer = await inquirer_1.default.prompt([
|
|
62
84
|
{
|
|
63
85
|
type: 'input',
|
|
64
86
|
name: 'name',
|
|
65
|
-
message: '
|
|
66
|
-
validate: (input) =>
|
|
87
|
+
message: 'Project Name:',
|
|
88
|
+
validate: (input) => {
|
|
89
|
+
if (input.trim() === '')
|
|
90
|
+
return chalk_1.default.red('Project name is required!');
|
|
91
|
+
if (!/^[a-zA-Z0-9-_]+$/.test(input))
|
|
92
|
+
return chalk_1.default.red('Use only letters, numbers, hyphens, and underscores');
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
67
95
|
}
|
|
68
96
|
]);
|
|
69
|
-
|
|
97
|
+
name = nameAnswer.name;
|
|
70
98
|
}
|
|
71
99
|
// 2. Get Details
|
|
72
100
|
const answers = await inquirer_1.default.prompt([
|
|
@@ -92,85 +120,192 @@ program
|
|
|
92
120
|
{
|
|
93
121
|
type: 'confirm',
|
|
94
122
|
name: 'createRemote',
|
|
95
|
-
message: '
|
|
96
|
-
default:
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
type: 'password',
|
|
100
|
-
name: 'githubToken',
|
|
101
|
-
message: 'Enter GitHub Personal Access Token (leave empty to skip remote):',
|
|
102
|
-
when: (answers) => answers.createRemote,
|
|
103
|
-
mask: '*'
|
|
123
|
+
message: 'Push to GitHub?',
|
|
124
|
+
default: false
|
|
104
125
|
}
|
|
105
126
|
]);
|
|
127
|
+
let githubToken = null;
|
|
128
|
+
let authMethod = 'Personal Access Token';
|
|
129
|
+
const gitManager = new GitManager_1.GitManager(); // Instantiate early for checks
|
|
130
|
+
// Only ask for token if user wants GitHub integration
|
|
131
|
+
if (answers.createRemote) {
|
|
132
|
+
const ghInstalled = await gitManager.checkGhInstalled();
|
|
133
|
+
const ghAuth = await gitManager.checkGhAuth();
|
|
134
|
+
if (ghInstalled && ghAuth) {
|
|
135
|
+
const authAnswer = await inquirer_1.default.prompt([
|
|
136
|
+
{
|
|
137
|
+
type: 'list',
|
|
138
|
+
name: 'method',
|
|
139
|
+
message: 'How would you like to authenticate?',
|
|
140
|
+
choices: ['GitHub CLI (Recommended)', 'Personal Access Token']
|
|
141
|
+
}
|
|
142
|
+
]);
|
|
143
|
+
authMethod = authAnswer.method;
|
|
144
|
+
}
|
|
145
|
+
if (authMethod === 'Personal Access Token') {
|
|
146
|
+
showGitHubTokenHelp();
|
|
147
|
+
const tokenAnswer = await inquirer_1.default.prompt([
|
|
148
|
+
{
|
|
149
|
+
type: 'password',
|
|
150
|
+
name: 'githubToken',
|
|
151
|
+
message: 'Enter GitHub Token (or press Enter to skip):',
|
|
152
|
+
mask: '*'
|
|
153
|
+
}
|
|
154
|
+
]);
|
|
155
|
+
githubToken = tokenAnswer.githubToken?.trim() || null;
|
|
156
|
+
if (!githubToken) {
|
|
157
|
+
console.log(chalk_1.default.yellow('\n ⚠️ Skipping GitHub integration (no token provided)'));
|
|
158
|
+
console.log(chalk_1.default.gray(' 💡 You can manually push later with: ') + chalk_1.default.cyan('git remote add origin <url>'));
|
|
159
|
+
answers.createRemote = false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
106
163
|
const cwd = process.cwd();
|
|
107
|
-
const projectPath = path.join(cwd,
|
|
164
|
+
const projectPath = path.join(cwd, name);
|
|
108
165
|
if (fs.existsSync(projectPath)) {
|
|
109
|
-
console.
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(chalk_1.default.red(' ❌ Error: Directory "' + name + '" already exists!'));
|
|
168
|
+
console.log(chalk_1.default.gray(' 💡 Try a different name or remove the existing directory'));
|
|
169
|
+
console.log();
|
|
110
170
|
process.exit(1);
|
|
111
171
|
}
|
|
112
172
|
const config = {
|
|
113
|
-
name:
|
|
173
|
+
name: name,
|
|
114
174
|
language: answers.language,
|
|
115
175
|
type: answers.type,
|
|
116
176
|
isTheRepoPublic: answers.visibility === 'Public',
|
|
117
177
|
description: `A ${answers.type} project in ${answers.language}`,
|
|
118
178
|
path: projectPath
|
|
119
179
|
};
|
|
120
|
-
|
|
180
|
+
console.log();
|
|
181
|
+
const spinner = (0, ora_1.default)({
|
|
182
|
+
text: 'Initializing...',
|
|
183
|
+
color: 'cyan',
|
|
184
|
+
spinner: 'dots'
|
|
185
|
+
}).start();
|
|
121
186
|
try {
|
|
122
187
|
// Managers
|
|
123
188
|
const templateManager = new TemplateManager_1.TemplateManager();
|
|
124
|
-
|
|
125
|
-
const gitHubService =
|
|
189
|
+
// gitManager already instantiated
|
|
190
|
+
const gitHubService = githubToken ? new GitHubServiceCLI_1.GitHubServiceCLI(githubToken) : null;
|
|
126
191
|
// 0. Check Git
|
|
127
192
|
if (!await gitManager.checkGitInstalled()) {
|
|
128
|
-
spinner.fail('Git is not installed!');
|
|
193
|
+
spinner.fail(chalk_1.default.red('Git is not installed!'));
|
|
194
|
+
console.log(chalk_1.default.yellow('\n 💡 Install Git from: ') + chalk_1.default.cyan('https://git-scm.com/'));
|
|
195
|
+
console.log();
|
|
129
196
|
return;
|
|
130
197
|
}
|
|
131
198
|
// 1. Structure
|
|
132
|
-
spinner.text = 'Generating project structure...';
|
|
199
|
+
spinner.text = chalk_1.default.cyan('📁 Generating project structure...');
|
|
133
200
|
await templateManager.createProjectStructure(config);
|
|
134
|
-
|
|
135
|
-
|
|
201
|
+
spinner.succeed(chalk_1.default.green('✓ Project structure created'));
|
|
202
|
+
// 2. Git Init & Initial Commits
|
|
203
|
+
spinner.start(chalk_1.default.cyan('🔄 Initializing Git repository...'));
|
|
136
204
|
await gitManager.init(config.path);
|
|
137
|
-
await gitManager.commit(config.path, "Initial commit
|
|
205
|
+
await gitManager.commit(config.path, "🎉 Initial commit by ZeroStart");
|
|
206
|
+
// Update README and create second commit
|
|
207
|
+
try {
|
|
208
|
+
const readmePath = path.join(config.path, 'README.md');
|
|
209
|
+
if (fs.existsSync(readmePath)) {
|
|
210
|
+
fs.appendFileSync(readmePath, '\n\nGenerated by ZeroStart 🚀');
|
|
211
|
+
await gitManager.commit(config.path, "📚 Readme updated");
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
console.warn(`Failed to update README: ${error}`);
|
|
216
|
+
}
|
|
217
|
+
spinner.succeed(chalk_1.default.green('✓ Git repository initialized with initial commits'));
|
|
138
218
|
// 3. GitHub
|
|
139
|
-
if (
|
|
140
|
-
spinner.
|
|
141
|
-
|
|
219
|
+
if (answers.createRemote) {
|
|
220
|
+
spinner.start(chalk_1.default.cyan('🐙 Creating GitHub repository...'));
|
|
221
|
+
let repoUrl;
|
|
222
|
+
if (authMethod === 'GitHub CLI') {
|
|
223
|
+
try {
|
|
224
|
+
repoUrl = await gitManager.createRepoWithGh(config.path, config.name, config.isTheRepoPublic);
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
repoUrl = undefined;
|
|
228
|
+
spinner.fail(chalk_1.default.red(`GH CLI Error: ${error.message}`));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else if (gitHubService) {
|
|
232
|
+
repoUrl = await gitHubService.createRepo(config);
|
|
233
|
+
}
|
|
142
234
|
if (repoUrl) {
|
|
143
|
-
spinner.
|
|
144
|
-
|
|
235
|
+
spinner.succeed(chalk_1.default.green('✓ GitHub repository created'));
|
|
236
|
+
spinner.start(chalk_1.default.cyan('⬆️ Pushing to GitHub...'));
|
|
237
|
+
// If GH CLI used, remote is already set to 'origin'
|
|
238
|
+
if (authMethod !== 'GitHub CLI') {
|
|
239
|
+
await gitManager.addRemote(config.path, repoUrl);
|
|
240
|
+
}
|
|
145
241
|
await gitManager.push(config.path);
|
|
146
|
-
// Cleanup token if used in URL
|
|
147
|
-
if (repoUrl.includes('@github.com')) {
|
|
148
|
-
|
|
149
|
-
// However, better practice is to not save token in .git/config on disk if possible.
|
|
150
|
-
// But for now, we leave it or strip it. Stripping it breaks push if no credential manager.
|
|
151
|
-
// We'll leave it but warn? Or just strip for "origin".
|
|
152
|
-
// ProjectManager.ts stripped it. I'll strip it too.
|
|
153
|
-
const cleanUrl = repoUrl.replace(/\/\/[^@]+@/, '//'); // simple replace //token@ -> //
|
|
242
|
+
// Cleanup token if used in URL (only for non-CLI)
|
|
243
|
+
if (authMethod !== 'GitHub CLI' && repoUrl.includes('@github.com')) {
|
|
244
|
+
const cleanUrl = repoUrl.replace(/\/\/[^@]+@/, '//');
|
|
154
245
|
await gitManager.setRemoteUrl(config.path, cleanUrl);
|
|
155
246
|
}
|
|
247
|
+
spinner.succeed(chalk_1.default.green('✓ Pushed to GitHub'));
|
|
156
248
|
}
|
|
157
249
|
else {
|
|
158
|
-
|
|
250
|
+
// Only warn if we actually tried to create a repo (repoUrl is undefined but we entered the block)
|
|
251
|
+
if (!spinner.isSpinning) {
|
|
252
|
+
// It might have failed in GH CLI block with spinner.fail
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
spinner.warn(chalk_1.default.yellow('⚠️ GitHub repository creation failed'));
|
|
256
|
+
console.log(chalk_1.default.gray(' 💡 Check your token permissions and try again'));
|
|
257
|
+
}
|
|
159
258
|
}
|
|
160
259
|
}
|
|
161
|
-
|
|
162
|
-
console.log(
|
|
163
|
-
console.log(chalk_1.default.
|
|
164
|
-
console.log(
|
|
165
|
-
console.log(
|
|
260
|
+
// Success message
|
|
261
|
+
console.log();
|
|
262
|
+
console.log(chalk_1.default.bold.green(' ✨ Success! Your project is ready!'));
|
|
263
|
+
console.log();
|
|
264
|
+
console.log(chalk_1.default.gray(' 📍 Location: ') + chalk_1.default.cyan(config.path));
|
|
265
|
+
console.log();
|
|
266
|
+
console.log(chalk_1.default.bold(' 🚀 Get started:'));
|
|
267
|
+
console.log(chalk_1.default.gray(' ├─ ') + chalk_1.default.cyan(`cd ${name}`));
|
|
268
|
+
console.log(chalk_1.default.gray(' └─ ') + chalk_1.default.cyan('code .') + chalk_1.default.gray(' (or your favorite editor)'));
|
|
269
|
+
console.log();
|
|
270
|
+
if (!answers.createRemote || !githubToken && authMethod !== 'GitHub CLI') {
|
|
271
|
+
console.log(chalk_1.default.bold.yellow(' 💡 To push to GitHub later:'));
|
|
272
|
+
console.log(chalk_1.default.gray(' ├─ Create a repository on GitHub'));
|
|
273
|
+
console.log(chalk_1.default.gray(' ├─ ') + chalk_1.default.cyan('git remote add origin <your-repo-url>'));
|
|
274
|
+
console.log(chalk_1.default.gray(' └─ ') + chalk_1.default.cyan('git push -u origin main'));
|
|
275
|
+
console.log();
|
|
276
|
+
}
|
|
166
277
|
}
|
|
167
278
|
catch (error) {
|
|
168
|
-
spinner.fail(
|
|
279
|
+
spinner.fail(chalk_1.default.red('❌ Error: ' + error.message));
|
|
280
|
+
console.log();
|
|
281
|
+
console.log(chalk_1.default.gray(' 💡 Need help? Check the documentation or open an issue'));
|
|
282
|
+
console.log();
|
|
169
283
|
}
|
|
170
284
|
}
|
|
171
285
|
catch (error) {
|
|
172
|
-
console.error(error);
|
|
286
|
+
console.error(chalk_1.default.red('\n ❌ Unexpected error:'), error);
|
|
287
|
+
console.log();
|
|
173
288
|
}
|
|
174
289
|
});
|
|
290
|
+
// Helper functions for emojis
|
|
291
|
+
function getLanguageEmoji(lang) {
|
|
292
|
+
const emojis = {
|
|
293
|
+
'Node.js': '🟢',
|
|
294
|
+
'React': '⚛️',
|
|
295
|
+
'Python': '🐍',
|
|
296
|
+
'Java': '☕',
|
|
297
|
+
'C++': '⚡'
|
|
298
|
+
};
|
|
299
|
+
return emojis[lang] || '📝';
|
|
300
|
+
}
|
|
301
|
+
function getTypeEmoji(type) {
|
|
302
|
+
const emojis = {
|
|
303
|
+
'Web App': '🌐',
|
|
304
|
+
'CLI Tool': '⌨️',
|
|
305
|
+
'DSA Practice': '🧮',
|
|
306
|
+
'ML Project': '🤖'
|
|
307
|
+
};
|
|
308
|
+
return emojis[type] || '📦';
|
|
309
|
+
}
|
|
175
310
|
program.parse(process.argv);
|
|
176
311
|
//# sourceMappingURL=cli.js.map
|
package/out/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,wDAAgC;AAChC,2CAA6B;AAC7B,uCAAyB;AACzB,8CAAsB;AACtB,kDAA0B;AAC1B,mCAAsE;AACtE,gEAA6D;AAC7D,sDAAmD;AACnD,kEAA+D;AAE/D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,6 +91,45 @@ class GitManager {
|
|
|
91
91
|
console.warn(`Failed to set remote url: ${error.message}`);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
async checkGhInstalled() {
|
|
95
|
+
try {
|
|
96
|
+
await exec('gh --version');
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async checkGhAuth() {
|
|
104
|
+
try {
|
|
105
|
+
await exec('gh auth status');
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async createRepoWithGh(cwd, name, isPublic) {
|
|
113
|
+
try {
|
|
114
|
+
const visibility = isPublic ? '--public' : '--private';
|
|
115
|
+
// Create repo and push
|
|
116
|
+
// gh repo create <name> --<visibility> --source=. --remote=origin --push
|
|
117
|
+
await exec(`gh repo create "${name}" ${visibility} --source=. --remote=origin`, { cwd });
|
|
118
|
+
return `https://github.com/${(await this.getGhUser())}/${name}`;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
throw new Error(`Failed to create repo with gh: ${error.message}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async getGhUser() {
|
|
125
|
+
try {
|
|
126
|
+
const { stdout } = await exec('gh api user --jq .login');
|
|
127
|
+
return stdout.trim();
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return 'unknown';
|
|
131
|
+
}
|
|
132
|
+
}
|
|
94
133
|
}
|
|
95
134
|
exports.GitManager = GitManager;
|
|
96
135
|
//# sourceMappingURL=GitManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitManager.js","sourceRoot":"","sources":["../../src/managers/GitManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAoC;AACpC,2CAA6B;AAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAErC,MAAa,UAAU;IACZ,KAAK,CAAC,iBAAiB;QAC1B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAW;QACzB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,OAAe;QAC5C,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,kBAAkB,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,wBAAwB;YACxB,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,wFAAwF;YACxF,OAAO,CAAC,IAAI,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,GAAW;QAC3C,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,yBAAyB,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAW;QACzB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,GAAW;QAC9C,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,6BAA6B,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"GitManager.js","sourceRoot":"","sources":["../../src/managers/GitManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,45 +94,45 @@ class TemplateManager {
|
|
|
94
94
|
fs.mkdirSync(fullPath, { recursive: true });
|
|
95
95
|
}
|
|
96
96
|
createReadme(config) {
|
|
97
|
-
const content = `# ${config.name}
|
|
98
|
-
|
|
99
|
-
## Description
|
|
100
|
-
${config.description}
|
|
101
|
-
|
|
102
|
-
## Tech Stack
|
|
103
|
-
- Language: ${config.language}
|
|
104
|
-
- Type: ${config.type}
|
|
105
|
-
|
|
106
|
-
## Installation
|
|
107
|
-
\`\`\`bash
|
|
108
|
-
# Clone the repository
|
|
109
|
-
git clone <repo-url>
|
|
110
|
-
cd ${config.name}
|
|
111
|
-
|
|
112
|
-
# Install dependencies
|
|
113
|
-
npm install # or pip install -r requirements.txt / mvn install
|
|
114
|
-
\`\`\`
|
|
115
|
-
|
|
116
|
-
## Usage
|
|
117
|
-
\`\`\`bash
|
|
118
|
-
npm start # or python main.py / java -jar target/app.jar
|
|
119
|
-
\`\`\`
|
|
120
|
-
|
|
121
|
-
## Future Scope
|
|
122
|
-
- Add more features
|
|
123
|
-
- Improve UI/UX
|
|
124
|
-
- optimize performance
|
|
97
|
+
const content = `# ${config.name}
|
|
98
|
+
|
|
99
|
+
## Description
|
|
100
|
+
${config.description}
|
|
101
|
+
|
|
102
|
+
## Tech Stack
|
|
103
|
+
- Language: ${config.language}
|
|
104
|
+
- Type: ${config.type}
|
|
105
|
+
|
|
106
|
+
## Installation
|
|
107
|
+
\`\`\`bash
|
|
108
|
+
# Clone the repository
|
|
109
|
+
git clone <repo-url>
|
|
110
|
+
cd ${config.name}
|
|
111
|
+
|
|
112
|
+
# Install dependencies
|
|
113
|
+
npm install # or pip install -r requirements.txt / mvn install
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
## Usage
|
|
117
|
+
\`\`\`bash
|
|
118
|
+
npm start # or python main.py / java -jar target/app.jar
|
|
119
|
+
\`\`\`
|
|
120
|
+
|
|
121
|
+
## Future Scope
|
|
122
|
+
- Add more features
|
|
123
|
+
- Improve UI/UX
|
|
124
|
+
- optimize performance
|
|
125
125
|
`;
|
|
126
126
|
fs.writeFileSync(path.join(config.path, 'README.md'), content);
|
|
127
127
|
}
|
|
128
128
|
createRoadmap(config) {
|
|
129
|
-
const content = `# Roadmap for ${config.name}
|
|
130
|
-
|
|
131
|
-
- [ ] Initial Setup
|
|
132
|
-
- [ ] Core Features Implementation
|
|
133
|
-
- [ ] Testing & Debugging
|
|
134
|
-
- [ ] Documentation
|
|
135
|
-
- [ ] Deployment
|
|
129
|
+
const content = `# Roadmap for ${config.name}
|
|
130
|
+
|
|
131
|
+
- [ ] Initial Setup
|
|
132
|
+
- [ ] Core Features Implementation
|
|
133
|
+
- [ ] Testing & Debugging
|
|
134
|
+
- [ ] Documentation
|
|
135
|
+
- [ ] Deployment
|
|
136
136
|
`;
|
|
137
137
|
fs.writeFileSync(path.join(config.path, 'roadmap.md'), content);
|
|
138
138
|
}
|
|
@@ -179,35 +179,35 @@ npm start # or python main.py / java -jar target/app.jar
|
|
|
179
179
|
async createJavaStructure(config) {
|
|
180
180
|
const srcDir = path.join(config.path, 'src', 'main', 'java', 'com', 'example');
|
|
181
181
|
fs.mkdirSync(srcDir, { recursive: true });
|
|
182
|
-
const mainClass = `package com.example;
|
|
183
|
-
|
|
184
|
-
public class Main {
|
|
185
|
-
public static void main(String[] args) {
|
|
186
|
-
System.out.println("Hello, World!");
|
|
187
|
-
}
|
|
182
|
+
const mainClass = `package com.example;
|
|
183
|
+
|
|
184
|
+
public class Main {
|
|
185
|
+
public static void main(String[] args) {
|
|
186
|
+
System.out.println("Hello, World!");
|
|
187
|
+
}
|
|
188
188
|
}`;
|
|
189
189
|
fs.writeFileSync(path.join(srcDir, 'Main.java'), mainClass);
|
|
190
|
-
const pomXml = `<project>
|
|
191
|
-
<modelVersion>4.0.0</modelVersion>
|
|
192
|
-
<groupId>com.example</groupId>
|
|
193
|
-
<artifactId>${config.name}</artifactId>
|
|
194
|
-
<version>1.0-SNAPSHOT</version>
|
|
190
|
+
const pomXml = `<project>
|
|
191
|
+
<modelVersion>4.0.0</modelVersion>
|
|
192
|
+
<groupId>com.example</groupId>
|
|
193
|
+
<artifactId>${config.name}</artifactId>
|
|
194
|
+
<version>1.0-SNAPSHOT</version>
|
|
195
195
|
</project>`;
|
|
196
196
|
fs.writeFileSync(path.join(config.path, 'pom.xml'), pomXml);
|
|
197
197
|
}
|
|
198
198
|
async createCPPStructure(config) {
|
|
199
|
-
const mainCpp = `#include <iostream>
|
|
200
|
-
|
|
201
|
-
int main() {
|
|
202
|
-
std::cout << "Hello, World!" << std::endl;
|
|
203
|
-
return 0;
|
|
199
|
+
const mainCpp = `#include <iostream>
|
|
200
|
+
|
|
201
|
+
int main() {
|
|
202
|
+
std::cout << "Hello, World!" << std::endl;
|
|
203
|
+
return 0;
|
|
204
204
|
}`;
|
|
205
205
|
fs.writeFileSync(path.join(config.path, 'main.cpp'), mainCpp);
|
|
206
|
-
const cmake = `cmake_minimum_required(VERSION 3.10)
|
|
207
|
-
project(${config.name})
|
|
208
|
-
|
|
209
|
-
set(CMAKE_CXX_STANDARD 11)
|
|
210
|
-
|
|
206
|
+
const cmake = `cmake_minimum_required(VERSION 3.10)
|
|
207
|
+
project(${config.name})
|
|
208
|
+
|
|
209
|
+
set(CMAKE_CXX_STANDARD 11)
|
|
210
|
+
|
|
211
211
|
add_executable(${config.name} main.cpp)`;
|
|
212
212
|
fs.writeFileSync(path.join(config.path, 'CMakeLists.txt'), cmake);
|
|
213
213
|
}
|
|
@@ -240,91 +240,91 @@ add_executable(${config.name} main.cpp)`;
|
|
|
240
240
|
const src = path.join(config.path, 'src');
|
|
241
241
|
if (!fs.existsSync(src))
|
|
242
242
|
fs.mkdirSync(src);
|
|
243
|
-
fs.writeFileSync(path.join(src, 'App.tsx'), `
|
|
244
|
-
import React from 'react';
|
|
245
|
-
|
|
246
|
-
function App() {
|
|
247
|
-
return (
|
|
248
|
-
<div>
|
|
249
|
-
<h1>Hello React + Vite!</h1>
|
|
250
|
-
</div>
|
|
251
|
-
);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
export default App;
|
|
243
|
+
fs.writeFileSync(path.join(src, 'App.tsx'), `
|
|
244
|
+
import React from 'react';
|
|
245
|
+
|
|
246
|
+
function App() {
|
|
247
|
+
return (
|
|
248
|
+
<div>
|
|
249
|
+
<h1>Hello React + Vite!</h1>
|
|
250
|
+
</div>
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export default App;
|
|
255
255
|
`);
|
|
256
|
-
fs.writeFileSync(path.join(src, 'main.tsx'), `
|
|
257
|
-
import React from 'react'
|
|
258
|
-
import ReactDOM from 'react-dom/client'
|
|
259
|
-
import App from './App.tsx'
|
|
260
|
-
|
|
261
|
-
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
262
|
-
<React.StrictMode>
|
|
263
|
-
<App />
|
|
264
|
-
</React.StrictMode>,
|
|
265
|
-
)
|
|
256
|
+
fs.writeFileSync(path.join(src, 'main.tsx'), `
|
|
257
|
+
import React from 'react'
|
|
258
|
+
import ReactDOM from 'react-dom/client'
|
|
259
|
+
import App from './App.tsx'
|
|
260
|
+
|
|
261
|
+
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
262
|
+
<React.StrictMode>
|
|
263
|
+
<App />
|
|
264
|
+
</React.StrictMode>,
|
|
265
|
+
)
|
|
266
266
|
`);
|
|
267
|
-
fs.writeFileSync(path.join(config.path, 'index.html'), `
|
|
268
|
-
<!doctype html>
|
|
269
|
-
<html lang="en">
|
|
270
|
-
<head>
|
|
271
|
-
<meta charset="UTF-8" />
|
|
272
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
273
|
-
<title>${config.name}</title>
|
|
274
|
-
</head>
|
|
275
|
-
<body>
|
|
276
|
-
<div id="root"></div>
|
|
277
|
-
<script type="module" src="/src/main.tsx"></script>
|
|
278
|
-
</body>
|
|
279
|
-
</html>
|
|
267
|
+
fs.writeFileSync(path.join(config.path, 'index.html'), `
|
|
268
|
+
<!doctype html>
|
|
269
|
+
<html lang="en">
|
|
270
|
+
<head>
|
|
271
|
+
<meta charset="UTF-8" />
|
|
272
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
273
|
+
<title>${config.name}</title>
|
|
274
|
+
</head>
|
|
275
|
+
<body>
|
|
276
|
+
<div id="root"></div>
|
|
277
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
278
|
+
</body>
|
|
279
|
+
</html>
|
|
280
280
|
`);
|
|
281
|
-
fs.writeFileSync(path.join(config.path, 'vite.config.ts'), `
|
|
282
|
-
import { defineConfig } from 'vite'
|
|
283
|
-
import react from '@vitejs/plugin-react'
|
|
284
|
-
|
|
285
|
-
// https://vitejs.dev/config/
|
|
286
|
-
export default defineConfig({
|
|
287
|
-
plugins: [react()],
|
|
288
|
-
})
|
|
281
|
+
fs.writeFileSync(path.join(config.path, 'vite.config.ts'), `
|
|
282
|
+
import { defineConfig } from 'vite'
|
|
283
|
+
import react from '@vitejs/plugin-react'
|
|
284
|
+
|
|
285
|
+
// https://vitejs.dev/config/
|
|
286
|
+
export default defineConfig({
|
|
287
|
+
plugins: [react()],
|
|
288
|
+
})
|
|
289
289
|
`);
|
|
290
|
-
fs.writeFileSync(path.join(config.path, 'tsconfig.json'), `
|
|
291
|
-
{
|
|
292
|
-
"compilerOptions": {
|
|
293
|
-
"target": "ES2020",
|
|
294
|
-
"useDefineForClassFields": true,
|
|
295
|
-
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
296
|
-
"module": "ESNext",
|
|
297
|
-
"skipLibCheck": true,
|
|
298
|
-
|
|
299
|
-
/* Bundler mode */
|
|
300
|
-
"moduleResolution": "bundler",
|
|
301
|
-
"allowImportingTsExtensions": true,
|
|
302
|
-
"resolveJsonModule": true,
|
|
303
|
-
"isolatedModules": true,
|
|
304
|
-
"noEmit": true,
|
|
305
|
-
"jsx": "react-jsx",
|
|
306
|
-
|
|
307
|
-
/* Linting */
|
|
308
|
-
"strict": true,
|
|
309
|
-
"noUnusedLocals": true,
|
|
310
|
-
"noUnusedParameters": true,
|
|
311
|
-
"noFallthroughCasesInSwitch": true
|
|
312
|
-
},
|
|
313
|
-
"include": ["src"],
|
|
314
|
-
"references": [{ "path": "./tsconfig.node.json" }]
|
|
315
|
-
}
|
|
290
|
+
fs.writeFileSync(path.join(config.path, 'tsconfig.json'), `
|
|
291
|
+
{
|
|
292
|
+
"compilerOptions": {
|
|
293
|
+
"target": "ES2020",
|
|
294
|
+
"useDefineForClassFields": true,
|
|
295
|
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
296
|
+
"module": "ESNext",
|
|
297
|
+
"skipLibCheck": true,
|
|
298
|
+
|
|
299
|
+
/* Bundler mode */
|
|
300
|
+
"moduleResolution": "bundler",
|
|
301
|
+
"allowImportingTsExtensions": true,
|
|
302
|
+
"resolveJsonModule": true,
|
|
303
|
+
"isolatedModules": true,
|
|
304
|
+
"noEmit": true,
|
|
305
|
+
"jsx": "react-jsx",
|
|
306
|
+
|
|
307
|
+
/* Linting */
|
|
308
|
+
"strict": true,
|
|
309
|
+
"noUnusedLocals": true,
|
|
310
|
+
"noUnusedParameters": true,
|
|
311
|
+
"noFallthroughCasesInSwitch": true
|
|
312
|
+
},
|
|
313
|
+
"include": ["src"],
|
|
314
|
+
"references": [{ "path": "./tsconfig.node.json" }]
|
|
315
|
+
}
|
|
316
316
|
`);
|
|
317
|
-
fs.writeFileSync(path.join(config.path, 'tsconfig.node.json'), `
|
|
318
|
-
{
|
|
319
|
-
"compilerOptions": {
|
|
320
|
-
"composite": true,
|
|
321
|
-
"skipLibCheck": true,
|
|
322
|
-
"module": "ESNext",
|
|
323
|
-
"moduleResolution": "bundler",
|
|
324
|
-
"allowSyntheticDefaultImports": true
|
|
325
|
-
},
|
|
326
|
-
"include": ["vite.config.ts"]
|
|
327
|
-
}
|
|
317
|
+
fs.writeFileSync(path.join(config.path, 'tsconfig.node.json'), `
|
|
318
|
+
{
|
|
319
|
+
"compilerOptions": {
|
|
320
|
+
"composite": true,
|
|
321
|
+
"skipLibCheck": true,
|
|
322
|
+
"module": "ESNext",
|
|
323
|
+
"moduleResolution": "bundler",
|
|
324
|
+
"allowSyntheticDefaultImports": true
|
|
325
|
+
},
|
|
326
|
+
"include": ["vite.config.ts"]
|
|
327
|
+
}
|
|
328
328
|
`);
|
|
329
329
|
}
|
|
330
330
|
}
|
|
@@ -17,6 +17,16 @@ class GitHubServiceCLI {
|
|
|
17
17
|
}
|
|
18
18
|
return this.octokit;
|
|
19
19
|
}
|
|
20
|
+
async validateToken() {
|
|
21
|
+
try {
|
|
22
|
+
const client = this.getClient();
|
|
23
|
+
const { data: user } = await client.users.getAuthenticated();
|
|
24
|
+
return { login: user.login };
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
20
30
|
async createRepo(config) {
|
|
21
31
|
try {
|
|
22
32
|
const client = this.getClient();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubServiceCLI.js","sourceRoot":"","sources":["../../src/services/GitHubServiceCLI.ts"],"names":[],"mappings":";;;AACA,wCAAwC;AAGxC,MAAa,gBAAgB;IAGzB,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAC7B,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,OAAO,GAAG,IAAI,cAAO,CAAC;gBACvB,IAAI,EAAE,KAAK;aACd,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAqB;QACzC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAEhC,mBAAmB;YACnB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAE7D,oDAAoD;YACpD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC;gBACjE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,eAAe;gBAChC,SAAS,EAAE,KAAK;aACnB,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC;oBACD,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;wBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;qBACvF,CAAC,CAAC;gBACP,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;YAED,qDAAqD;YACrD,2CAA2C;YAC3C,OAAO,WAAW,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;QAE/E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,sEAAsE;YACtE,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"GitHubServiceCLI.js","sourceRoot":"","sources":["../../src/services/GitHubServiceCLI.ts"],"names":[],"mappings":";;;AACA,wCAAwC;AAGxC,MAAa,gBAAgB;IAGzB,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAC7B,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,OAAO,GAAG,IAAI,cAAO,CAAC;gBACvB,IAAI,EAAE,KAAK;aACd,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,aAAa;QACtB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC7D,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAqB;QACzC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAEhC,mBAAmB;YACnB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAE7D,oDAAoD;YACpD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC;gBACjE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,eAAe;gBAChC,SAAS,EAAE,KAAK;aACnB,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC;oBACD,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;wBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;qBACvF,CAAC,CAAC;gBACP,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;YAED,qDAAqD;YACrD,2CAA2C;YAC3C,OAAO,WAAW,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;QAE/E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,sEAAsE;YACtE,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;CACJ;AAjED,4CAiEC"}
|
package/package.json
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "zerostart-cli",
|
|
3
|
-
"displayName": "ZeroStart",
|
|
4
|
-
"bin": {
|
|
5
|
-
"zerostart": "./out/cli.js"
|
|
6
|
-
},
|
|
7
|
-
"description": "Create and deploy a complete project with one command.",
|
|
8
|
-
"version": "0.0.
|
|
9
|
-
"engines": {
|
|
10
|
-
"vscode": "^1.85.0"
|
|
11
|
-
},
|
|
12
|
-
"categories": [
|
|
13
|
-
"Other"
|
|
14
|
-
],
|
|
15
|
-
"activationEvents": [],
|
|
16
|
-
"main": "./out/extension.js",
|
|
17
|
-
"contributes": {
|
|
18
|
-
"commands": [
|
|
19
|
-
{
|
|
20
|
-
"command": "zerostart.create",
|
|
21
|
-
"title": "ZeroStart"
|
|
22
|
-
}
|
|
23
|
-
]
|
|
24
|
-
},
|
|
25
|
-
"scripts": {
|
|
26
|
-
"vscode:prepublish": "npm run compile",
|
|
27
|
-
"compile": "tsc -p ./",
|
|
28
|
-
"watch": "tsc -watch -p ./",
|
|
29
|
-
"pretest": "npm run compile && npm run lint",
|
|
30
|
-
"lint": "eslint src --ext ts",
|
|
31
|
-
"test": "node ./out/test/runTest.js"
|
|
32
|
-
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"@types/glob": "^8.1.0",
|
|
35
|
-
"@types/inquirer": "^9.0.9",
|
|
36
|
-
"@types/mocha": "^10.0.6",
|
|
37
|
-
"@types/node": "18.x",
|
|
38
|
-
"@types/ora": "^3.1.0",
|
|
39
|
-
"@types/vscode": "^1.85.0",
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "^6.13.1",
|
|
41
|
-
"@typescript-eslint/parser": "^6.13.1",
|
|
42
|
-
"@vscode/test-electron": "^2.3.8",
|
|
43
|
-
"eslint": "^8.54.0",
|
|
44
|
-
"glob": "^10.3.10",
|
|
45
|
-
"mocha": "^10.2.0",
|
|
46
|
-
"typescript": "^5.3.2"
|
|
47
|
-
},
|
|
48
|
-
"dependencies": {
|
|
49
|
-
"@octokit/rest": "^19.0.13",
|
|
50
|
-
"chalk": "^4.1.2",
|
|
51
|
-
"commander": "^14.0.3",
|
|
52
|
-
"inquirer": "^9.3.8",
|
|
53
|
-
"ora": "^5.4.1"
|
|
54
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "zerostart-cli",
|
|
3
|
+
"displayName": "ZeroStart",
|
|
4
|
+
"bin": {
|
|
5
|
+
"zerostart": "./out/cli.js"
|
|
6
|
+
},
|
|
7
|
+
"description": "Create and deploy a complete project with one command.",
|
|
8
|
+
"version": "0.0.7",
|
|
9
|
+
"engines": {
|
|
10
|
+
"vscode": "^1.85.0"
|
|
11
|
+
},
|
|
12
|
+
"categories": [
|
|
13
|
+
"Other"
|
|
14
|
+
],
|
|
15
|
+
"activationEvents": [],
|
|
16
|
+
"main": "./out/extension.js",
|
|
17
|
+
"contributes": {
|
|
18
|
+
"commands": [
|
|
19
|
+
{
|
|
20
|
+
"command": "zerostart.create",
|
|
21
|
+
"title": "ZeroStart"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"vscode:prepublish": "npm run compile",
|
|
27
|
+
"compile": "tsc -p ./",
|
|
28
|
+
"watch": "tsc -watch -p ./",
|
|
29
|
+
"pretest": "npm run compile && npm run lint",
|
|
30
|
+
"lint": "eslint src --ext ts",
|
|
31
|
+
"test": "node ./out/test/runTest.js"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/glob": "^8.1.0",
|
|
35
|
+
"@types/inquirer": "^9.0.9",
|
|
36
|
+
"@types/mocha": "^10.0.6",
|
|
37
|
+
"@types/node": "18.x",
|
|
38
|
+
"@types/ora": "^3.1.0",
|
|
39
|
+
"@types/vscode": "^1.85.0",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^6.13.1",
|
|
41
|
+
"@typescript-eslint/parser": "^6.13.1",
|
|
42
|
+
"@vscode/test-electron": "^2.3.8",
|
|
43
|
+
"eslint": "^8.54.0",
|
|
44
|
+
"glob": "^10.3.10",
|
|
45
|
+
"mocha": "^10.2.0",
|
|
46
|
+
"typescript": "^5.3.2"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@octokit/rest": "^19.0.13",
|
|
50
|
+
"chalk": "^4.1.2",
|
|
51
|
+
"commander": "^14.0.3",
|
|
52
|
+
"inquirer": "^9.3.8",
|
|
53
|
+
"ora": "^5.4.1"
|
|
54
|
+
}
|
|
55
55
|
}
|