@camaradesuk/git-worktree-tools 1.0.4 → 1.1.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 (168) hide show
  1. package/README.md +4 -0
  2. package/dist/cli/cleanpr.d.ts +1 -6
  3. package/dist/cli/cleanpr.d.ts.map +1 -1
  4. package/dist/cli/cleanpr.js +110 -302
  5. package/dist/cli/cleanpr.js.map +1 -1
  6. package/dist/cli/cleanpr.test.d.ts +2 -0
  7. package/dist/cli/cleanpr.test.d.ts.map +1 -0
  8. package/dist/cli/cleanpr.test.js +225 -0
  9. package/dist/cli/cleanpr.test.js.map +1 -0
  10. package/dist/cli/lswt.d.ts +1 -4
  11. package/dist/cli/lswt.d.ts.map +1 -1
  12. package/dist/cli/lswt.js +32 -251
  13. package/dist/cli/lswt.js.map +1 -1
  14. package/dist/cli/lswt.test.d.ts +2 -0
  15. package/dist/cli/lswt.test.d.ts.map +1 -0
  16. package/dist/cli/lswt.test.js +165 -0
  17. package/dist/cli/lswt.test.js.map +1 -0
  18. package/dist/cli/newpr.d.ts +1 -4
  19. package/dist/cli/newpr.d.ts.map +1 -1
  20. package/dist/cli/newpr.js +98 -493
  21. package/dist/cli/newpr.js.map +1 -1
  22. package/dist/cli/newpr.test.d.ts +2 -0
  23. package/dist/cli/newpr.test.d.ts.map +1 -0
  24. package/dist/cli/newpr.test.js +329 -0
  25. package/dist/cli/newpr.test.js.map +1 -0
  26. package/dist/cli/wtlink.test.d.ts +2 -0
  27. package/dist/cli/wtlink.test.d.ts.map +1 -0
  28. package/dist/cli/wtlink.test.js +148 -0
  29. package/dist/cli/wtlink.test.js.map +1 -0
  30. package/dist/e2e/cli.e2e.test.js +44 -1
  31. package/dist/e2e/cli.e2e.test.js.map +1 -1
  32. package/dist/integration/git.integration.test.js.map +1 -1
  33. package/dist/lib/cleanpr/args.d.ts +14 -0
  34. package/dist/lib/cleanpr/args.d.ts.map +1 -0
  35. package/dist/lib/cleanpr/args.js +82 -0
  36. package/dist/lib/cleanpr/args.js.map +1 -0
  37. package/dist/lib/cleanpr/args.test.d.ts +2 -0
  38. package/dist/lib/cleanpr/args.test.d.ts.map +1 -0
  39. package/dist/lib/cleanpr/args.test.js +192 -0
  40. package/dist/lib/cleanpr/args.test.js.map +1 -0
  41. package/dist/lib/cleanpr/cleanup.d.ts +61 -0
  42. package/dist/lib/cleanpr/cleanup.d.ts.map +1 -0
  43. package/dist/lib/cleanpr/cleanup.js +97 -0
  44. package/dist/lib/cleanpr/cleanup.js.map +1 -0
  45. package/dist/lib/cleanpr/cleanup.test.d.ts +2 -0
  46. package/dist/lib/cleanpr/cleanup.test.d.ts.map +1 -0
  47. package/dist/lib/cleanpr/cleanup.test.js +264 -0
  48. package/dist/lib/cleanpr/cleanup.test.js.map +1 -0
  49. package/dist/lib/cleanpr/index.d.ts +10 -0
  50. package/dist/lib/cleanpr/index.d.ts.map +1 -0
  51. package/dist/lib/cleanpr/index.js +8 -0
  52. package/dist/lib/cleanpr/index.js.map +1 -0
  53. package/dist/lib/cleanpr/types.d.ts +49 -0
  54. package/dist/lib/cleanpr/types.d.ts.map +1 -0
  55. package/dist/lib/cleanpr/types.js +5 -0
  56. package/dist/lib/cleanpr/types.js.map +1 -0
  57. package/dist/lib/cleanpr/worktree-info.d.ts +27 -0
  58. package/dist/lib/cleanpr/worktree-info.d.ts.map +1 -0
  59. package/dist/lib/cleanpr/worktree-info.js +95 -0
  60. package/dist/lib/cleanpr/worktree-info.js.map +1 -0
  61. package/dist/lib/cleanpr/worktree-info.test.d.ts +2 -0
  62. package/dist/lib/cleanpr/worktree-info.test.d.ts.map +1 -0
  63. package/dist/lib/cleanpr/worktree-info.test.js +160 -0
  64. package/dist/lib/cleanpr/worktree-info.test.js.map +1 -0
  65. package/dist/lib/colors.test.js +73 -0
  66. package/dist/lib/colors.test.js.map +1 -1
  67. package/dist/lib/config.test.js +79 -2
  68. package/dist/lib/config.test.js.map +1 -1
  69. package/dist/lib/git.d.ts.map +1 -1
  70. package/dist/lib/git.js +4 -3
  71. package/dist/lib/git.js.map +1 -1
  72. package/dist/lib/git.test.js +7 -7
  73. package/dist/lib/git.test.js.map +1 -1
  74. package/dist/lib/github.d.ts.map +1 -1
  75. package/dist/lib/github.js +4 -3
  76. package/dist/lib/github.js.map +1 -1
  77. package/dist/lib/github.test.js +2 -2
  78. package/dist/lib/github.test.js.map +1 -1
  79. package/dist/lib/lswt/args.d.ts +14 -0
  80. package/dist/lib/lswt/args.d.ts.map +1 -0
  81. package/dist/lib/lswt/args.js +67 -0
  82. package/dist/lib/lswt/args.js.map +1 -0
  83. package/dist/lib/lswt/args.test.d.ts +2 -0
  84. package/dist/lib/lswt/args.test.d.ts.map +1 -0
  85. package/dist/lib/lswt/args.test.js +135 -0
  86. package/dist/lib/lswt/args.test.js.map +1 -0
  87. package/dist/lib/lswt/formatters.d.ts +29 -0
  88. package/dist/lib/lswt/formatters.d.ts.map +1 -0
  89. package/dist/lib/lswt/formatters.js +113 -0
  90. package/dist/lib/lswt/formatters.js.map +1 -0
  91. package/dist/lib/lswt/formatters.test.d.ts +2 -0
  92. package/dist/lib/lswt/formatters.test.d.ts.map +1 -0
  93. package/dist/lib/lswt/formatters.test.js +233 -0
  94. package/dist/lib/lswt/formatters.test.js.map +1 -0
  95. package/dist/lib/lswt/index.d.ts +9 -0
  96. package/dist/lib/lswt/index.d.ts.map +1 -0
  97. package/dist/lib/lswt/index.js +9 -0
  98. package/dist/lib/lswt/index.js.map +1 -0
  99. package/dist/lib/lswt/types.d.ts +44 -0
  100. package/dist/lib/lswt/types.d.ts.map +1 -0
  101. package/dist/lib/lswt/types.js +5 -0
  102. package/dist/lib/lswt/types.js.map +1 -0
  103. package/dist/lib/lswt/worktree-info.d.ts +23 -0
  104. package/dist/lib/lswt/worktree-info.d.ts.map +1 -0
  105. package/dist/lib/lswt/worktree-info.js +81 -0
  106. package/dist/lib/lswt/worktree-info.js.map +1 -0
  107. package/dist/lib/lswt/worktree-info.test.d.ts +2 -0
  108. package/dist/lib/lswt/worktree-info.test.d.ts.map +1 -0
  109. package/dist/lib/lswt/worktree-info.test.js +190 -0
  110. package/dist/lib/lswt/worktree-info.test.js.map +1 -0
  111. package/dist/lib/newpr/actions.d.ts +56 -0
  112. package/dist/lib/newpr/actions.d.ts.map +1 -0
  113. package/dist/lib/newpr/actions.js +130 -0
  114. package/dist/lib/newpr/actions.js.map +1 -0
  115. package/dist/lib/newpr/actions.test.d.ts +2 -0
  116. package/dist/lib/newpr/actions.test.d.ts.map +1 -0
  117. package/dist/lib/newpr/actions.test.js +254 -0
  118. package/dist/lib/newpr/actions.test.js.map +1 -0
  119. package/dist/lib/newpr/args.d.ts +17 -0
  120. package/dist/lib/newpr/args.d.ts.map +1 -0
  121. package/dist/lib/newpr/args.js +123 -0
  122. package/dist/lib/newpr/args.js.map +1 -0
  123. package/dist/lib/newpr/args.test.d.ts +2 -0
  124. package/dist/lib/newpr/args.test.d.ts.map +1 -0
  125. package/dist/lib/newpr/args.test.js +271 -0
  126. package/dist/lib/newpr/args.test.js.map +1 -0
  127. package/dist/lib/newpr/index.d.ts +10 -0
  128. package/dist/lib/newpr/index.d.ts.map +1 -0
  129. package/dist/lib/newpr/index.js +8 -0
  130. package/dist/lib/newpr/index.js.map +1 -0
  131. package/dist/lib/newpr/scenario-handler.d.ts +40 -0
  132. package/dist/lib/newpr/scenario-handler.d.ts.map +1 -0
  133. package/dist/lib/newpr/scenario-handler.js +261 -0
  134. package/dist/lib/newpr/scenario-handler.js.map +1 -0
  135. package/dist/lib/newpr/scenario-handler.test.d.ts +2 -0
  136. package/dist/lib/newpr/scenario-handler.test.d.ts.map +1 -0
  137. package/dist/lib/newpr/scenario-handler.test.js +250 -0
  138. package/dist/lib/newpr/scenario-handler.test.js.map +1 -0
  139. package/dist/lib/newpr/types.d.ts +76 -0
  140. package/dist/lib/newpr/types.d.ts.map +1 -0
  141. package/dist/lib/newpr/types.js +5 -0
  142. package/dist/lib/newpr/types.js.map +1 -0
  143. package/dist/lib/state-detection.d.ts.map +1 -1
  144. package/dist/lib/state-detection.js +12 -3
  145. package/dist/lib/state-detection.js.map +1 -1
  146. package/dist/lib/state-detection.test.js +253 -2
  147. package/dist/lib/state-detection.test.js.map +1 -1
  148. package/dist/lib/wtlink/link-configs.d.ts +40 -0
  149. package/dist/lib/wtlink/link-configs.d.ts.map +1 -1
  150. package/dist/lib/wtlink/link-configs.js +126 -11
  151. package/dist/lib/wtlink/link-configs.js.map +1 -1
  152. package/dist/lib/wtlink/link-configs.test.js +237 -84
  153. package/dist/lib/wtlink/link-configs.test.js.map +1 -1
  154. package/dist/lib/wtlink/manage-manifest.d.ts +86 -0
  155. package/dist/lib/wtlink/manage-manifest.d.ts.map +1 -1
  156. package/dist/lib/wtlink/manage-manifest.js +18 -15
  157. package/dist/lib/wtlink/manage-manifest.js.map +1 -1
  158. package/dist/lib/wtlink/manage-manifest.test.d.ts +2 -0
  159. package/dist/lib/wtlink/manage-manifest.test.d.ts.map +1 -0
  160. package/dist/lib/wtlink/manage-manifest.test.js +383 -0
  161. package/dist/lib/wtlink/manage-manifest.test.js.map +1 -0
  162. package/dist/lib/wtlink/validate-manifest.d.ts +27 -0
  163. package/dist/lib/wtlink/validate-manifest.d.ts.map +1 -1
  164. package/dist/lib/wtlink/validate-manifest.js +103 -28
  165. package/dist/lib/wtlink/validate-manifest.js.map +1 -1
  166. package/dist/lib/wtlink/validate-manifest.test.js +170 -65
  167. package/dist/lib/wtlink/validate-manifest.test.js.map +1 -1
  168. package/package.json +1 -1
