@camaradesuk/git-worktree-tools 1.0.3

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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +259 -0
  3. package/dist/cli/cleanpr.d.ts +13 -0
  4. package/dist/cli/cleanpr.d.ts.map +1 -0
  5. package/dist/cli/cleanpr.js +441 -0
  6. package/dist/cli/cleanpr.js.map +1 -0
  7. package/dist/cli/lswt.d.ts +11 -0
  8. package/dist/cli/lswt.d.ts.map +1 -0
  9. package/dist/cli/lswt.js +313 -0
  10. package/dist/cli/lswt.js.map +1 -0
  11. package/dist/cli/newpr.d.ts +11 -0
  12. package/dist/cli/newpr.d.ts.map +1 -0
  13. package/dist/cli/newpr.js +888 -0
  14. package/dist/cli/newpr.js.map +1 -0
  15. package/dist/cli/wtlink.d.ts +15 -0
  16. package/dist/cli/wtlink.d.ts.map +1 -0
  17. package/dist/cli/wtlink.js +124 -0
  18. package/dist/cli/wtlink.js.map +1 -0
  19. package/dist/e2e/cli.e2e.test.d.ts +2 -0
  20. package/dist/e2e/cli.e2e.test.d.ts.map +1 -0
  21. package/dist/e2e/cli.e2e.test.js +215 -0
  22. package/dist/e2e/cli.e2e.test.js.map +1 -0
  23. package/dist/index.d.ts +20 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +17 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/integration/git.integration.test.d.ts +2 -0
  28. package/dist/integration/git.integration.test.d.ts.map +1 -0
  29. package/dist/integration/git.integration.test.js +333 -0
  30. package/dist/integration/git.integration.test.js.map +1 -0
  31. package/dist/lib/colors.d.ts +59 -0
  32. package/dist/lib/colors.d.ts.map +1 -0
  33. package/dist/lib/colors.js +145 -0
  34. package/dist/lib/colors.js.map +1 -0
  35. package/dist/lib/colors.test.d.ts +2 -0
  36. package/dist/lib/colors.test.d.ts.map +1 -0
  37. package/dist/lib/colors.test.js +69 -0
  38. package/dist/lib/colors.test.js.map +1 -0
  39. package/dist/lib/config.d.ts +58 -0
  40. package/dist/lib/config.d.ts.map +1 -0
  41. package/dist/lib/config.js +91 -0
  42. package/dist/lib/config.js.map +1 -0
  43. package/dist/lib/config.test.d.ts +2 -0
  44. package/dist/lib/config.test.d.ts.map +1 -0
  45. package/dist/lib/config.test.js +84 -0
  46. package/dist/lib/config.test.js.map +1 -0
  47. package/dist/lib/constants.d.ts +37 -0
  48. package/dist/lib/constants.d.ts.map +1 -0
  49. package/dist/lib/constants.js +37 -0
  50. package/dist/lib/constants.js.map +1 -0
  51. package/dist/lib/errors.d.ts +88 -0
  52. package/dist/lib/errors.d.ts.map +1 -0
  53. package/dist/lib/errors.js +112 -0
  54. package/dist/lib/errors.js.map +1 -0
  55. package/dist/lib/errors.test.d.ts +2 -0
  56. package/dist/lib/errors.test.d.ts.map +1 -0
  57. package/dist/lib/errors.test.js +117 -0
  58. package/dist/lib/errors.test.js.map +1 -0
  59. package/dist/lib/git.d.ts +224 -0
  60. package/dist/lib/git.d.ts.map +1 -0
  61. package/dist/lib/git.js +524 -0
  62. package/dist/lib/git.js.map +1 -0
  63. package/dist/lib/git.test.d.ts +2 -0
  64. package/dist/lib/git.test.d.ts.map +1 -0
  65. package/dist/lib/git.test.js +402 -0
  66. package/dist/lib/git.test.js.map +1 -0
  67. package/dist/lib/github.d.ts +82 -0
  68. package/dist/lib/github.d.ts.map +1 -0
  69. package/dist/lib/github.js +254 -0
  70. package/dist/lib/github.js.map +1 -0
  71. package/dist/lib/github.test.d.ts +2 -0
  72. package/dist/lib/github.test.d.ts.map +1 -0
  73. package/dist/lib/github.test.js +258 -0
  74. package/dist/lib/github.test.js.map +1 -0
  75. package/dist/lib/prompts.d.ts +39 -0
  76. package/dist/lib/prompts.d.ts.map +1 -0
  77. package/dist/lib/prompts.js +213 -0
  78. package/dist/lib/prompts.js.map +1 -0
  79. package/dist/lib/prompts.test.d.ts +2 -0
  80. package/dist/lib/prompts.test.d.ts.map +1 -0
  81. package/dist/lib/prompts.test.js +250 -0
  82. package/dist/lib/prompts.test.js.map +1 -0
  83. package/dist/lib/state-detection.d.ts +65 -0
  84. package/dist/lib/state-detection.d.ts.map +1 -0
  85. package/dist/lib/state-detection.js +186 -0
  86. package/dist/lib/state-detection.js.map +1 -0
  87. package/dist/lib/state-detection.test.d.ts +2 -0
  88. package/dist/lib/state-detection.test.d.ts.map +1 -0
  89. package/dist/lib/state-detection.test.js +164 -0
  90. package/dist/lib/state-detection.test.js.map +1 -0
  91. package/dist/lib/wtlink/index.d.ts +5 -0
  92. package/dist/lib/wtlink/index.d.ts.map +1 -0
  93. package/dist/lib/wtlink/index.js +7 -0
  94. package/dist/lib/wtlink/index.js.map +1 -0
  95. package/dist/lib/wtlink/link-configs.d.ts +10 -0
  96. package/dist/lib/wtlink/link-configs.d.ts.map +1 -0
  97. package/dist/lib/wtlink/link-configs.js +411 -0
  98. package/dist/lib/wtlink/link-configs.js.map +1 -0
  99. package/dist/lib/wtlink/link-configs.test.d.ts +2 -0
  100. package/dist/lib/wtlink/link-configs.test.d.ts.map +1 -0
  101. package/dist/lib/wtlink/link-configs.test.js +179 -0
  102. package/dist/lib/wtlink/link-configs.test.js.map +1 -0
  103. package/dist/lib/wtlink/main-menu.d.ts +2 -0
  104. package/dist/lib/wtlink/main-menu.d.ts.map +1 -0
  105. package/dist/lib/wtlink/main-menu.js +149 -0
  106. package/dist/lib/wtlink/main-menu.js.map +1 -0
  107. package/dist/lib/wtlink/manage-manifest.d.ts +9 -0
  108. package/dist/lib/wtlink/manage-manifest.d.ts.map +1 -0
  109. package/dist/lib/wtlink/manage-manifest.js +1262 -0
  110. package/dist/lib/wtlink/manage-manifest.js.map +1 -0
  111. package/dist/lib/wtlink/validate-manifest.d.ts +6 -0
  112. package/dist/lib/wtlink/validate-manifest.d.ts.map +1 -0
  113. package/dist/lib/wtlink/validate-manifest.js +51 -0
  114. package/dist/lib/wtlink/validate-manifest.js.map +1 -0
  115. package/dist/lib/wtlink/validate-manifest.test.d.ts +2 -0
  116. package/dist/lib/wtlink/validate-manifest.test.d.ts.map +1 -0
  117. package/dist/lib/wtlink/validate-manifest.test.js +115 -0
  118. package/dist/lib/wtlink/validate-manifest.test.js.map +1 -0
  119. package/package.json +84 -0
