@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,117 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { WorktreeToolsError, GitCommandError, GitHubCliError, ConfigurationError, WorktreeError, ManifestError, UserCancelledError, isWorktreeToolsError, isGitCommandError, isGitHubCliError, } from './errors.js';
3
+ describe('errors', () => {
4
+ describe('WorktreeToolsError', () => {
5
+ it('should create error with message', () => {
6
+ const error = new WorktreeToolsError('Test error');
7
+ expect(error.message).toBe('Test error');
8
+ expect(error.name).toBe('WorktreeToolsError');
9
+ });
10
+ it('should be instanceof Error', () => {
11
+ const error = new WorktreeToolsError('Test');
12
+ expect(error).toBeInstanceOf(Error);
13
+ });
14
+ });
15
+ describe('GitCommandError', () => {
16
+ it('should create error with command info', () => {
17
+ const error = new GitCommandError('Git failed', {
18
+ command: 'git status',
19
+ exitCode: 128,
20
+ stderr: 'fatal: not a git repository',
21
+ });
22
+ expect(error.message).toBe('Git failed');
23
+ expect(error.name).toBe('GitCommandError');
24
+ expect(error.command).toBe('git status');
25
+ expect(error.exitCode).toBe(128);
26
+ expect(error.stderr).toBe('fatal: not a git repository');
27
+ });
28
+ it('should be instanceof WorktreeToolsError', () => {
29
+ const error = new GitCommandError('Test', { command: 'git' });
30
+ expect(error).toBeInstanceOf(WorktreeToolsError);
31
+ });
32
+ });
33
+ describe('GitHubCliError', () => {
34
+ it('should create error with command info', () => {
35
+ const error = new GitHubCliError('GitHub CLI failed', {
36
+ command: 'gh pr create',
37
+ stderr: 'not authenticated',
38
+ });
39
+ expect(error.message).toBe('GitHub CLI failed');
40
+ expect(error.name).toBe('GitHubCliError');
41
+ expect(error.command).toBe('gh pr create');
42
+ expect(error.stderr).toBe('not authenticated');
43
+ });
44
+ });
45
+ describe('ConfigurationError', () => {
46
+ it('should create error with config details', () => {
47
+ const error = new ConfigurationError('Invalid config', {
48
+ configFile: '.worktreerc',
49
+ field: 'baseBranch',
50
+ });
51
+ expect(error.message).toBe('Invalid config');
52
+ expect(error.name).toBe('ConfigurationError');
53
+ expect(error.configFile).toBe('.worktreerc');
54
+ expect(error.field).toBe('baseBranch');
55
+ });
56
+ it('should work without options', () => {
57
+ const error = new ConfigurationError('Invalid config');
58
+ expect(error.configFile).toBeUndefined();
59
+ expect(error.field).toBeUndefined();
60
+ });
61
+ });
62
+ describe('WorktreeError', () => {
63
+ it('should create error with worktree details', () => {
64
+ const error = new WorktreeError('Worktree failed', {
65
+ worktreePath: '/home/user/project.pr42',
66
+ branch: 'feature/test',
67
+ });
68
+ expect(error.message).toBe('Worktree failed');
69
+ expect(error.name).toBe('WorktreeError');
70
+ expect(error.worktreePath).toBe('/home/user/project.pr42');
71
+ expect(error.branch).toBe('feature/test');
72
+ });
73
+ });
74
+ describe('ManifestError', () => {
75
+ it('should create error with manifest details', () => {
76
+ const error = new ManifestError('Manifest invalid', {
77
+ manifestPath: '.wtlinkrc',
78
+ issues: ['Missing file: .env', 'Duplicate entry: .vscode/settings.json'],
79
+ });
80
+ expect(error.message).toBe('Manifest invalid');
81
+ expect(error.name).toBe('ManifestError');
82
+ expect(error.manifestPath).toBe('.wtlinkrc');
83
+ expect(error.issues).toHaveLength(2);
84
+ });
85
+ });
86
+ describe('UserCancelledError', () => {
87
+ it('should create error with default message', () => {
88
+ const error = new UserCancelledError();
89
+ expect(error.message).toBe('Operation cancelled by user');
90
+ expect(error.name).toBe('UserCancelledError');
91
+ });
92
+ it('should create error with custom message', () => {
93
+ const error = new UserCancelledError('User aborted PR creation');
94
+ expect(error.message).toBe('User aborted PR creation');
95
+ });
96
+ });
97
+ describe('type guards', () => {
98
+ it('isWorktreeToolsError should identify errors correctly', () => {
99
+ expect(isWorktreeToolsError(new WorktreeToolsError('test'))).toBe(true);
100
+ expect(isWorktreeToolsError(new GitCommandError('test', { command: 'git' }))).toBe(true);
101
+ expect(isWorktreeToolsError(new Error('test'))).toBe(false);
102
+ expect(isWorktreeToolsError('string')).toBe(false);
103
+ expect(isWorktreeToolsError(null)).toBe(false);
104
+ });
105
+ it('isGitCommandError should identify errors correctly', () => {
106
+ expect(isGitCommandError(new GitCommandError('test', { command: 'git' }))).toBe(true);
107
+ expect(isGitCommandError(new WorktreeToolsError('test'))).toBe(false);
108
+ expect(isGitCommandError(new Error('test'))).toBe(false);
109
+ });
110
+ it('isGitHubCliError should identify errors correctly', () => {
111
+ expect(isGitHubCliError(new GitHubCliError('test', { command: 'gh' }))).toBe(true);
112
+ expect(isGitHubCliError(new WorktreeToolsError('test'))).toBe(false);
113
+ expect(isGitHubCliError(new Error('test'))).toBe(false);
114
+ });
115
+ });
116
+ });
117
+ //# sourceMappingURL=errors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/lib/errors.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Commit relationship to base branch
3
+ */
4
+ export type CommitRelationship = 'same' | 'ahead' | 'behind' | 'divergent' | 'ancestor';
5
+ /**
6
+ * Working tree status
7
+ */
8
+ export type WorkingTreeStatus = 'clean' | 'staged_only' | 'unstaged_only' | 'both';
9
+ /**
10
+ * Worktree information
11
+ */
12
+ export interface Worktree {
13
+ path: string;
14
+ branch: string | null;
15
+ commit: string;
16
+ isMain: boolean;
17
+ isBare: boolean;
18
+ isLocked: boolean;
19
+ isPrunable: boolean;
20
+ }
21
+ /**
22
+ * Stash options
23
+ */
24
+ export interface StashOptions {
25
+ keepIndex?: boolean;
26
+ message?: string;
27
+ includeUntracked?: boolean;
28
+ }
29
+ /**
30
+ * Commit options
31
+ */
32
+ export interface CommitOptions {
33
+ all?: boolean;
34
+ allowEmpty?: boolean;
35
+ message: string;
36
+ }
37
+ /**
38
+ * Push options
39
+ */
40
+ export interface PushOptions {
41
+ setUpstream?: boolean;
42
+ force?: boolean;
43
+ remote?: string;
44
+ branch?: string;
45
+ }
46
+ /**
47
+ * Execute a git command and return output
48
+ */
49
+ export declare function exec(args: string[], options?: {
50
+ cwd?: string;
51
+ silent?: boolean;
52
+ }): string;
53
+ /**
54
+ * Execute a git command, returning null on failure instead of throwing
55
+ */
56
+ export declare function execSafe(args: string[], options?: {
57
+ cwd?: string;
58
+ }): string | null;
59
+ /**
60
+ * Get the root directory of the current git repository
61
+ */
62
+ export declare function getRepoRoot(cwd?: string): string;
63
+ /**
64
+ * Get repository name from remote URL or directory name
65
+ */
66
+ export declare function getRepoName(repoRoot: string): string;
67
+ /**
68
+ * Get the current branch name, or null if detached HEAD
69
+ */
70
+ export declare function getCurrentBranch(cwd?: string): string | null;
71
+ /**
72
+ * Check if in detached HEAD state
73
+ */
74
+ export declare function isDetachedHead(cwd?: string): boolean;
75
+ /**
76
+ * Get the current commit SHA
77
+ */
78
+ export declare function getHeadCommit(cwd?: string): string;
79
+ /**
80
+ * Get short commit SHA
81
+ */
82
+ export declare function getShortCommit(cwd?: string, ref?: string): string;
83
+ /**
84
+ * Check if a remote exists
85
+ */
86
+ export declare function hasRemote(remote?: string, cwd?: string): boolean;
87
+ /**
88
+ * Fetch from remote
89
+ */
90
+ export declare function fetch(remote?: string, cwd?: string): void;
91
+ /**
92
+ * Get the commit SHA of a ref
93
+ */
94
+ export declare function getRefCommit(ref: string, cwd?: string): string | null;
95
+ /**
96
+ * Determine commit relationship to base branch
97
+ */
98
+ export declare function getCommitRelationship(baseBranch?: string, cwd?: string): CommitRelationship;
99
+ /**
100
+ * Get list of commits ahead of base
101
+ */
102
+ export declare function getCommitsAhead(baseBranch?: string, cwd?: string): string[];
103
+ /**
104
+ * Get working tree status
105
+ */
106
+ export declare function getWorkingTreeStatus(cwd?: string): WorkingTreeStatus;
107
+ /**
108
+ * Get staged files
109
+ */
110
+ export declare function getStagedFiles(cwd?: string): string[];
111
+ /**
112
+ * Get unstaged files (modified + untracked)
113
+ */
114
+ export declare function getUnstagedFiles(cwd?: string): string[];
115
+ /**
116
+ * Get git status output (for display)
117
+ */
118
+ export declare function getStatusOutput(cwd?: string): string;
119
+ /**
120
+ * List all worktrees
121
+ */
122
+ export declare function listWorktrees(cwd?: string): Worktree[];
123
+ /**
124
+ * Find the main worktree
125
+ */
126
+ export declare function getMainWorktree(cwd?: string): Worktree | null;
127
+ /**
128
+ * Check if current directory is a worktree (not main)
129
+ */
130
+ export declare function isWorktree(cwd?: string): boolean;
131
+ /**
132
+ * Add a new worktree
133
+ */
134
+ export declare function addWorktree(worktreePath: string, branch: string, options?: {
135
+ createBranch?: boolean;
136
+ startPoint?: string;
137
+ cwd?: string;
138
+ }): void;
139
+ /**
140
+ * Remove a worktree
141
+ */
142
+ export declare function removeWorktree(worktreePath: string, options?: {
143
+ force?: boolean;
144
+ cwd?: string;
145
+ }): void;
146
+ /**
147
+ * Prune worktrees
148
+ */
149
+ export declare function pruneWorktrees(cwd?: string): void;
150
+ /**
151
+ * Create a new branch
152
+ */
153
+ export declare function createBranch(name: string, startPoint?: string, cwd?: string): void;
154
+ /**
155
+ * Delete a branch
156
+ */
157
+ export declare function deleteBranch(name: string, options?: {
158
+ force?: boolean;
159
+ cwd?: string;
160
+ }): void;
161
+ /**
162
+ * Checkout a branch or commit
163
+ */
164
+ export declare function checkout(ref: string, cwd?: string): void;
165
+ /**
166
+ * Stage files
167
+ */
168
+ export declare function add(paths?: string[] | string, cwd?: string): void;
169
+ /**
170
+ * Create a commit
171
+ */
172
+ export declare function commit(options: CommitOptions, cwd?: string): string;
173
+ /**
174
+ * Push to remote
175
+ */
176
+ export declare function push(options?: PushOptions, cwd?: string): void;
177
+ /**
178
+ * Stash changes
179
+ * Returns stash reference if created, null if nothing to stash
180
+ */
181
+ export declare function stash(options?: StashOptions, cwd?: string): string | null;
182
+ /**
183
+ * Apply stashed changes
184
+ */
185
+ export declare function stashApply(stashRef?: string, cwd?: string): void;
186
+ /**
187
+ * Drop a stash entry
188
+ */
189
+ export declare function stashDrop(stashRef?: string, cwd?: string): void;
190
+ /**
191
+ * Pop stashed changes (apply + drop)
192
+ */
193
+ export declare function stashPop(stashRef?: string, cwd?: string): void;
194
+ /**
195
+ * Get commit log
196
+ */
197
+ export declare function getLog(range: string, options?: {
198
+ format?: string;
199
+ maxCount?: number;
200
+ cwd?: string;
201
+ }): string[];
202
+ /**
203
+ * Check if a branch exists locally
204
+ */
205
+ export declare function branchExists(name: string, cwd?: string): boolean;
206
+ /**
207
+ * Check if a branch exists on remote
208
+ */
209
+ export declare function remoteBranchExists(name: string, remote?: string, cwd?: string): boolean;
210
+ /**
211
+ * Check if git is installed and accessible
212
+ */
213
+ export declare function checkGitInstalled(): boolean;
214
+ /**
215
+ * Get the main worktree root (not the current worktree).
216
+ * Useful when you need to access files that should be in the main worktree
217
+ * regardless of which worktree you're currently in.
218
+ */
219
+ export declare function getMainWorktreeRoot(cwd?: string): string;
220
+ /**
221
+ * Check if a file is ignored by git
222
+ */
223
+ export declare function isGitIgnored(filePath: string, cwd?: string): boolean;
224
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}