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 CHANGED
@@ -1,57 +1,237 @@
1
-
2
- # Project Starter AI - VS Code Extension
3
-
4
- Create and deploy a complete project with one command.
5
-
6
- ## Features
7
-
8
- - **Start Project AI**: Command to define and scaffold a project.
9
- - Supports **Node.js, React, Python, Java, C++**.
10
- - Supports project types: **Web App, CLI Tool, DSA Practice, ML Project**.
11
- - Automates:
12
- - Folder structure creation.
13
- - Initial Git setup (init, commit).
14
- - GitHub Repository creation (public/private).
15
- - Pushing initial code to GitHub.
16
-
17
- ## Development Setup
18
-
19
- 1. **Install Dependencies**:
20
- ```bash
21
- npm install
22
- ```
23
- *Note: This project relies on `vscode` types and `@octokit/rest`.*
24
-
25
- 2. **Open in VS Code**:
26
- ```bash
27
- code .
28
- ```
29
-
30
- 3. **Run Extension**:
31
- - Press `F5` to open a new Extension Development Host window.
32
- - Run command `Start Project AI` from Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P`).
33
-
34
- 4. **Package Extension**:
35
- ```bash
36
- npx vsce package
37
- ```
38
-
39
- ## Technical Details
40
-
41
- - **Entry Point**: `src/extension.ts`
42
- - **Logic**:
43
- - `src/managers/ProjectManager.ts`: Orchestrates the flow.
44
- - `src/managers/TemplateManager.ts`: Generates files.
45
- - `src/managers/GitManager.ts`: Handles local git commands via `child_process`.
46
- - `src/services/GitHubService.ts`: Interact with GitHub API using `Octokit` and `vscode.authentication`.
47
-
48
- ## Dependencies
49
-
50
- - `vscode`: VS Code Extension API.
51
- - `@octokit/rest`: GitHub API client.
52
- - `typescript`: Language support.
53
-
54
- ## Known Issues
55
-
56
- - Requires `git` to be installed and in PATH.
57
- - Requires GitHub authentication (handled via VS Code).
1
+ # ZeroStart CLI 🚀
2
+
3
+ Create and deploy a complete project with **one command**.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/zerostart-cli.svg)](https://www.npmjs.com/package/zerostart-cli)
6
+ [![npm downloads](https://img.shields.io/npm/dm/zerostart-cli.svg)](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('ZeroStart')
73
+ .name('zerostart')
53
74
  .description('Create and deploy a complete project with one command')
54
- .version('0.0.1')
75
+ .version('0.0.6')
55
76
  .argument('[projectName]', 'Name of the project')
56
77
  .action(async (projectName) => {
57
78
  try {
58
- console.log(chalk_1.default.bold.cyan('ZeroStart: Project Starter AI\n'));
79
+ showBanner();
59
80
  // 1. Get Project Name
60
- if (!projectName) {
61
- const answers = await inquirer_1.default.prompt([
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: 'Enter Project Name:',
66
- validate: (input) => input.trim() !== '' ? true : 'Project name is required'
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
- projectName = answers.name;
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: 'Create GitHub Repository?',
96
- default: true
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, projectName);
164
+ const projectPath = path.join(cwd, name);
108
165
  if (fs.existsSync(projectPath)) {
109
- console.error(chalk_1.default.red(`Error: Directory ${projectName} already exists!`));
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: projectName,
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
- const spinner = (0, ora_1.default)('Initializing...').start();
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
- const gitManager = new GitManager_1.GitManager();
125
- const gitHubService = answers.githubToken ? new GitHubServiceCLI_1.GitHubServiceCLI(answers.githubToken) : null;
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
- // 2. Git Init
135
- spinner.text = 'Initializing Git...';
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 configured by ZeroStart");
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 (gitHubService && answers.createRemote) {
140
- spinner.text = 'Creating GitHub Repository...';
141
- const repoUrl = await gitHubService.createRepo(config);
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.text = 'Pushing to GitHub...';
144
- await gitManager.addRemote(config.path, repoUrl);
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
- // Extract the clean URL for local config if possible, but keeping the token in remote is sometimes necessary for future pushes without auth helper.
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
- spinner.warn('GitHub repository creation failed (check logs).');
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
- spinner.succeed(chalk_1.default.green(`Project '${config.name}' created successfully!`));
162
- console.log(chalk_1.default.cyan(`\nPath: ${config.path}`));
163
- console.log(chalk_1.default.gray('To get started:'));
164
- console.log(` cd ${projectName}`);
165
- console.log(` code .`);
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(`Error: ${error.message}`);
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":"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"}
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,+CAA+C;AAC/C,SAAS,UAAU;IACf,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,sCAAsC;AACtC,SAAS,mBAAmB;IACxB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3H,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC;AAED,OAAO;KACF,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;IAC1B,IAAI,CAAC;QACD,UAAU,EAAE,CAAC;QAEb,sBAAsB;QACtB,IAAI,IAAI,GAAG,WAAW,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACrC;oBACI,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,eAAe;oBACxB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBACxB,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;4BAAE,OAAO,eAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;wBACvE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;4BAAE,OAAO,eAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;wBAC7G,OAAO,IAAI,CAAC;oBAChB,CAAC;iBACJ;aACJ,CAAC,CAAC;YACH,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC;QAED,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAClC;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,8BAA8B;gBACvC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAe,CAAC;aAC1C;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC;aACtC;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,+BAA+B;gBACxC,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAC9B,OAAO,EAAE,SAAS;aACrB;YACD;gBACI,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,KAAK;aACjB;SACJ,CAAC,CAAC;QAEH,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,UAAU,GAAG,uBAAuB,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC,CAAC,+BAA+B;QAEpE,sDAAsD;QACtD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAE9C,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;oBACrC;wBACI,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,qCAAqC;wBAC9C,OAAO,EAAE,CAAC,0BAA0B,EAAE,uBAAuB,CAAC;qBACjE;iBACJ,CAAC,CAAC;gBACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YACnC,CAAC;YAED,IAAI,UAAU,KAAK,uBAAuB,EAAE,CAAC;gBACzC,mBAAmB,EAAE,CAAC;gBAEtB,MAAM,WAAW,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;oBACtC;wBACI,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE,8CAA8C;wBACvD,IAAI,EAAE,GAAG;qBACZ;iBACJ,CAAC,CAAC;gBAEH,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;gBAEtD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;oBACrF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBAC/G,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;gBACjC,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEzC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,MAAM,GAAkB;YAC1B,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,eAAe,EAAE,OAAO,CAAC,UAAU,KAAK,QAAQ;YAChD,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,eAAe,OAAO,CAAC,QAAQ,EAAE;YAC/D,IAAI,EAAE,WAAW;SACpB,CAAC;QAEF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC;YAChB,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEX,IAAI,CAAC;YACD,WAAW;YACX,MAAM,eAAe,GAAG,IAAI,iCAAe,EAAE,CAAC;YAC9C,kCAAkC;YAClC,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,mCAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE7E,eAAe;YACf,IAAI,CAAC,MAAM,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAC5F,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO;YACX,CAAC;YAED,eAAe;YACf,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YAChE,MAAM,eAAe,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAE5D,gCAAgC;YAChC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC/D,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;YAEvE,yCAAyC;YACzC,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACvD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5B,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;oBAC/D,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAElF,YAAY;YACZ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC9D,IAAI,OAA2B,CAAC;gBAEhC,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;oBAC9B,IAAI,CAAC;wBACD,OAAO,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;oBAClG,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBAClB,OAAO,GAAG,SAAS,CAAC;wBACpB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAC9D,CAAC;gBACL,CAAC;qBAAM,IAAI,aAAa,EAAE,CAAC;oBACvB,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACrD,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBAE5D,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;oBAEtD,oDAAoD;oBACpD,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;wBAC9B,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACrD,CAAC;oBAED,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAEnC,kDAAkD;oBAClD,IAAI,UAAU,KAAK,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;wBACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;wBACrD,MAAM,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACzD,CAAC;oBAED,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACJ,kGAAkG;oBAClG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;wBACtB,yDAAyD;oBAC7D,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;wBACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;oBAC/E,CAAC;gBACL,CAAC;YACL,CAAC;YAED,kBAAkB;YAClB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBACvF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC;QAEL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,8BAA8B;AAC9B,SAAS,gBAAgB,CAAC,IAAY;IAClC,MAAM,MAAM,GAA8B;QACtC,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,GAAG;KACb,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAC9B,MAAM,MAAM,GAA8B;QACtC,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,IAAI;KACrB,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -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;AArDD,gCAqDC"}
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;IAEM,KAAK,CAAC,gBAAgB;QACzB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,WAAW;QACpB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,IAAY,EAAE,QAAiB;QACtE,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;YACvD,uBAAuB;YACvB,yEAAyE;YACzE,MAAM,IAAI,CAAC,mBAAmB,IAAI,KAAK,UAAU,6BAA6B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACzF,OAAO,sBAAsB,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS;QACnB,IAAI,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;CACJ;AA5FD,gCA4FC"}
@@ -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;AAvDD,4CAuDC"}
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.1",
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
  }