@@ -0,0 +1,524 @@
1
+ import { execSync } from 'child_process';
2
+ import path from 'path';
3
+ import { DEFAULT_REMOTE, DEFAULT_BASE_BRANCH } from './constants.js';
4
+ /**
5
+ * Shell-escape a string for use in a command
6
+ */
7
+ function shellEscape(str) {
8
+ // If string contains spaces or special chars, wrap in quotes and escape internal quotes
9
+ if (/[\s"'\\]/.test(str)) {
10
+ return `"${str.replace(/["\\]/g, '\\$&')}"`;
11
+ }
12
+ return str;
13
+ }
14
+ /**
15
+ * Execute a git command and return output
16
+ */
17
+ export function exec(args, options = {}) {
18
+ const escapedArgs = args.map(shellEscape);
19
+ const cmd = `git ${escapedArgs.join(' ')}`;
20
+ const execOptions = {
21
+ encoding: 'utf8',
22
+ cwd: options.cwd,
23
+ stdio: options.silent ? 'pipe' : ['pipe', 'pipe', 'pipe'],
24
+ };
25
+ try {
26
+ const result = execSync(cmd, execOptions);
27
+ // Use trimEnd to preserve leading whitespace (significant in git status output)
28
+ return result.trimEnd();
29
+ }
30
+ catch (error) {
31
+ if (error instanceof Error && 'stderr' in error) {
32
+ const stderr = error.stderr;
33
+ if (stderr) {
34
+ throw new Error(`Git command failed: ${cmd}\n${stderr.toString()}`);
35
+ }
36
+ }
37
+ throw error;
38
+ }
39
+ }
40
+ /**
41
+ * Execute a git command, returning null on failure instead of throwing
42
+ */
43
+ export function execSafe(args, options = {}) {
44
+ try {
45
+ return exec(args, { ...options, silent: true });
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ /**
52
+ * Get the root directory of the current git repository
53
+ */
54
+ export function getRepoRoot(cwd) {
55
+ const result = exec(['rev-parse', '--show-toplevel'], { cwd, silent: true });
56
+ // Normalize path for cross-platform compatibility
57
+ return path.normalize(result);
58
+ }
59
+ /**
60
+ * Get repository name from remote URL or directory name
61
+ */
62
+ export function getRepoName(repoRoot) {
63
+ const remoteUrl = execSafe(['remote', 'get-url', 'origin'], { cwd: repoRoot });
64
+ if (remoteUrl) {
65
+ // Extract repo name from SSH or HTTPS URL
66
+ // git@github.com:org/repo.git -> repo
67
+ // https://github.com/org/repo.git -> repo
68
+ const match = remoteUrl.match(/[/:]([^/]+?)(?:\.git)?$/);
69
+ if (match) {
70
+ return match[1];
71
+ }
72
+ }
73
+ // Fall back to directory name
74
+ return path.basename(repoRoot);
75
+ }
76
+ /**
77
+ * Get the current branch name, or null if detached HEAD
78
+ */
79
+ export function getCurrentBranch(cwd) {
80
+ const result = exec(['rev-parse', '--abbrev-ref', 'HEAD'], { cwd, silent: true });
81
+ return result === 'HEAD' ? null : result;
82
+ }
83
+ /**
84
+ * Check if in detached HEAD state
85
+ */
86
+ export function isDetachedHead(cwd) {
87
+ return getCurrentBranch(cwd) === null;
88
+ }
89
+ /**
90
+ * Get the current commit SHA
91
+ */
92
+ export function getHeadCommit(cwd) {
93
+ return exec(['rev-parse', 'HEAD'], { cwd, silent: true });
94
+ }
95
+ /**
96
+ * Get short commit SHA
97
+ */
98
+ export function getShortCommit(cwd, ref = 'HEAD') {
99
+ return exec(['rev-parse', '--short', ref], { cwd, silent: true });
100
+ }
101
+ /**
102
+ * Check if a remote exists
103
+ */
104
+ export function hasRemote(remote = DEFAULT_REMOTE, cwd) {
105
+ const result = execSafe(['remote', 'get-url', remote], { cwd });
106
+ return result !== null;
107
+ }
108
+ /**
109
+ * Fetch from remote
110
+ */
111
+ export function fetch(remote = DEFAULT_REMOTE, cwd) {
112
+ exec(['fetch', remote], { cwd, silent: true });
113
+ }
114
+ /**
115
+ * Get the commit SHA of a ref
116
+ */
117
+ export function getRefCommit(ref, cwd) {
118
+ return execSafe(['rev-parse', ref], { cwd });
119
+ }
120
+ /**
121
+ * Determine commit relationship to base branch
122
+ */
123
+ export function getCommitRelationship(baseBranch = DEFAULT_BASE_BRANCH, cwd) {
124
+ const remote = DEFAULT_REMOTE;
125
+ const baseRef = `${remote}/${baseBranch}`;
126
+ const headCommit = getHeadCommit(cwd);
127
+ const baseCommit = getRefCommit(baseRef, cwd);
128
+ if (!baseCommit) {
129
+ // Base branch doesn't exist, assume divergent
130
+ return 'divergent';
131
+ }
132
+ if (headCommit === baseCommit) {
133
+ return 'same';
134
+ }
135
+ // Check if HEAD is an ancestor of base (already merged)
136
+ const isAncestor = execSafe(['merge-base', '--is-ancestor', 'HEAD', baseRef], { cwd });
137
+ if (isAncestor !== null) {
138
+ return 'ancestor';
139
+ }
140
+ // Check if base is an ancestor of HEAD (we're ahead)
141
+ const baseIsAncestor = execSafe(['merge-base', '--is-ancestor', baseRef, 'HEAD'], { cwd });
142
+ if (baseIsAncestor !== null) {
143
+ return 'ahead';
144
+ }
145
+ // Check if HEAD is behind base
146
+ const mergeBase = execSafe(['merge-base', 'HEAD', baseRef], { cwd });
147
+ if (mergeBase === headCommit) {
148
+ return 'behind';
149
+ }
150
+ return 'divergent';
151
+ }
152
+ /**
153
+ * Get list of commits ahead of base
154
+ */
155
+ export function getCommitsAhead(baseBranch = DEFAULT_BASE_BRANCH, cwd) {
156
+ const remote = DEFAULT_REMOTE;
157
+ const baseRef = `${remote}/${baseBranch}`;
158
+ const result = execSafe(['rev-list', `${baseRef}..HEAD`, '--oneline'], { cwd });
159
+ if (!result) {
160
+ return [];
161
+ }
162
+ return result.split('\n').filter(Boolean);
163
+ }
164
+ /**
165
+ * Get working tree status
166
+ */
167
+ export function getWorkingTreeStatus(cwd) {
168
+ const status = exec(['status', '--porcelain'], { cwd, silent: true });
169
+ if (!status) {
170
+ return 'clean';
171
+ }
172
+ const lines = status.split('\n').filter(Boolean);
173
+ let hasStaged = false;
174
+ let hasUnstaged = false;
175
+ for (const line of lines) {
176
+ const indexStatus = line[0];
177
+ const worktreeStatus = line[1];
178
+ // Staged changes: first char is not ' ' or '?'
179
+ if (indexStatus !== ' ' && indexStatus !== '?') {
180
+ hasStaged = true;
181
+ }
182
+ // Unstaged changes: second char is not ' ' or untracked files
183
+ if (worktreeStatus !== ' ' || indexStatus === '?') {
184
+ hasUnstaged = true;
185
+ }
186
+ }
187
+ if (hasStaged && hasUnstaged) {
188
+ return 'both';
189
+ }
190
+ else if (hasStaged) {
191
+ return 'staged_only';
192
+ }
193
+ else if (hasUnstaged) {
194
+ return 'unstaged_only';
195
+ }
196
+ return 'clean';
197
+ }
198
+ /**
199
+ * Get staged files
200
+ */
201
+ export function getStagedFiles(cwd) {
202
+ const result = execSafe(['diff', '--cached', '--name-only'], { cwd });
203
+ if (!result) {
204
+ return [];
205
+ }
206
+ return result.split('\n').filter(Boolean);
207
+ }
208
+ /**
209
+ * Get unstaged files (modified + untracked)
210
+ */
211
+ export function getUnstagedFiles(cwd) {
212
+ const status = exec(['status', '--porcelain'], { cwd, silent: true });
213
+ if (!status) {
214
+ return [];
215
+ }
216
+ const files = [];
217
+ const lines = status.split('\n').filter(Boolean);
218
+ for (const line of lines) {
219
+ const worktreeStatus = line[1];
220
+ const indexStatus = line[0];
221
+ // Unstaged changes or untracked files
222
+ if (worktreeStatus !== ' ' || indexStatus === '?') {
223
+ // Extract filename (starts at position 3)
224
+ files.push(line.substring(3));
225
+ }
226
+ }
227
+ return files;
228
+ }
229
+ /**
230
+ * Get git status output (for display)
231
+ */
232
+ export function getStatusOutput(cwd) {
233
+ return exec(['status', '--porcelain'], { cwd, silent: true });
234
+ }
235
+ /**
236
+ * List all worktrees
237
+ */
238
+ export function listWorktrees(cwd) {
239
+ const result = exec(['worktree', 'list', '--porcelain'], { cwd, silent: true });
240
+ if (!result) {
241
+ return [];
242
+ }
243
+ const worktrees = [];
244
+ let current = {};
245
+ for (const line of result.split('\n')) {
246
+ if (line.startsWith('worktree ')) {
247
+ if (current.path) {
248
+ worktrees.push(current);
249
+ }
250
+ current = {
251
+ path: line.substring(9),
252
+ branch: null,
253
+ commit: '',
254
+ isMain: false,
255
+ isBare: false,
256
+ isLocked: false,
257
+ isPrunable: false,
258
+ };
259
+ }
260
+ else if (line.startsWith('HEAD ')) {
261
+ current.commit = line.substring(5);
262
+ }
263
+ else if (line.startsWith('branch ')) {
264
+ // refs/heads/branch-name -> branch-name
265
+ current.branch = line.substring(7).replace('refs/heads/', '');
266
+ }
267
+ else if (line === 'bare') {
268
+ current.isBare = true;
269
+ current.isMain = true;
270
+ }
271
+ else if (line === 'locked') {
272
+ current.isLocked = true;
273
+ }
274
+ else if (line === 'prunable') {
275
+ current.isPrunable = true;
276
+ }
277
+ else if (line === '' && current.path) {
278
+ // Empty line marks end of entry
279
+ }
280
+ }
281
+ // Don't forget the last entry
282
+ if (current.path) {
283
+ worktrees.push(current);
284
+ }
285
+ // Mark the first non-bare worktree as main
286
+ const firstNonBare = worktrees.find((w) => !w.isBare);
287
+ if (firstNonBare) {
288
+ firstNonBare.isMain = true;
289
+ }
290
+ return worktrees;
291
+ }
292
+ /**
293
+ * Find the main worktree
294
+ */
295
+ export function getMainWorktree(cwd) {
296
+ const worktrees = listWorktrees(cwd);
297
+ return worktrees.find((w) => w.isMain && !w.isBare) || null;
298
+ }
299
+ /**
300
+ * Check if current directory is a worktree (not main)
301
+ */
302
+ export function isWorktree(cwd) {
303
+ const repoRoot = getRepoRoot(cwd);
304
+ const worktrees = listWorktrees(cwd);
305
+ const current = worktrees.find((w) => path.normalize(w.path) === path.normalize(repoRoot));
306
+ return current ? !current.isMain : false;
307
+ }
308
+ /**
309
+ * Add a new worktree
310
+ */
311
+ export function addWorktree(worktreePath, branch, options = {}) {
312
+ const args = ['worktree', 'add'];
313
+ if (options.createBranch) {
314
+ args.push('-b', branch);
315
+ args.push(worktreePath);
316
+ if (options.startPoint) {
317
+ args.push(options.startPoint);
318
+ }
319
+ }
320
+ else {
321
+ args.push(worktreePath, branch);
322
+ }
323
+ exec(args, { cwd: options.cwd });
324
+ }
325
+ /**
326
+ * Remove a worktree
327
+ */
328
+ export function removeWorktree(worktreePath, options = {}) {
329
+ const args = ['worktree', 'remove'];
330
+ if (options.force) {
331
+ args.push('--force');
332
+ }
333
+ args.push(worktreePath);
334
+ exec(args, { cwd: options.cwd });
335
+ }
336
+ /**
337
+ * Prune worktrees
338
+ */
339
+ export function pruneWorktrees(cwd) {
340
+ exec(['worktree', 'prune'], { cwd });
341
+ }
342
+ /**
343
+ * Create a new branch
344
+ */
345
+ export function createBranch(name, startPoint, cwd) {
346
+ const args = ['branch', name];
347
+ if (startPoint) {
348
+ args.push(startPoint);
349
+ }
350
+ exec(args, { cwd });
351
+ }
352
+ /**
353
+ * Delete a branch
354
+ */
355
+ export function deleteBranch(name, options = {}) {
356
+ const flag = options.force ? '-D' : '-d';
357
+ exec(['branch', flag, name], { cwd: options.cwd });
358
+ }
359
+ /**
360
+ * Checkout a branch or commit
361
+ */
362
+ export function checkout(ref, cwd) {
363
+ exec(['checkout', ref], { cwd });
364
+ }
365
+ /**
366
+ * Stage files
367
+ */
368
+ export function add(paths = '.', cwd) {
369
+ const pathList = Array.isArray(paths) ? paths : [paths];
370
+ exec(['add', ...pathList], { cwd });
371
+ }
372
+ /**
373
+ * Create a commit
374
+ */
375
+ export function commit(options, cwd) {
376
+ const args = ['commit'];
377
+ if (options.all) {
378
+ args.push('-a');
379
+ }
380
+ if (options.allowEmpty) {
381
+ args.push('--allow-empty');
382
+ }
383
+ args.push('-m', options.message);
384
+ exec(args, { cwd });
385
+ // Return the new commit SHA
386
+ return getHeadCommit(cwd);
387
+ }
388
+ /**
389
+ * Push to remote
390
+ */
391
+ export function push(options = {}, cwd) {
392
+ const args = ['push'];
393
+ if (options.setUpstream) {
394
+ args.push('-u');
395
+ }
396
+ if (options.force) {
397
+ args.push('--force');
398
+ }
399
+ if (options.remote) {
400
+ args.push(options.remote);
401
+ }
402
+ if (options.branch) {
403
+ args.push(options.branch);
404
+ }
405
+ exec(args, { cwd });
406
+ }
407
+ /**
408
+ * Stash changes
409
+ * Returns stash reference if created, null if nothing to stash
410
+ */
411
+ export function stash(options = {}, cwd) {
412
+ const args = ['stash', 'push'];
413
+ if (options.keepIndex) {
414
+ args.push('--keep-index');
415
+ }
416
+ if (options.includeUntracked) {
417
+ args.push('--include-untracked');
418
+ }
419
+ if (options.message) {
420
+ args.push('-m', options.message);
421
+ }
422
+ const result = exec(args, { cwd });
423
+ // Check if anything was stashed
424
+ if (result.includes('No local changes to save')) {
425
+ return null;
426
+ }
427
+ // Return stash reference
428
+ return 'stash@{0}';
429
+ }
430
+ /**
431
+ * Apply stashed changes
432
+ */
433
+ export function stashApply(stashRef = 'stash@{0}', cwd) {
434
+ exec(['stash', 'apply', stashRef], { cwd });
435
+ }
436
+ /**
437
+ * Drop a stash entry
438
+ */
439
+ export function stashDrop(stashRef = 'stash@{0}', cwd) {
440
+ exec(['stash', 'drop', stashRef], { cwd });
441
+ }
442
+ /**
443
+ * Pop stashed changes (apply + drop)
444
+ */
445
+ export function stashPop(stashRef = 'stash@{0}', cwd) {
446
+ exec(['stash', 'pop', stashRef], { cwd });
447
+ }
448
+ /**
449
+ * Get commit log
450
+ */
451
+ export function getLog(range, options = {}) {
452
+ const args = ['log', '--oneline'];
453
+ if (options.format) {
454
+ args.push(`--format=${options.format}`);
455
+ }
456
+ if (options.maxCount) {
457
+ args.push(`-n${options.maxCount}`);
458
+ }
459
+ args.push(range);
460
+ const result = execSafe(args, { cwd: options.cwd });
461
+ if (!result) {
462
+ return [];
463
+ }
464
+ return result.split('\n').filter(Boolean);
465
+ }
466
+ /**
467
+ * Check if a branch exists locally
468
+ */
469
+ export function branchExists(name, cwd) {
470
+ const result = execSafe(['rev-parse', '--verify', `refs/heads/${name}`], { cwd });
471
+ return result !== null;
472
+ }
473
+ /**
474
+ * Check if a branch exists on remote
475
+ */
476
+ export function remoteBranchExists(name, remote = DEFAULT_REMOTE, cwd) {
477
+ const result = execSafe(['rev-parse', '--verify', `refs/remotes/${remote}/${name}`], { cwd });
478
+ return result !== null;
479
+ }
480
+ /**
481
+ * Check if git is installed and accessible
482
+ */
483
+ export function checkGitInstalled() {
484
+ try {
485
+ execSync('git --version', { stdio: 'pipe' });
486
+ return true;
487
+ }
488
+ catch {
489
+ return false;
490
+ }
491
+ }
492
+ /**
493
+ * Get the main worktree root (not the current worktree).
494
+ * Useful when you need to access files that should be in the main worktree
495
+ * regardless of which worktree you're currently in.
496
+ */
497
+ export function getMainWorktreeRoot(cwd) {
498
+ // Get the common git directory (shared across all worktrees)
499
+ const commonDir = execSafe(['rev-parse', '--git-common-dir'], { cwd });
500
+ if (!commonDir) {
501
+ // Fallback to current repo root
502
+ return getRepoRoot(cwd);
503
+ }
504
+ const commonDirPath = path.resolve(commonDir);
505
+ // If git-common-dir returns ".git", we're in the main worktree
506
+ if (path.basename(commonDirPath) === '.git') {
507
+ return path.dirname(commonDirPath);
508
+ }
509
+ // Otherwise, we're in a linked worktree
510
+ // The common dir is like: /main-worktree/.git/worktrees/feature-branch
511
+ // We need to go up to .git, then to parent directory
512
+ const gitDir = commonDirPath.includes('/worktrees/') || commonDirPath.includes('\\worktrees\\')
513
+ ? path.dirname(path.dirname(commonDirPath)) // .git/worktrees/name → .git
514
+ : commonDirPath;
515
+ return path.dirname(gitDir);
516
+ }
517
+ /**
518
+ * Check if a file is ignored by git
519
+ */
520
+ export function isGitIgnored(filePath, cwd) {
521
+ const result = execSafe(['check-ignore', filePath], { cwd });
522
+ return result !== null && result.trim().length > 0;
523
+ }
524
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=git.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.test.d.ts","sourceRoot":"","sources":["../../src/lib/git.test.ts"],"names":[],"mappings":""}