@mcadam/worktree 1.0.0

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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +315 -0
  3. package/bin/worktree.js +2 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +63 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/config.d.ts +2 -0
  9. package/dist/commands/config.d.ts.map +1 -0
  10. package/dist/commands/config.js +110 -0
  11. package/dist/commands/config.js.map +1 -0
  12. package/dist/commands/create.d.ts +2 -0
  13. package/dist/commands/create.d.ts.map +1 -0
  14. package/dist/commands/create.js +75 -0
  15. package/dist/commands/create.js.map +1 -0
  16. package/dist/commands/init.d.ts +2 -0
  17. package/dist/commands/init.d.ts.map +1 -0
  18. package/dist/commands/init.js +90 -0
  19. package/dist/commands/init.js.map +1 -0
  20. package/dist/commands/list.d.ts +2 -0
  21. package/dist/commands/list.d.ts.map +1 -0
  22. package/dist/commands/list.js +82 -0
  23. package/dist/commands/list.js.map +1 -0
  24. package/dist/components/WorktreeList.d.ts +10 -0
  25. package/dist/components/WorktreeList.d.ts.map +1 -0
  26. package/dist/components/WorktreeList.js +41 -0
  27. package/dist/components/WorktreeList.js.map +1 -0
  28. package/dist/config/detector.d.ts +4 -0
  29. package/dist/config/detector.d.ts.map +1 -0
  30. package/dist/config/detector.js +34 -0
  31. package/dist/config/detector.js.map +1 -0
  32. package/dist/config/manager.d.ts +19 -0
  33. package/dist/config/manager.d.ts.map +1 -0
  34. package/dist/config/manager.js +73 -0
  35. package/dist/config/manager.js.map +1 -0
  36. package/dist/config/schema.d.ts +77 -0
  37. package/dist/config/schema.d.ts.map +1 -0
  38. package/dist/config/schema.js +19 -0
  39. package/dist/config/schema.js.map +1 -0
  40. package/dist/utils/gh.d.ts +13 -0
  41. package/dist/utils/gh.d.ts.map +1 -0
  42. package/dist/utils/gh.js +41 -0
  43. package/dist/utils/gh.js.map +1 -0
  44. package/dist/utils/git.d.ts +14 -0
  45. package/dist/utils/git.d.ts.map +1 -0
  46. package/dist/utils/git.js +91 -0
  47. package/dist/utils/git.js.map +1 -0
  48. package/dist/utils/sanitize.d.ts +3 -0
  49. package/dist/utils/sanitize.d.ts.map +1 -0
  50. package/dist/utils/sanitize.js +13 -0
  51. package/dist/utils/sanitize.js.map +1 -0
  52. package/package.json +68 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Unproprietary Corporation
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,315 @@
1
+ # ๐ŸŒณ Worktree CLI
2
+
3
+ > **Transform your Git workflow with blazing-fast worktree management across multiple repositories** โšก
4
+
5
+ [![npm version](https://img.shields.io/npm/v/worktree-cli.svg)](https://www.npmjs.com/package/worktree-cli)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)
8
+ [![Node.js](https://img.shields.io/badge/Node.js-18+-green.svg)](https://nodejs.org/)
9
+
10
+ ## ๐ŸŽฏ Why Worktree CLI?
11
+
12
+ Stop juggling branches with `git stash` and `git checkout`. Stop losing your local changes. Stop waiting for dependency installs. **Start working on multiple features simultaneously without the hassle.**
13
+
14
+ ```bash
15
+ # Old way ๐Ÿ˜ซ
16
+ git stash
17
+ git checkout feature-B
18
+ npm install
19
+ # ... where did my changes go?
20
+
21
+ # Worktree way ๐Ÿ˜Ž
22
+ worktree feature-B
23
+ # Done! New isolated workspace ready in seconds!
24
+ ```
25
+
26
+ ## โœจ Features That Spark Joy
27
+
28
+ ### ๐Ÿš€ **Lightning-Fast Setup**
29
+ One command to rule them all - create a worktree, copy env files, install dependencies, and open your IDE.
30
+
31
+ ### ๐Ÿข **Multi-Repository Management**
32
+ Manage worktrees across your entire stack - frontend, backend, microservices - all from one place.
33
+
34
+ ### ๐Ÿท๏ธ **Smart Organization**
35
+ Custom prefixes keep your worktrees organized (`fe-feature`, `be-bugfix`, `api-hotfix`).
36
+
37
+ ### ๐ŸŽจ **Beautiful CLI Experience**
38
+ React-powered interactive UI with Ink - because terminals can be beautiful too.
39
+
40
+ ### ๐Ÿ”„ **GitHub Integration**
41
+ See PR status instantly when `gh` CLI is installed - no API keys needed!
42
+
43
+ ### ๐Ÿงน **Bulk Operations**
44
+ Select multiple worktrees with spacebar and delete them all at once. Spring cleaning made easy.
45
+
46
+ ## ๐Ÿ“ฆ Installation
47
+
48
+ ```bash
49
+ # npm
50
+ npm install -g worktree-cli
51
+
52
+ # pnpm (recommended)
53
+ pnpm add -g worktree-cli
54
+
55
+ # yarn
56
+ yarn global add worktree-cli
57
+ ```
58
+
59
+ ## ๐Ÿš€ Quick Start
60
+
61
+ ### 1๏ธโƒฃ Initialize Your First Repository
62
+
63
+ ```bash
64
+ cd your-awesome-project
65
+ worktree init
66
+ ```
67
+
68
+ You'll be guided through a delightful setup:
69
+
70
+ ```
71
+ ๐Ÿ“ Repository name: frontend
72
+ ๐Ÿท๏ธ Worktree prefix: fe-
73
+ ๐Ÿ“ Base path: ../worktrees
74
+ ๐Ÿ” Env file: .env.local
75
+ ๐Ÿ“ฆ Install command: pnpm install
76
+ ๐Ÿ’ป IDE command: cursor
77
+ ```
78
+
79
+ ### 2๏ธโƒฃ Create Your First Worktree
80
+
81
+ ```bash
82
+ worktree feature/dark-mode
83
+ ```
84
+
85
+ Watch the magic happen:
86
+ ```
87
+ โœจ Creating worktree for branch: feature/dark-mode
88
+ ๐Ÿ“ Location: ../worktrees/fe-feature-dark-mode
89
+ โœ“ Worktree created
90
+ โœ“ Copied .env.local
91
+ โœ“ Dependencies installed
92
+ โœ“ Opened in cursor
93
+
94
+ โœ… Ready for some epic code!
95
+ ```
96
+
97
+ ### 3๏ธโƒฃ Manage Your Worktrees
98
+
99
+ ```bash
100
+ worktree list
101
+ ```
102
+
103
+ Interactive UI shows all your worktrees:
104
+ ```
105
+ โ”Œโ”€ Frontend (/Users/you/frontend) โ”€โ”€โ”€โ”€โ”€โ”
106
+ โ”‚ โ˜ fe-feature-auth โœ“ remote ๐Ÿ”€ PR #23 โ”‚
107
+ โ”‚ โ˜ fe-dark-mode โš ๏ธ local only โ”‚
108
+ โ”‚ โ˜ fe-fix-header โœ“ remote โ”‚
109
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
110
+
111
+ [Space] Select [Enter] Delete [Q] Quit
112
+ ```
113
+
114
+ ## ๐ŸŽฎ Commands
115
+
116
+ ### `worktree <branch>` - Create Magic โœจ
117
+
118
+ Creates a new worktree with all the bells and whistles:
119
+
120
+ ```bash
121
+ worktree feature/awesome-stuff
122
+ # Creates: ../worktrees/fe-feature-awesome-stuff
123
+ # Runs: pnpm install
124
+ # Copies: .env.local
125
+ # Opens: cursor
126
+ ```
127
+
128
+ ### `worktree list` - See Everything ๐Ÿ‘€
129
+
130
+ Beautiful interactive list of all worktrees across all repositories:
131
+ - **Space** - Select worktrees
132
+ - **Enter** - Delete selected
133
+ - **Q** - Quit
134
+
135
+ Status indicators:
136
+ - โœ“ **remote** - Pushed to remote
137
+ - ๐Ÿ”€ **PR #X** - Has an open pull request
138
+ - โš ๏ธ **local only** - Not yet pushed
139
+
140
+ ### `worktree init` - Setup Paradise ๐Ÿ๏ธ
141
+
142
+ Interactive configuration for the current repository:
143
+
144
+ ```bash
145
+ worktree init
146
+ # Answer a few questions and you're golden!
147
+ ```
148
+
149
+ ### `worktree config` - Fine-Tune Everything โš™๏ธ
150
+
151
+ Manage global defaults and repository settings:
152
+
153
+ ```bash
154
+ worktree config
155
+ # โ€ข View configuration
156
+ # โ€ข Edit defaults
157
+ # โ€ข Remove repositories
158
+ ```
159
+
160
+ ## ๐ŸŽฏ Real-World Workflow
161
+
162
+ ### The Full-Stack Developer's Dream
163
+
164
+ ```bash
165
+ # Monday morning - Set up your repositories
166
+ cd ~/projects/frontend
167
+ worktree init
168
+ # prefix: fe-
169
+
170
+ cd ~/projects/backend
171
+ worktree init
172
+ # prefix: be-
173
+
174
+ cd ~/projects/mobile
175
+ worktree init
176
+ # prefix: mob-
177
+
178
+ # Start working on a feature across all repos
179
+ cd ~/projects/frontend
180
+ worktree feature/user-dashboard
181
+
182
+ cd ~/projects/backend
183
+ worktree feature/user-dashboard-api
184
+
185
+ cd ~/projects/mobile
186
+ worktree feature/user-dashboard-mobile
187
+
188
+ # See all your work
189
+ worktree list
190
+ # Shows all 3 worktrees across all repos! ๐ŸŽ‰
191
+ ```
192
+
193
+ ### The Quick Fix Master
194
+
195
+ ```bash
196
+ # Emergency hotfix needed!
197
+ worktree hotfix/critical-bug
198
+
199
+ # Fix the bug...
200
+ # Push to remote...
201
+ # Create PR...
202
+
203
+ # Clean up when done
204
+ worktree list
205
+ # Select the hotfix worktree
206
+ # Press Enter to delete
207
+ # โœ… Workspace cleaned up!
208
+ ```
209
+
210
+ ## โš™๏ธ Configuration
211
+
212
+ Your config lives at `~/.worktreerc.json`:
213
+
214
+ ```json
215
+ {
216
+ "defaultBasePath": "../worktrees",
217
+ "defaultInstallCommand": "pnpm install",
218
+ "defaultIdeCommand": "cursor",
219
+ "repos": {
220
+ "/Users/you/frontend": {
221
+ "name": "frontend",
222
+ "prefix": "fe-",
223
+ "basePath": "../worktrees",
224
+ "envPath": ".env.local",
225
+ "installCommand": "pnpm install && pnpm prepare",
226
+ "ideCommand": "cursor"
227
+ },
228
+ "/Users/you/backend": {
229
+ "name": "backend",
230
+ "prefix": "be-",
231
+ "envPath": ".env",
232
+ "installCommand": "pnpm install && pnpm db:migrate"
233
+ }
234
+ }
235
+ }
236
+ ```
237
+
238
+ ## ๐Ÿ› ๏ธ Development
239
+
240
+ Want to contribute? Awesome! Here's how to get started:
241
+
242
+ ```bash
243
+ # Clone the repo
244
+ git clone https://github.com/yourusername/worktree-cli.git
245
+ cd worktree-cli
246
+
247
+ # Install dependencies
248
+ pnpm install
249
+
250
+ # Development mode with hot reload
251
+ pnpm dev
252
+
253
+ # Build for production
254
+ pnpm build
255
+
256
+ # Test locally
257
+ npm link
258
+ worktree --version
259
+ ```
260
+
261
+ ### Tech Stack
262
+
263
+ - **TypeScript** - Type safety FTW
264
+ - **Ink** - React for CLIs
265
+ - **Commander** - CLI argument parsing
266
+ - **Zod** - Runtime type validation
267
+ - **Biome** - Fast formatting & linting
268
+
269
+ ## ๐Ÿค Contributing
270
+
271
+ We love contributions! Whether it's:
272
+
273
+ - ๐Ÿ› Bug reports
274
+ - ๐Ÿ’ก Feature requests
275
+ - ๐Ÿ“– Documentation improvements
276
+ - ๐ŸŽจ UI/UX enhancements
277
+ - ๐Ÿ”ง Code contributions
278
+
279
+ Check out our [Contributing Guide](CONTRIBUTING.md) to get started.
280
+
281
+ ## ๐Ÿ“ Requirements
282
+
283
+ - **Node.js** >= 18.0.0
284
+ - **Git** (obviously!)
285
+ - **gh CLI** (optional, for PR status)
286
+
287
+ ## ๐ŸŽ‰ Success Stories
288
+
289
+ > "Worktree CLI changed my life! I can finally work on multiple features without losing my mind!" - Happy Developer
290
+
291
+ > "The prefix system is genius. My worktrees folder is finally organized!" - Organized Developer
292
+
293
+ > "Being able to see PR status right in the terminal? *Chef's kiss*" - Efficient Developer
294
+
295
+ ## ๐Ÿ“„ License
296
+
297
+ MIT ยฉ [Your Name]
298
+
299
+ ---
300
+
301
+ <div align="center">
302
+
303
+ **Built with ๐Ÿ’™ by developers, for developers**
304
+
305
+ [Report Bug](https://github.com/yourusername/worktree-cli/issues) ยท [Request Feature](https://github.com/yourusername/worktree-cli/issues) ยท [Star on GitHub](https://github.com/yourusername/worktree-cli)
306
+
307
+ </div>
308
+
309
+ ---
310
+
311
+ <div align="center">
312
+
313
+ ### ๐ŸŒŸ Don't forget to star this repo if you find it useful! ๐ŸŒŸ
314
+
315
+ </div>
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '../dist/cli.js'
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ import { program } from 'commander';
3
+ import { getGitRoot, isGitRepo } from './config/detector.js';
4
+ import { configManager } from './config/manager.js';
5
+ import { createCommand } from './commands/create.js';
6
+ import { listCommand } from './commands/list.js';
7
+ import { initCommand } from './commands/init.js';
8
+ import { configCommand } from './commands/config.js';
9
+ async function main() {
10
+ // Check if we're in a git repository
11
+ if (!(await isGitRepo())) {
12
+ console.error('Error: Not in a git repository');
13
+ process.exit(1);
14
+ }
15
+ const gitRoot = await getGitRoot();
16
+ if (!gitRoot) {
17
+ console.error('Error: Could not determine git root');
18
+ process.exit(1);
19
+ }
20
+ // Load config
21
+ await configManager.load();
22
+ program
23
+ .name('worktree')
24
+ .description('CLI tool for managing Git worktrees across multiple repositories')
25
+ .version('1.0.0');
26
+ program
27
+ .argument('[branch]', 'Branch name to create worktree for')
28
+ .description('Create a new worktree or manage existing ones')
29
+ .action(async (branch) => {
30
+ if (branch) {
31
+ // Create worktree
32
+ await createCommand(branch, gitRoot);
33
+ }
34
+ else {
35
+ // Show list if no branch provided
36
+ await listCommand(gitRoot);
37
+ }
38
+ });
39
+ program
40
+ .command('list')
41
+ .description('List and manage worktrees across all configured repositories')
42
+ .action(async () => {
43
+ await listCommand(gitRoot);
44
+ });
45
+ program
46
+ .command('init')
47
+ .description('Initialize configuration for current repository')
48
+ .action(async () => {
49
+ await initCommand(gitRoot);
50
+ });
51
+ program
52
+ .command('config')
53
+ .description('Manage worktree configuration')
54
+ .action(async () => {
55
+ await configCommand(gitRoot);
56
+ });
57
+ await program.parseAsync(process.argv);
58
+ }
59
+ main().catch((error) => {
60
+ console.error('Error:', error.message);
61
+ process.exit(1);
62
+ });
63
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,KAAK,UAAU,IAAI;IACjB,qCAAqC;IACrC,IAAI,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAA;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,cAAc;IACd,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;IAE1B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,kEAAkE,CAAC;SAC/E,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,OAAO;SACJ,QAAQ,CAAC,UAAU,EAAE,oCAAoC,CAAC;SAC1D,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE;QAChC,IAAI,MAAM,EAAE,CAAC;YACX,kBAAkB;YAClB,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEJ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function configCommand(gitRoot: string): Promise<void>;
2
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.tsx"],"names":[],"mappings":"AAwLA,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
@@ -0,0 +1,110 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useState } from 'react';
3
+ import { render, Box, Text, useInput, useApp } from 'ink';
4
+ import SelectInput from 'ink-select-input';
5
+ import TextInput from 'ink-text-input';
6
+ import chalk from 'chalk';
7
+ import { configManager } from '../config/manager.js';
8
+ function ConfigMenu({}) {
9
+ const [action, setAction] = useState(null);
10
+ const [editingDefault, setEditingDefault] = useState(null);
11
+ const [inputValue, setInputValue] = useState('');
12
+ const { exit } = useApp();
13
+ useInput((input) => {
14
+ if (input === 'q' && !editingDefault) {
15
+ exit();
16
+ }
17
+ });
18
+ const handleSelect = (item) => {
19
+ setAction(item.value);
20
+ if (item.value === 'back') {
21
+ exit();
22
+ }
23
+ };
24
+ const handleDefaultEdit = async (field, value) => {
25
+ const updates = {};
26
+ updates[field] = value;
27
+ await configManager.updateDefaults(updates);
28
+ setEditingDefault(null);
29
+ setInputValue('');
30
+ console.log(chalk.green(`\nโœ… Updated ${field} successfully!`));
31
+ console.log(chalk.cyan(`๐ŸŽฏ Your new default is now active!`));
32
+ };
33
+ if (editingDefault) {
34
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: ["Enter new value for ", editingDefault, ":"] }), _jsx(TextInput, { value: inputValue, onChange: setInputValue, onSubmit: (value) => handleDefaultEdit(editingDefault, value) })] }));
35
+ }
36
+ if (action === 'view') {
37
+ return _jsx(ConfigViewer, { onBack: () => setAction(null) });
38
+ }
39
+ if (action === 'edit-defaults') {
40
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Edit Default Settings" }), _jsx(SelectInput, { items: [
41
+ { label: 'Default Base Path', value: 'defaultBasePath' },
42
+ { label: 'Default Install Command', value: 'defaultInstallCommand' },
43
+ { label: 'Default IDE Command', value: 'defaultIdeCommand' },
44
+ { label: 'Back', value: 'back' },
45
+ ], onSelect: (item) => {
46
+ if (item.value === 'back') {
47
+ setAction(null);
48
+ }
49
+ else {
50
+ setEditingDefault(item.value);
51
+ }
52
+ } })] }));
53
+ }
54
+ if (action === 'remove-repo') {
55
+ return _jsx(RepoRemover, { onBack: () => setAction(null) });
56
+ }
57
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Worktree Configuration" }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: [
58
+ { label: 'View Configuration', value: 'view' },
59
+ { label: 'Edit Default Settings', value: 'edit-defaults' },
60
+ { label: 'Remove Repository', value: 'remove-repo' },
61
+ { label: 'Exit', value: 'back' },
62
+ ], onSelect: handleSelect }) })] }));
63
+ }
64
+ function ConfigViewer({ onBack }) {
65
+ const [config, setConfig] = useState(null);
66
+ React.useEffect(() => {
67
+ configManager.load().then(setConfig);
68
+ }, []);
69
+ useInput((input) => {
70
+ if (input === 'b') {
71
+ onBack();
72
+ }
73
+ });
74
+ if (!config) {
75
+ return _jsx(Text, { children: "Loading..." });
76
+ }
77
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Current Configuration" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Defaults:" }), _jsxs(Text, { children: [" Base Path: ", config.defaultBasePath] }), _jsxs(Text, { children: [" Install Command: ", config.defaultInstallCommand] }), _jsxs(Text, { children: [" IDE Command: ", config.defaultIdeCommand] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, children: "Repositories:" }) }), Object.entries(config.repos).map(([path, repo]) => (_jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [_jsxs(Text, { color: "yellow", children: [repo.name, " (", path, ")"] }), _jsxs(Text, { children: [" Prefix: ", repo.prefix] }), repo.basePath && _jsxs(Text, { children: [" Base Path: ", repo.basePath] }), repo.envPath && _jsxs(Text, { children: [" Env Path: ", repo.envPath] }), repo.installCommand && _jsxs(Text, { children: [" Install: ", repo.installCommand] }), repo.ideCommand && _jsxs(Text, { children: [" IDE: ", repo.ideCommand] })] }, path)))] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press 'b' to go back" }) })] }));
78
+ }
79
+ function RepoRemover({ onBack }) {
80
+ const [repos, setRepos] = useState([]);
81
+ React.useEffect(() => {
82
+ configManager.getAllRepoConfigs().then((configs) => {
83
+ const items = Object.entries(configs).map(([path, config]) => ({
84
+ label: `${config.name} (${path})`,
85
+ value: path,
86
+ }));
87
+ items.push({ label: 'Cancel', value: 'cancel' });
88
+ setRepos(items);
89
+ });
90
+ }, []);
91
+ const handleSelect = async (item) => {
92
+ if (item.value === 'cancel') {
93
+ onBack();
94
+ }
95
+ else {
96
+ await configManager.removeRepoConfig(item.value);
97
+ console.log(chalk.green(`\nโœ… Removed repository configuration`));
98
+ console.log(chalk.cyan(`๐Ÿงน Repository config cleaned up!`));
99
+ setTimeout(() => onBack(), 1000);
100
+ }
101
+ };
102
+ if (repos.length === 0) {
103
+ return _jsx(Text, { children: "Loading..." });
104
+ }
105
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Select Repository to Remove" }), _jsx(SelectInput, { items: repos, onSelect: handleSelect })] }));
106
+ }
107
+ export async function configCommand(gitRoot) {
108
+ render(_jsx(ConfigMenu, { gitRoot: gitRoot }));
109
+ }
110
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function createCommand(branch: string, gitRoot: string): Promise<void>;
2
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAUA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyElF"}
@@ -0,0 +1,75 @@
1
+ import { execa } from 'execa';
2
+ import fs from 'fs-extra';
3
+ import path from 'path';
4
+ import ora from 'ora';
5
+ import chalk from 'chalk';
6
+ import { configManager } from '../config/manager.js';
7
+ import { createWorktreeName } from '../utils/sanitize.js';
8
+ import { createWorktree } from '../utils/git.js';
9
+ import { initCommand } from './init.js';
10
+ export async function createCommand(branch, gitRoot) {
11
+ // Check if repo is configured
12
+ let repoConfig = await configManager.getRepoConfig(gitRoot);
13
+ if (!repoConfig) {
14
+ console.log(chalk.yellow('This repository is not configured yet.'));
15
+ console.log(chalk.cyan('Let\'s set it up first!\n'));
16
+ await initCommand(gitRoot);
17
+ repoConfig = await configManager.getRepoConfig(gitRoot);
18
+ if (!repoConfig) {
19
+ console.error(chalk.red('Configuration cancelled'));
20
+ process.exit(1);
21
+ }
22
+ }
23
+ const config = configManager.getEffectiveConfig(repoConfig);
24
+ const worktreeName = createWorktreeName(branch, repoConfig.prefix);
25
+ const worktreePath = path.resolve(gitRoot, config.basePath, worktreeName);
26
+ console.log(chalk.blue(`Creating worktree for branch: ${branch}`));
27
+ console.log(chalk.gray(`Location: ${worktreePath}`));
28
+ const spinner = ora();
29
+ try {
30
+ // Create worktree
31
+ spinner.start('Creating worktree...');
32
+ await createWorktree(config.basePath, worktreeName, branch, gitRoot);
33
+ spinner.succeed('Worktree created');
34
+ // Copy .env file if configured
35
+ if (config.envPath) {
36
+ spinner.start('Copying environment file...');
37
+ const sourcePath = path.join(gitRoot, config.envPath);
38
+ const destPath = path.join(worktreePath, config.envPath);
39
+ if (await fs.pathExists(sourcePath)) {
40
+ await fs.copy(sourcePath, destPath);
41
+ spinner.succeed(`Copied ${config.envPath}`);
42
+ }
43
+ else {
44
+ spinner.warn(`Environment file ${config.envPath} not found`);
45
+ }
46
+ }
47
+ // Run install command
48
+ if (config.installCommand) {
49
+ spinner.start(`Running: ${config.installCommand}`);
50
+ await execa(config.installCommand, [], {
51
+ cwd: worktreePath,
52
+ shell: true,
53
+ stdio: 'inherit',
54
+ });
55
+ spinner.succeed('Dependencies installed');
56
+ }
57
+ // Open IDE
58
+ if (config.ideCommand) {
59
+ spinner.start(`Opening in ${config.ideCommand}...`);
60
+ await execa(config.ideCommand, [worktreePath], {
61
+ detached: true,
62
+ stdio: 'ignore',
63
+ });
64
+ spinner.succeed(`Opened in ${config.ideCommand}`);
65
+ }
66
+ console.log(chalk.green(`\nโœจ Worktree ready at: ${worktreePath}`));
67
+ console.log(chalk.cyan(`โœ… Ready for some epic code!`));
68
+ }
69
+ catch (error) {
70
+ spinner.fail('Failed to create worktree');
71
+ console.error(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));
72
+ process.exit(1);
73
+ }
74
+ }
75
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,OAAe;IACjE,8BAA8B;IAC9B,IAAI,UAAU,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAE3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAA;QACpD,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;QAC1B,UAAU,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAEvD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;IAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAEzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC,CAAA;IAEpD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAA;IAErB,IAAI,CAAC;QACH,kBAAkB;QAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACrC,MAAM,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACpE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;QAEnC,+BAA+B;QAC/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YAExD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;gBACnC,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,OAAO,YAAY,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;YAClD,MAAM,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,EAAE;gBACrC,GAAG,EAAE,YAAY;gBACjB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,SAAS;aACjB,CAAC,CAAA;YACF,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,WAAW;QACX,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,UAAU,KAAK,CAAC,CAAA;YACnD,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE;gBAC7C,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAA;YACF,OAAO,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC,CAAA;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function initCommand(gitRoot: string): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.tsx"],"names":[],"mappings":"AAyGA,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhE"}