@@ -0,0 +1,225 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ // Mock modules before importing the CLI
3
+ vi.mock('../lib/git.js', () => ({
4
+ getRepoRoot: vi.fn(),
5
+ removeWorktree: vi.fn(),
6
+ pruneWorktrees: vi.fn(),
7
+ }));
8
+ vi.mock('../lib/github.js', () => ({
9
+ isGhInstalled: vi.fn(),
10
+ }));
11
+ vi.mock('../lib/prompts.js', () => ({
12
+ promptChoice: vi.fn(),
13
+ promptConfirm: vi.fn(),
14
+ }));
15
+ vi.mock('../lib/config.js', () => ({
16
+ loadConfig: vi.fn(),
17
+ }));
18
+ vi.mock('../lib/cleanpr/index.js', () => ({
19
+ parseArgs: vi.fn(),
20
+ getHelpText: vi.fn(),
21
+ gatherPrWorktreeInfo: vi.fn(),
22
+ createDefaultDeps: vi.fn(),
23
+ groupWorktreesByState: vi.fn(),
24
+ getCleanableWorktrees: vi.fn(),
25
+ findWorktreeByPrNumber: vi.fn(),
26
+ cleanWorktree: vi.fn(),
27
+ summarizeResults: vi.fn(),
28
+ }));
29
+ // Import after mocking
30
+ import * as git from '../lib/git.js';
31
+ import * as github from '../lib/github.js';
32
+ import { loadConfig } from '../lib/config.js';
33
+ import * as cleanpr from '../lib/cleanpr/index.js';
34
+ describe('cli/cleanpr', () => {
35
+ let mockConsoleLog;
36
+ let mockConsoleError;
37
+ let mockProcessExit;
38
+ let originalArgv;
39
+ const defaultConfig = {
40
+ baseBranch: 'main',
41
+ worktreePattern: '{repo}.pr{number}',
42
+ worktreeParent: '..',
43
+ draftPr: false,
44
+ sharedRepos: [],
45
+ branchPrefix: 'feature',
46
+ syncPatterns: [],
47
+ };
48
+ const makeWorktreeInfo = (overrides = {}) => ({
49
+ path: '/repo.pr123',
50
+ branch: 'feature-1',
51
+ commit: 'abc123',
52
+ prNumber: 123,
53
+ prState: 'MERGED',
54
+ hasChanges: false,
55
+ ...overrides,
56
+ });
57
+ beforeEach(() => {
58
+ vi.resetAllMocks();
59
+ mockConsoleLog = vi.spyOn(console, 'log').mockImplementation(() => { });
60
+ mockConsoleError = vi.spyOn(console, 'error').mockImplementation(() => { });
61
+ // @ts-expect-error - process.exit mock type is complex
62
+ mockProcessExit = vi.spyOn(process, 'exit').mockImplementation((() => { }));
63
+ originalArgv = process.argv;
64
+ });
65
+ afterEach(() => {
66
+ mockConsoleLog.mockRestore();
67
+ mockConsoleError.mockRestore();
68
+ mockProcessExit.mockRestore();
69
+ process.argv = originalArgv;
70
+ vi.resetModules();
71
+ });
72
+ async function runCli(args = []) {
73
+ process.argv = ['node', 'cleanpr', ...args];
74
+ await import('./cleanpr.js');
75
+ await new Promise((resolve) => setTimeout(resolve, 10));
76
+ }
77
+ describe('help option', () => {
78
+ it('prints help and exits 0 on --help', async () => {
79
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({ kind: 'help' });
80
+ vi.mocked(cleanpr.getHelpText).mockReturnValue('Usage: cleanpr [options]');
81
+ await runCli(['--help']);
82
+ expect(cleanpr.getHelpText).toHaveBeenCalled();
83
+ expect(mockConsoleLog).toHaveBeenCalledWith('Usage: cleanpr [options]');
84
+ expect(mockProcessExit).toHaveBeenCalledWith(0);
85
+ });
86
+ });
87
+ describe('error handling', () => {
88
+ it('prints error and exits 1 on parse error', async () => {
89
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
90
+ kind: 'error',
91
+ message: 'Invalid option: --invalid',
92
+ });
93
+ await runCli(['--invalid']);
94
+ expect(mockConsoleError).toHaveBeenCalled();
95
+ expect(mockProcessExit).toHaveBeenCalledWith(1);
96
+ });
97
+ it('exits 1 when gh not installed', async () => {
98
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
99
+ kind: 'success',
100
+ prNumber: null,
101
+ options: { all: false, force: false, deleteRemote: false, interactive: true },
102
+ });
103
+ vi.mocked(github.isGhInstalled).mockReturnValue(false);
104
+ await runCli([]);
105
+ expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('GitHub CLI'));
106
+ expect(mockProcessExit).toHaveBeenCalledWith(1);
107
+ });
108
+ it('exits 1 when not in git repo', async () => {
109
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
110
+ kind: 'success',
111
+ prNumber: null,
112
+ options: { all: false, force: false, deleteRemote: false, interactive: true },
113
+ });
114
+ vi.mocked(github.isGhInstalled).mockReturnValue(true);
115
+ vi.mocked(git.getRepoRoot).mockReturnValue('');
116
+ await runCli([]);
117
+ expect(mockConsoleError).toHaveBeenCalled();
118
+ expect(mockProcessExit).toHaveBeenCalledWith(1);
119
+ });
120
+ });
121
+ describe('interactive mode', () => {
122
+ it('shows info message when no PR worktrees found', async () => {
123
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
124
+ kind: 'success',
125
+ prNumber: null,
126
+ options: { all: false, force: false, deleteRemote: false, interactive: true },
127
+ });
128
+ vi.mocked(github.isGhInstalled).mockReturnValue(true);
129
+ vi.mocked(git.getRepoRoot).mockReturnValue('/repo');
130
+ vi.mocked(loadConfig).mockReturnValue(defaultConfig);
131
+ vi.mocked(cleanpr.createDefaultDeps).mockReturnValue({});
132
+ vi.mocked(cleanpr.gatherPrWorktreeInfo).mockResolvedValue([]);
133
+ vi.mocked(cleanpr.groupWorktreesByState).mockReturnValue({
134
+ merged: [],
135
+ closed: [],
136
+ open: [],
137
+ unknown: [],
138
+ });
139
+ vi.mocked(cleanpr.getCleanableWorktrees).mockReturnValue([]);
140
+ await runCli([]);
141
+ expect(mockConsoleLog).toHaveBeenCalledWith(expect.stringContaining('No PR worktrees'));
142
+ });
143
+ });
144
+ describe('--all flag', () => {
145
+ it('cleans all merged/closed worktrees in batch mode', async () => {
146
+ const mockWorktrees = [makeWorktreeInfo()];
147
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
148
+ kind: 'success',
149
+ prNumber: null,
150
+ options: { all: true, force: false, deleteRemote: false, interactive: false },
151
+ });
152
+ vi.mocked(github.isGhInstalled).mockReturnValue(true);
153
+ vi.mocked(git.getRepoRoot).mockReturnValue('/repo');
154
+ vi.mocked(loadConfig).mockReturnValue(defaultConfig);
155
+ vi.mocked(cleanpr.createDefaultDeps).mockReturnValue({});
156
+ vi.mocked(cleanpr.gatherPrWorktreeInfo).mockResolvedValue(mockWorktrees);
157
+ vi.mocked(cleanpr.getCleanableWorktrees).mockReturnValue(mockWorktrees);
158
+ vi.mocked(cleanpr.cleanWorktree).mockReturnValue({
159
+ success: true,
160
+ message: 'Cleaned PR #123',
161
+ prNumber: 123,
162
+ });
163
+ vi.mocked(cleanpr.summarizeResults).mockReturnValue({ cleaned: 1, total: 1, failed: 0 });
164
+ await runCli(['--all']);
165
+ expect(cleanpr.cleanWorktree).toHaveBeenCalled();
166
+ expect(cleanpr.summarizeResults).toHaveBeenCalled();
167
+ });
168
+ it('shows info when no cleanable worktrees in --all mode', async () => {
169
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
170
+ kind: 'success',
171
+ prNumber: null,
172
+ options: { all: true, force: false, deleteRemote: false, interactive: false },
173
+ });
174
+ vi.mocked(github.isGhInstalled).mockReturnValue(true);
175
+ vi.mocked(git.getRepoRoot).mockReturnValue('/repo');
176
+ vi.mocked(loadConfig).mockReturnValue(defaultConfig);
177
+ vi.mocked(cleanpr.createDefaultDeps).mockReturnValue({});
178
+ vi.mocked(cleanpr.gatherPrWorktreeInfo).mockResolvedValue([]);
179
+ vi.mocked(cleanpr.getCleanableWorktrees).mockReturnValue([]);
180
+ await runCli(['--all']);
181
+ expect(mockConsoleLog).toHaveBeenCalledWith(expect.stringContaining('No merged or closed'));
182
+ });
183
+ });
184
+ describe('specific PR mode', () => {
185
+ it('cleans specific PR worktree by number', async () => {
186
+ const mockWorktree = makeWorktreeInfo({ prNumber: 42 });
187
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
188
+ kind: 'success',
189
+ prNumber: 42,
190
+ options: { all: false, force: false, deleteRemote: false, interactive: true },
191
+ });
192
+ vi.mocked(github.isGhInstalled).mockReturnValue(true);
193
+ vi.mocked(git.getRepoRoot).mockReturnValue('/repo');
194
+ vi.mocked(loadConfig).mockReturnValue(defaultConfig);
195
+ vi.mocked(cleanpr.createDefaultDeps).mockReturnValue({});
196
+ vi.mocked(cleanpr.gatherPrWorktreeInfo).mockResolvedValue([mockWorktree]);
197
+ vi.mocked(cleanpr.findWorktreeByPrNumber).mockReturnValue(mockWorktree);
198
+ vi.mocked(cleanpr.cleanWorktree).mockReturnValue({
199
+ success: true,
200
+ message: 'Cleaned PR #42',
201
+ prNumber: 42,
202
+ });
203
+ await runCli(['42']);
204
+ expect(cleanpr.findWorktreeByPrNumber).toHaveBeenCalledWith([mockWorktree], 42);
205
+ expect(cleanpr.cleanWorktree).toHaveBeenCalled();
206
+ });
207
+ it('exits 1 when specific PR not found', async () => {
208
+ vi.mocked(cleanpr.parseArgs).mockReturnValue({
209
+ kind: 'success',
210
+ prNumber: 999,
211
+ options: { all: false, force: false, deleteRemote: false, interactive: true },
212
+ });
213
+ vi.mocked(github.isGhInstalled).mockReturnValue(true);
214
+ vi.mocked(git.getRepoRoot).mockReturnValue('/repo');
215
+ vi.mocked(loadConfig).mockReturnValue(defaultConfig);
216
+ vi.mocked(cleanpr.createDefaultDeps).mockReturnValue({});
217
+ vi.mocked(cleanpr.gatherPrWorktreeInfo).mockResolvedValue([]);
218
+ vi.mocked(cleanpr.findWorktreeByPrNumber).mockReturnValue(undefined);
219
+ await runCli(['999']);
220
+ expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('No worktree found'));
221
+ expect(mockProcessExit).toHaveBeenCalledWith(1);
222
+ });
223
+ });
224
+ });
225
+ //# sourceMappingURL=cleanpr.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanpr.test.js","sourceRoot":"","sources":["../../src/cli/cleanpr.test.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,7 @@
2
2
  /**
3
3
  * lswt - List git worktrees with PR status
4
4
  *
5
- * Usage:
6
- * lswt List all worktrees
7
- * lswt --status Include PR status (open/merged/closed)
8
- * lswt --json Output as JSON
5
+ * CLI thin wrapper - orchestration and side effects only
9
6
  */
10
7
  export {};
11
8
  //# sourceMappingURL=lswt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lswt.d.ts","sourceRoot":"","sources":["../../src/cli/lswt.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
1
+ {"version":3,"file":"lswt.d.ts","sourceRoot":"","sources":["../../src/cli/lswt.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
package/dist/cli/lswt.js CHANGED
@@ -2,220 +2,22 @@
2
2
  /**
3
3
  * lswt - List git worktrees with PR status
4
4
  *
5
- * Usage:
6
- * lswt List all worktrees
7
- * lswt --status Include PR status (open/merged/closed)
8
- * lswt --json Output as JSON
5
+ * CLI thin wrapper - orchestration and side effects only
9
6
  */
10
7
  import * as path from 'path';
11
8
  import * as git from '../lib/git.js';
12
9
  import * as github from '../lib/github.js';
13
10
  import * as colors from '../lib/colors.js';
14
- import { loadConfig } from '../lib/config.js';
15
- function parseArgs() {
16
- const args = process.argv.slice(2);
17
- const options = {
18
- showStatus: false,
19
- json: false,
20
- verbose: false,
21
- };
22
- for (const arg of args) {
23
- switch (arg) {
24
- case '-h':
25
- case '--help':
26
- printHelp();
27
- process.exit(0);
28
- break;
29
- case '-s':
30
- case '--status':
31
- options.showStatus = true;
32
- break;
33
- case '-j':
34
- case '--json':
35
- options.json = true;
36
- break;
37
- case '-v':
38
- case '--verbose':
39
- options.verbose = true;
40
- break;
41
- default:
42
- if (arg.startsWith('-')) {
43
- console.error(colors.error(`Unknown option: ${arg}`));
44
- process.exit(1);
45
- }
46
- }
47
- }
48
- return options;
49
- }
50
- function printHelp() {
51
- console.log(`
52
- ${colors.bold('lswt')} - List git worktrees with PR status
53
-
54
- ${colors.bold('USAGE')}
55
- lswt [options]
56
-
57
- ${colors.bold('OPTIONS')}
58
- -s, --status Include PR status from GitHub (open/merged/closed)
59
- -j, --json Output as JSON
60
- -v, --verbose Show more details (commit hashes, full paths)
61
- -h, --help Show this help message
62
-
63
- ${colors.bold('EXAMPLES')}
64
- lswt # List all worktrees
65
- lswt --status # Include PR status (requires gh cli)
66
- lswt --json # Output as JSON for scripting
67
-
68
- ${colors.bold('OUTPUT')}
69
- Shows each worktree with:
70
- - Type indicator: [main], [PR #123 OPEN], [branch], [detached]
71
- - Branch name
72
- - Path (relative or absolute based on context)
73
- - Uncommitted changes indicator
74
- `);
75
- }
76
- /**
77
- * Extract PR number from worktree path
78
- */
79
- function extractPrNumber(worktreePath, config) {
80
- const name = path.basename(worktreePath);
81
- // Try common patterns
82
- const patterns = [/\.pr(\d+)$/, /\.pr-(\d+)$/, /-pr(\d+)$/, /_pr(\d+)$/];
83
- for (const p of patterns) {
84
- const match = name.match(p);
85
- if (match) {
86
- return parseInt(match[1], 10);
87
- }
88
- }
89
- return null;
90
- }
91
- /**
92
- * Check if worktree is the main/bare worktree
93
- */
94
- function isMainWorktree(worktreePath, repoRoot) {
95
- return path.resolve(worktreePath) === path.resolve(repoRoot);
96
- }
97
- /**
98
- * Check for uncommitted changes in a worktree
99
- */
100
- function hasUncommittedChanges(worktreePath) {
101
- try {
102
- const { execSync } = require('child_process');
103
- const status = execSync('git status --porcelain', {
104
- cwd: worktreePath,
105
- encoding: 'utf-8',
106
- stdio: ['pipe', 'pipe', 'pipe'],
107
- }).trim();
108
- return status.length > 0;
109
- }
110
- catch {
111
- return false;
112
- }
113
- }
114
- /**
115
- * Get PR state from GitHub
116
- */
117
- async function getPrState(prNumber) {
118
- try {
119
- const pr = await github.getPr(prNumber);
120
- if (!pr) {
121
- return null;
122
- }
123
- // pr.state is already 'OPEN' | 'CLOSED' | 'MERGED'
124
- return pr.state;
125
- }
126
- catch {
127
- return null;
128
- }
129
- }
130
- /**
131
- * Format type label with colors
132
- */
133
- function formatTypeLabel(display) {
134
- switch (display.type) {
135
- case 'main':
136
- return colors.cyan('[main]');
137
- case 'pr':
138
- const prLabel = `PR #${display.prNumber}`;
139
- if (display.prState === 'OPEN') {
140
- return colors.green(`[${prLabel} OPEN]`);
141
- }
142
- else if (display.prState === 'MERGED') {
143
- return colors.yellow(`[${prLabel} MERGED]`);
144
- }
145
- else if (display.prState === 'CLOSED') {
146
- return colors.red(`[${prLabel} CLOSED]`);
147
- }
148
- else {
149
- return colors.dim(`[${prLabel}]`);
150
- }
151
- case 'branch':
152
- return colors.blue('[branch]');
153
- case 'detached':
154
- return colors.dim('[detached]');
155
- default:
156
- return colors.dim('[unknown]');
157
- }
158
- }
159
- /**
160
- * Gather worktree information
161
- */
162
- async function gatherWorktreeInfo(repoRoot, config, options) {
163
- const worktrees = await git.listWorktrees();
164
- const result = [];
165
- for (const wt of worktrees) {
166
- const name = path.basename(wt.path);
167
- const prNumber = extractPrNumber(wt.path, config);
168
- const isMain = isMainWorktree(wt.path, repoRoot);
169
- const hasChanges = hasUncommittedChanges(wt.path);
170
- let type;
171
- let prState = null;
172
- if (isMain) {
173
- type = 'main';
174
- }
175
- else if (prNumber !== null) {
176
- type = 'pr';
177
- if (options.showStatus) {
178
- prState = await getPrState(prNumber);
179
- }
180
- }
181
- else if (wt.branch) {
182
- type = 'branch';
183
- }
184
- else {
185
- type = 'detached';
186
- }
187
- result.push({
188
- path: wt.path,
189
- name,
190
- branch: wt.branch,
191
- commit: wt.commit,
192
- type,
193
- prNumber,
194
- prState,
195
- hasChanges,
196
- });
197
- }
198
- // Sort: main first, then PRs by number, then others
199
- result.sort((a, b) => {
200
- if (a.type === 'main')
201
- return -1;
202
- if (b.type === 'main')
203
- return 1;
204
- if (a.type === 'pr' && b.type === 'pr') {
205
- return (a.prNumber || 0) - (b.prNumber || 0);
206
- }
207
- if (a.type === 'pr')
208
- return -1;
209
- if (b.type === 'pr')
210
- return 1;
211
- return a.name.localeCompare(b.name);
212
- });
213
- return result;
214
- }
215
- /**
216
- * Print worktrees in table format
217
- */
218
- function printTable(worktrees, options) {
11
+ import { parseArgs, getHelpText, formatTypeLabel, getDisplayPath, formatJsonOutput, gatherWorktreeInfo, createDefaultDeps, } from '../lib/lswt/index.js';
12
+ const colorMap = {
13
+ cyan: colors.cyan,
14
+ green: colors.green,
15
+ yellow: colors.yellow,
16
+ red: colors.red,
17
+ blue: colors.blue,
18
+ dim: colors.dim,
19
+ };
20
+ function printTable(worktrees, options, cwd) {
219
21
  if (worktrees.length === 0) {
220
22
  console.log(colors.info('No worktrees found.'));
221
23
  return;
@@ -225,26 +27,16 @@ function printTable(worktrees, options) {
225
27
  console.log(colors.bold(`${repoName} worktrees:`));
226
28
  console.log('');
227
29
  for (const wt of worktrees) {
228
- const typeLabel = formatTypeLabel(wt);
30
+ const { text, color } = formatTypeLabel(wt);
31
+ const typeLabel = colorMap[color](text);
229
32
  const changeIndicator = wt.hasChanges ? colors.red(' *') : '';
230
33
  console.log(` ${typeLabel}${changeIndicator}`);
231
34
  console.log(` Branch: ${wt.branch || colors.dim('(detached)')}`);
35
+ const displayPath = getDisplayPath(wt.path, cwd, options.verbose);
36
+ console.log(` Path: ${displayPath}`);
232
37
  if (options.verbose) {
233
- console.log(` Path: ${wt.path}`);
234
38
  console.log(` Commit: ${colors.dim(wt.commit)}`);
235
39
  }
236
- else {
237
- // Show relative path if possible
238
- const cwd = process.cwd();
239
- let displayPath = wt.path;
240
- if (wt.path.startsWith(cwd)) {
241
- displayPath = path.relative(cwd, wt.path) || '.';
242
- }
243
- else if (wt.path.startsWith(path.dirname(cwd))) {
244
- displayPath = path.relative(path.dirname(cwd), wt.path);
245
- }
246
- console.log(` Path: ${displayPath}`);
247
- }
248
40
  console.log('');
249
41
  }
250
42
  // Summary
@@ -252,36 +44,26 @@ function printTable(worktrees, options) {
252
44
  const openCount = worktrees.filter((w) => w.prState === 'OPEN').length;
253
45
  const changesCount = worktrees.filter((w) => w.hasChanges).length;
254
46
  const parts = [`${worktrees.length} worktrees`];
255
- if (prCount > 0) {
47
+ if (prCount > 0)
256
48
  parts.push(`${prCount} PRs`);
257
- }
258
- if (openCount > 0) {
49
+ if (openCount > 0)
259
50
  parts.push(`${openCount} open`);
260
- }
261
- if (changesCount > 0) {
51
+ if (changesCount > 0)
262
52
  parts.push(colors.red(`${changesCount} with changes`));
263
- }
264
53
  console.log(colors.dim(parts.join(' · ')));
265
54
  console.log('');
266
55
  }
267
- /**
268
- * Print worktrees as JSON
269
- */
270
- function printJson(worktrees) {
271
- const output = worktrees.map((wt) => ({
272
- path: wt.path,
273
- name: wt.name,
274
- branch: wt.branch,
275
- commit: wt.commit,
276
- type: wt.type,
277
- prNumber: wt.prNumber,
278
- prState: wt.prState,
279
- hasChanges: wt.hasChanges,
280
- }));
281
- console.log(JSON.stringify(output, null, 2));
282
- }
283
56
  async function main() {
284
- const options = parseArgs();
57
+ const result = parseArgs(process.argv.slice(2));
58
+ if (result.kind === 'help') {
59
+ console.log(getHelpText());
60
+ process.exit(0);
61
+ }
62
+ if (result.kind === 'error') {
63
+ console.error(colors.error(result.message));
64
+ process.exit(1);
65
+ }
66
+ const options = result.options;
285
67
  // Check for gh cli if status requested
286
68
  if (options.showStatus && !github.isGhInstalled()) {
287
69
  console.error(colors.warning('GitHub CLI (gh) not installed. PR status will not be shown.'));
@@ -294,16 +76,15 @@ async function main() {
294
76
  console.error(colors.error('Not in a git repository.'));
295
77
  process.exit(1);
296
78
  }
297
- // Load configuration
298
- const config = loadConfig(repoRoot);
299
79
  // Gather worktree info
300
- const worktrees = await gatherWorktreeInfo(repoRoot, config, options);
80
+ const deps = createDefaultDeps();
81
+ const worktrees = await gatherWorktreeInfo(repoRoot, options, deps);
301
82
  // Output
302
83
  if (options.json) {
303
- printJson(worktrees);
84
+ console.log(formatJsonOutput(worktrees));
304
85
  }
305
86
  else {
306
- printTable(worktrees, options);
87
+ printTable(worktrees, options, process.cwd());
307
88
  }
308
89
  }
309
90
  main().catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"lswt.js","sourceRoot":"","sources":["../../src/cli/lswt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lswt.js","sourceRoot":"","sources":["../../src/cli/lswt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lswt.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lswt.test.d.ts","sourceRoot":"","sources":["../../src/cli/lswt.test.ts"],"names":[],"mappings":""}