@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.
- package/README.md +4 -0
- package/dist/cli/cleanpr.d.ts +1 -6
- package/dist/cli/cleanpr.d.ts.map +1 -1
- package/dist/cli/cleanpr.js +110 -302
- package/dist/cli/cleanpr.js.map +1 -1
- package/dist/cli/cleanpr.test.d.ts +2 -0
- package/dist/cli/cleanpr.test.d.ts.map +1 -0
- package/dist/cli/cleanpr.test.js +225 -0
- package/dist/cli/cleanpr.test.js.map +1 -0
- package/dist/cli/lswt.d.ts +1 -4
- package/dist/cli/lswt.d.ts.map +1 -1
- package/dist/cli/lswt.js +32 -251
- package/dist/cli/lswt.js.map +1 -1
- package/dist/cli/lswt.test.d.ts +2 -0
- package/dist/cli/lswt.test.d.ts.map +1 -0
- package/dist/cli/lswt.test.js +165 -0
- package/dist/cli/lswt.test.js.map +1 -0
- package/dist/cli/newpr.d.ts +1 -4
- package/dist/cli/newpr.d.ts.map +1 -1
- package/dist/cli/newpr.js +98 -493
- package/dist/cli/newpr.js.map +1 -1
- package/dist/cli/newpr.test.d.ts +2 -0
- package/dist/cli/newpr.test.d.ts.map +1 -0
- package/dist/cli/newpr.test.js +329 -0
- package/dist/cli/newpr.test.js.map +1 -0
- package/dist/cli/wtlink.test.d.ts +2 -0
- package/dist/cli/wtlink.test.d.ts.map +1 -0
- package/dist/cli/wtlink.test.js +148 -0
- package/dist/cli/wtlink.test.js.map +1 -0
- package/dist/e2e/cli.e2e.test.js +44 -1
- package/dist/e2e/cli.e2e.test.js.map +1 -1
- package/dist/integration/git.integration.test.js.map +1 -1
- package/dist/lib/cleanpr/args.d.ts +14 -0
- package/dist/lib/cleanpr/args.d.ts.map +1 -0
- package/dist/lib/cleanpr/args.js +82 -0
- package/dist/lib/cleanpr/args.js.map +1 -0
- package/dist/lib/cleanpr/args.test.d.ts +2 -0
- package/dist/lib/cleanpr/args.test.d.ts.map +1 -0
- package/dist/lib/cleanpr/args.test.js +192 -0
- package/dist/lib/cleanpr/args.test.js.map +1 -0
- package/dist/lib/cleanpr/cleanup.d.ts +61 -0
- package/dist/lib/cleanpr/cleanup.d.ts.map +1 -0
- package/dist/lib/cleanpr/cleanup.js +97 -0
- package/dist/lib/cleanpr/cleanup.js.map +1 -0
- package/dist/lib/cleanpr/cleanup.test.d.ts +2 -0
- package/dist/lib/cleanpr/cleanup.test.d.ts.map +1 -0
- package/dist/lib/cleanpr/cleanup.test.js +264 -0
- package/dist/lib/cleanpr/cleanup.test.js.map +1 -0
- package/dist/lib/cleanpr/index.d.ts +10 -0
- package/dist/lib/cleanpr/index.d.ts.map +1 -0
- package/dist/lib/cleanpr/index.js +8 -0
- package/dist/lib/cleanpr/index.js.map +1 -0
- package/dist/lib/cleanpr/types.d.ts +49 -0
- package/dist/lib/cleanpr/types.d.ts.map +1 -0
- package/dist/lib/cleanpr/types.js +5 -0
- package/dist/lib/cleanpr/types.js.map +1 -0
- package/dist/lib/cleanpr/worktree-info.d.ts +27 -0
- package/dist/lib/cleanpr/worktree-info.d.ts.map +1 -0
- package/dist/lib/cleanpr/worktree-info.js +95 -0
- package/dist/lib/cleanpr/worktree-info.js.map +1 -0
- package/dist/lib/cleanpr/worktree-info.test.d.ts +2 -0
- package/dist/lib/cleanpr/worktree-info.test.d.ts.map +1 -0
- package/dist/lib/cleanpr/worktree-info.test.js +160 -0
- package/dist/lib/cleanpr/worktree-info.test.js.map +1 -0
- package/dist/lib/colors.test.js +73 -0
- package/dist/lib/colors.test.js.map +1 -1
- package/dist/lib/config.test.js +79 -2
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +4 -3
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/git.test.js +7 -7
- package/dist/lib/git.test.js.map +1 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +4 -3
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/github.test.js +2 -2
- package/dist/lib/github.test.js.map +1 -1
- package/dist/lib/lswt/args.d.ts +14 -0
- package/dist/lib/lswt/args.d.ts.map +1 -0
- package/dist/lib/lswt/args.js +67 -0
- package/dist/lib/lswt/args.js.map +1 -0
- package/dist/lib/lswt/args.test.d.ts +2 -0
- package/dist/lib/lswt/args.test.d.ts.map +1 -0
- package/dist/lib/lswt/args.test.js +135 -0
- package/dist/lib/lswt/args.test.js.map +1 -0
- package/dist/lib/lswt/formatters.d.ts +29 -0
- package/dist/lib/lswt/formatters.d.ts.map +1 -0
- package/dist/lib/lswt/formatters.js +113 -0
- package/dist/lib/lswt/formatters.js.map +1 -0
- package/dist/lib/lswt/formatters.test.d.ts +2 -0
- package/dist/lib/lswt/formatters.test.d.ts.map +1 -0
- package/dist/lib/lswt/formatters.test.js +233 -0
- package/dist/lib/lswt/formatters.test.js.map +1 -0
- package/dist/lib/lswt/index.d.ts +9 -0
- package/dist/lib/lswt/index.d.ts.map +1 -0
- package/dist/lib/lswt/index.js +9 -0
- package/dist/lib/lswt/index.js.map +1 -0
- package/dist/lib/lswt/types.d.ts +44 -0
- package/dist/lib/lswt/types.d.ts.map +1 -0
- package/dist/lib/lswt/types.js +5 -0
- package/dist/lib/lswt/types.js.map +1 -0
- package/dist/lib/lswt/worktree-info.d.ts +23 -0
- package/dist/lib/lswt/worktree-info.d.ts.map +1 -0
- package/dist/lib/lswt/worktree-info.js +81 -0
- package/dist/lib/lswt/worktree-info.js.map +1 -0
- package/dist/lib/lswt/worktree-info.test.d.ts +2 -0
- package/dist/lib/lswt/worktree-info.test.d.ts.map +1 -0
- package/dist/lib/lswt/worktree-info.test.js +190 -0
- package/dist/lib/lswt/worktree-info.test.js.map +1 -0
- package/dist/lib/newpr/actions.d.ts +56 -0
- package/dist/lib/newpr/actions.d.ts.map +1 -0
- package/dist/lib/newpr/actions.js +130 -0
- package/dist/lib/newpr/actions.js.map +1 -0
- package/dist/lib/newpr/actions.test.d.ts +2 -0
- package/dist/lib/newpr/actions.test.d.ts.map +1 -0
- package/dist/lib/newpr/actions.test.js +254 -0
- package/dist/lib/newpr/actions.test.js.map +1 -0
- package/dist/lib/newpr/args.d.ts +17 -0
- package/dist/lib/newpr/args.d.ts.map +1 -0
- package/dist/lib/newpr/args.js +123 -0
- package/dist/lib/newpr/args.js.map +1 -0
- package/dist/lib/newpr/args.test.d.ts +2 -0
- package/dist/lib/newpr/args.test.d.ts.map +1 -0
- package/dist/lib/newpr/args.test.js +271 -0
- package/dist/lib/newpr/args.test.js.map +1 -0
- package/dist/lib/newpr/index.d.ts +10 -0
- package/dist/lib/newpr/index.d.ts.map +1 -0
- package/dist/lib/newpr/index.js +8 -0
- package/dist/lib/newpr/index.js.map +1 -0
- package/dist/lib/newpr/scenario-handler.d.ts +40 -0
- package/dist/lib/newpr/scenario-handler.d.ts.map +1 -0
- package/dist/lib/newpr/scenario-handler.js +261 -0
- package/dist/lib/newpr/scenario-handler.js.map +1 -0
- package/dist/lib/newpr/scenario-handler.test.d.ts +2 -0
- package/dist/lib/newpr/scenario-handler.test.d.ts.map +1 -0
- package/dist/lib/newpr/scenario-handler.test.js +250 -0
- package/dist/lib/newpr/scenario-handler.test.js.map +1 -0
- package/dist/lib/newpr/types.d.ts +76 -0
- package/dist/lib/newpr/types.d.ts.map +1 -0
- package/dist/lib/newpr/types.js +5 -0
- package/dist/lib/newpr/types.js.map +1 -0
- package/dist/lib/state-detection.d.ts.map +1 -1
- package/dist/lib/state-detection.js +12 -3
- package/dist/lib/state-detection.js.map +1 -1
- package/dist/lib/state-detection.test.js +253 -2
- package/dist/lib/state-detection.test.js.map +1 -1
- package/dist/lib/wtlink/link-configs.d.ts +40 -0
- package/dist/lib/wtlink/link-configs.d.ts.map +1 -1
- package/dist/lib/wtlink/link-configs.js +126 -11
- package/dist/lib/wtlink/link-configs.js.map +1 -1
- package/dist/lib/wtlink/link-configs.test.js +237 -84
- package/dist/lib/wtlink/link-configs.test.js.map +1 -1
- package/dist/lib/wtlink/manage-manifest.d.ts +86 -0
- package/dist/lib/wtlink/manage-manifest.d.ts.map +1 -1
- package/dist/lib/wtlink/manage-manifest.js +18 -15
- package/dist/lib/wtlink/manage-manifest.js.map +1 -1
- package/dist/lib/wtlink/manage-manifest.test.d.ts +2 -0
- package/dist/lib/wtlink/manage-manifest.test.d.ts.map +1 -0
- package/dist/lib/wtlink/manage-manifest.test.js +383 -0
- package/dist/lib/wtlink/manage-manifest.test.js.map +1 -0
- package/dist/lib/wtlink/validate-manifest.d.ts +27 -0
- package/dist/lib/wtlink/validate-manifest.d.ts.map +1 -1
- package/dist/lib/wtlink/validate-manifest.js +103 -28
- package/dist/lib/wtlink/validate-manifest.js.map +1 -1
- package/dist/lib/wtlink/validate-manifest.test.js +170 -65
- package/dist/lib/wtlink/validate-manifest.test.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# git-worktree-tools
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@camaradesuk/git-worktree-tools)
|
|
4
|
+
[](https://github.com/camaradesuk/git-worktree-tools/actions/workflows/ci.yml)
|
|
5
|
+
[](https://codecov.io/gh/camaradesuk/git-worktree-tools)
|
|
6
|
+
|
|
3
7
|
Cross-platform CLI tools for git worktree workflow management. Create PRs with dedicated worktrees, sync gitignored files, and manage your development workflow.
|
|
4
8
|
|
|
5
9
|
## Features
|
package/dist/cli/cleanpr.d.ts
CHANGED
|
@@ -2,12 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* cleanpr - Clean up PR worktrees after merge/close
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* cleanpr # Interactive cleanup of merged/closed PRs
|
|
7
|
-
* cleanpr <PR_NUMBER> # Clean specific PR worktree
|
|
8
|
-
* cleanpr --all # Clean all merged/closed PRs
|
|
9
|
-
* cleanpr <PR_NUMBER> -r # Also delete remote branch
|
|
10
|
-
* cleanpr <PR_NUMBER> -f # Force removal with uncommitted changes
|
|
5
|
+
* CLI thin wrapper - orchestration and side effects only
|
|
11
6
|
*/
|
|
12
7
|
export {};
|
|
13
8
|
//# sourceMappingURL=cleanpr.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanpr.d.ts","sourceRoot":"","sources":["../../src/cli/cleanpr.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cleanpr.d.ts","sourceRoot":"","sources":["../../src/cli/cleanpr.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
package/dist/cli/cleanpr.js
CHANGED
|
@@ -2,12 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* cleanpr - Clean up PR worktrees after merge/close
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* cleanpr # Interactive cleanup of merged/closed PRs
|
|
7
|
-
* cleanpr <PR_NUMBER> # Clean specific PR worktree
|
|
8
|
-
* cleanpr --all # Clean all merged/closed PRs
|
|
9
|
-
* cleanpr <PR_NUMBER> -r # Also delete remote branch
|
|
10
|
-
* cleanpr <PR_NUMBER> -f # Force removal with uncommitted changes
|
|
5
|
+
* CLI thin wrapper - orchestration and side effects only
|
|
11
6
|
*/
|
|
12
7
|
import { execSync } from 'child_process';
|
|
13
8
|
import * as path from 'path';
|
|
@@ -16,302 +11,95 @@ import * as github from '../lib/github.js';
|
|
|
16
11
|
import * as prompts from '../lib/prompts.js';
|
|
17
12
|
import * as colors from '../lib/colors.js';
|
|
18
13
|
import { loadConfig } from '../lib/config.js';
|
|
19
|
-
|
|
20
|
-
const args = process.argv.slice(2);
|
|
21
|
-
let prNumber = null;
|
|
22
|
-
const options = {
|
|
23
|
-
deleteRemote: false,
|
|
24
|
-
force: false,
|
|
25
|
-
all: false,
|
|
26
|
-
interactive: true,
|
|
27
|
-
};
|
|
28
|
-
let i = 0;
|
|
29
|
-
while (i < args.length) {
|
|
30
|
-
const arg = args[i];
|
|
31
|
-
switch (arg) {
|
|
32
|
-
case '-h':
|
|
33
|
-
case '--help':
|
|
34
|
-
printHelp();
|
|
35
|
-
process.exit(0);
|
|
36
|
-
break;
|
|
37
|
-
case '-r':
|
|
38
|
-
case '--remote':
|
|
39
|
-
options.deleteRemote = true;
|
|
40
|
-
break;
|
|
41
|
-
case '-f':
|
|
42
|
-
case '--force':
|
|
43
|
-
options.force = true;
|
|
44
|
-
break;
|
|
45
|
-
case '-a':
|
|
46
|
-
case '--all':
|
|
47
|
-
options.all = true;
|
|
48
|
-
options.interactive = false;
|
|
49
|
-
break;
|
|
50
|
-
default:
|
|
51
|
-
if (arg.startsWith('-')) {
|
|
52
|
-
console.error(colors.error(`Unknown option: ${arg}`));
|
|
53
|
-
process.exit(1);
|
|
54
|
-
}
|
|
55
|
-
// Must be PR number
|
|
56
|
-
const num = parseInt(arg, 10);
|
|
57
|
-
if (isNaN(num)) {
|
|
58
|
-
console.error(colors.error(`Invalid PR number: ${arg}`));
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
prNumber = num;
|
|
62
|
-
options.interactive = false;
|
|
63
|
-
}
|
|
64
|
-
i++;
|
|
65
|
-
}
|
|
66
|
-
return { prNumber, options };
|
|
67
|
-
}
|
|
68
|
-
function printHelp() {
|
|
69
|
-
console.log(`
|
|
70
|
-
${colors.bold('cleanpr')} - Clean up PR worktrees after merge/close
|
|
71
|
-
|
|
72
|
-
${colors.bold('USAGE')}
|
|
73
|
-
cleanpr Interactive cleanup of merged/closed PRs
|
|
74
|
-
cleanpr <PR_NUMBER> Clean specific PR worktree
|
|
75
|
-
cleanpr --all Clean all merged/closed PRs automatically
|
|
76
|
-
cleanpr <PR_NUMBER> [options] Clean with options
|
|
77
|
-
|
|
78
|
-
${colors.bold('OPTIONS')}
|
|
79
|
-
-r, --remote Also delete the remote branch
|
|
80
|
-
-f, --force Force removal even if worktree has uncommitted changes
|
|
81
|
-
-a, --all Clean all merged/closed PR worktrees (non-interactive)
|
|
82
|
-
-h, --help Show this help message
|
|
83
|
-
|
|
84
|
-
${colors.bold('EXAMPLES')}
|
|
85
|
-
cleanpr # Interactive mode - select worktrees to clean
|
|
86
|
-
cleanpr 2245 # Remove worktree and local branch for PR #2245
|
|
87
|
-
cleanpr 2245 --remote # Also delete remote branch
|
|
88
|
-
cleanpr 2245 -f -r # Force cleanup and delete remote
|
|
89
|
-
cleanpr --all # Clean all merged/closed PRs
|
|
90
|
-
|
|
91
|
-
${colors.bold('WHAT IT REMOVES')}
|
|
92
|
-
- Git worktree directory
|
|
93
|
-
- Local branch associated with the PR
|
|
94
|
-
- Remote branch (with --remote flag)
|
|
95
|
-
`);
|
|
96
|
-
}
|
|
14
|
+
import { parseArgs, getHelpText, gatherPrWorktreeInfo, createDefaultDeps, groupWorktreesByState, getCleanableWorktrees, findWorktreeByPrNumber, cleanWorktree, summarizeResults, } from '../lib/cleanpr/index.js';
|
|
97
15
|
/**
|
|
98
|
-
*
|
|
16
|
+
* Create cleanup dependencies using real git operations
|
|
99
17
|
*/
|
|
100
|
-
function
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const regexStr = pattern
|
|
107
|
-
.replace('{repo}', '.*')
|
|
108
|
-
.replace('{number}', '(\\d+)')
|
|
109
|
-
.replace('.', '\\.');
|
|
110
|
-
const match = name.match(new RegExp(regexStr));
|
|
111
|
-
if (match) {
|
|
112
|
-
return parseInt(match[1], 10);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Fallback: try common patterns
|
|
116
|
-
const patterns = [
|
|
117
|
-
/\.pr(\d+)$/, // repo.pr123
|
|
118
|
-
/\.pr-(\d+)$/, // repo.pr-123
|
|
119
|
-
/-pr(\d+)$/, // repo-pr123
|
|
120
|
-
/_pr(\d+)$/, // repo_pr123
|
|
121
|
-
];
|
|
122
|
-
for (const p of patterns) {
|
|
123
|
-
const match = name.match(p);
|
|
124
|
-
if (match) {
|
|
125
|
-
return parseInt(match[1], 10);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Check if a worktree has uncommitted changes
|
|
132
|
-
*/
|
|
133
|
-
function hasUncommittedChanges(worktreePath) {
|
|
134
|
-
try {
|
|
135
|
-
const status = execSync('git status --porcelain', {
|
|
136
|
-
cwd: worktreePath,
|
|
137
|
-
encoding: 'utf-8',
|
|
138
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
139
|
-
}).trim();
|
|
140
|
-
return status.length > 0;
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get PR state from GitHub
|
|
148
|
-
*/
|
|
149
|
-
async function getPrState(prNumber) {
|
|
150
|
-
try {
|
|
151
|
-
const pr = await github.getPr(prNumber);
|
|
152
|
-
if (!pr) {
|
|
153
|
-
return 'UNKNOWN';
|
|
154
|
-
}
|
|
155
|
-
// pr.state is already 'OPEN' | 'CLOSED' | 'MERGED'
|
|
156
|
-
return pr.state;
|
|
157
|
-
}
|
|
158
|
-
catch {
|
|
159
|
-
return 'UNKNOWN';
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Get detailed info about all PR worktrees
|
|
164
|
-
*/
|
|
165
|
-
async function getWorktreeInfoList(repoRoot, config) {
|
|
166
|
-
const worktrees = await git.listWorktrees();
|
|
167
|
-
const result = [];
|
|
168
|
-
for (const wt of worktrees) {
|
|
169
|
-
const prNumber = extractPrNumber(wt.path, config);
|
|
170
|
-
// Skip non-PR worktrees
|
|
171
|
-
if (prNumber === null) {
|
|
172
|
-
continue;
|
|
173
|
-
}
|
|
174
|
-
const prState = await getPrState(prNumber);
|
|
175
|
-
const hasChanges = hasUncommittedChanges(wt.path);
|
|
176
|
-
result.push({
|
|
177
|
-
path: wt.path,
|
|
178
|
-
branch: wt.branch,
|
|
179
|
-
commit: wt.commit,
|
|
180
|
-
prNumber,
|
|
181
|
-
prState,
|
|
182
|
-
hasChanges,
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
return result;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Remove a single worktree and its branch
|
|
189
|
-
*/
|
|
190
|
-
async function cleanWorktree(info, repoRoot, options) {
|
|
191
|
-
const prLabel = `PR #${info.prNumber}`;
|
|
192
|
-
// Check for uncommitted changes
|
|
193
|
-
if (info.hasChanges && !options.force) {
|
|
194
|
-
console.log(colors.warning(`${prLabel}: Has uncommitted changes (use --force to override)`));
|
|
195
|
-
return false;
|
|
196
|
-
}
|
|
197
|
-
try {
|
|
198
|
-
// Remove worktree
|
|
199
|
-
console.log(colors.info(`${prLabel}: Removing worktree...`));
|
|
200
|
-
await git.removeWorktree(info.path, { force: options.force });
|
|
201
|
-
console.log(colors.success(`${prLabel}: Worktree removed`));
|
|
202
|
-
// Delete local branch
|
|
203
|
-
if (info.branch) {
|
|
204
|
-
console.log(colors.info(`${prLabel}: Deleting local branch ${info.branch}...`));
|
|
18
|
+
function createCleanupDeps(repoRoot) {
|
|
19
|
+
return {
|
|
20
|
+
removeWorktree: (wtPath, force) => {
|
|
21
|
+
git.removeWorktree(wtPath, { force });
|
|
22
|
+
},
|
|
23
|
+
deleteLocalBranch: (branch) => {
|
|
205
24
|
try {
|
|
206
|
-
execSync(`git branch -D "${
|
|
25
|
+
execSync(`git branch -D "${branch}"`, {
|
|
207
26
|
cwd: repoRoot,
|
|
208
27
|
encoding: 'utf-8',
|
|
209
28
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
210
29
|
});
|
|
211
|
-
|
|
30
|
+
return true;
|
|
212
31
|
}
|
|
213
32
|
catch {
|
|
214
|
-
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
deleteRemoteBranch: (branch) => {
|
|
37
|
+
try {
|
|
38
|
+
execSync(`git push origin --delete "${branch}"`, {
|
|
39
|
+
cwd: repoRoot,
|
|
40
|
+
encoding: 'utf-8',
|
|
41
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
42
|
+
});
|
|
43
|
+
return true;
|
|
215
44
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
console.log(colors.info(`${prLabel}: Deleting remote branch...`));
|
|
219
|
-
try {
|
|
220
|
-
execSync(`git push origin --delete "${info.branch}"`, {
|
|
221
|
-
cwd: repoRoot,
|
|
222
|
-
encoding: 'utf-8',
|
|
223
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
224
|
-
});
|
|
225
|
-
console.log(colors.success(`${prLabel}: Remote branch deleted`));
|
|
226
|
-
}
|
|
227
|
-
catch {
|
|
228
|
-
console.log(colors.warning(`${prLabel}: Could not delete remote branch (may already be deleted)`));
|
|
229
|
-
}
|
|
45
|
+
catch {
|
|
46
|
+
return false;
|
|
230
47
|
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
48
|
+
},
|
|
49
|
+
pruneWorktrees: () => {
|
|
50
|
+
git.pruneWorktrees();
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Print worktree with status indicator
|
|
56
|
+
*/
|
|
57
|
+
function printWorktree(w) {
|
|
58
|
+
const changeIndicator = w.hasChanges ? colors.red(' [has changes]') : '';
|
|
59
|
+
console.log(` PR #${w.prNumber}: ${w.branch}${changeIndicator}`);
|
|
241
60
|
}
|
|
242
61
|
/**
|
|
243
62
|
* Interactive mode - let user select worktrees to clean
|
|
244
63
|
*/
|
|
245
|
-
async function interactiveClean(
|
|
246
|
-
console.log(colors.info('Scanning worktrees...'));
|
|
247
|
-
const worktrees = await getWorktreeInfoList(repoRoot, config);
|
|
64
|
+
async function interactiveClean(worktrees, repoRoot, options) {
|
|
248
65
|
if (worktrees.length === 0) {
|
|
249
66
|
console.log(colors.info('No PR worktrees found.'));
|
|
250
67
|
return;
|
|
251
68
|
}
|
|
252
|
-
|
|
253
|
-
const merged = worktrees.filter((w) => w.prState === 'MERGED');
|
|
254
|
-
const closed = worktrees.filter((w) => w.prState === 'CLOSED');
|
|
255
|
-
const open = worktrees.filter((w) => w.prState === 'OPEN');
|
|
256
|
-
const unknown = worktrees.filter((w) => w.prState === 'UNKNOWN');
|
|
69
|
+
const groups = groupWorktreesByState(worktrees);
|
|
257
70
|
console.log('');
|
|
258
71
|
console.log(colors.bold('PR Worktrees:'));
|
|
259
72
|
console.log('');
|
|
260
|
-
if (merged.length > 0) {
|
|
261
|
-
console.log(colors.yellow(` Merged (${merged.length}):`));
|
|
262
|
-
|
|
263
|
-
const changeIndicator = w.hasChanges ? colors.red(' [has changes]') : '';
|
|
264
|
-
console.log(` PR #${w.prNumber}: ${w.branch}${changeIndicator}`);
|
|
265
|
-
}
|
|
73
|
+
if (groups.merged.length > 0) {
|
|
74
|
+
console.log(colors.yellow(` Merged (${groups.merged.length}):`));
|
|
75
|
+
groups.merged.forEach(printWorktree);
|
|
266
76
|
}
|
|
267
|
-
if (closed.length > 0) {
|
|
268
|
-
console.log(colors.red(` Closed (${closed.length}):`));
|
|
269
|
-
|
|
270
|
-
const changeIndicator = w.hasChanges ? colors.red(' [has changes]') : '';
|
|
271
|
-
console.log(` PR #${w.prNumber}: ${w.branch}${changeIndicator}`);
|
|
272
|
-
}
|
|
77
|
+
if (groups.closed.length > 0) {
|
|
78
|
+
console.log(colors.red(` Closed (${groups.closed.length}):`));
|
|
79
|
+
groups.closed.forEach(printWorktree);
|
|
273
80
|
}
|
|
274
|
-
if (open.length > 0) {
|
|
275
|
-
console.log(colors.green(` Open (${open.length}):`));
|
|
276
|
-
|
|
277
|
-
const changeIndicator = w.hasChanges ? colors.red(' [has changes]') : '';
|
|
278
|
-
console.log(` PR #${w.prNumber}: ${w.branch}${changeIndicator}`);
|
|
279
|
-
}
|
|
81
|
+
if (groups.open.length > 0) {
|
|
82
|
+
console.log(colors.green(` Open (${groups.open.length}):`));
|
|
83
|
+
groups.open.forEach(printWorktree);
|
|
280
84
|
}
|
|
281
|
-
if (unknown.length > 0) {
|
|
282
|
-
console.log(colors.dim(` Unknown (${unknown.length}):`));
|
|
283
|
-
|
|
284
|
-
const changeIndicator = w.hasChanges ? colors.red(' [has changes]') : '';
|
|
285
|
-
console.log(` PR #${w.prNumber}: ${w.branch}${changeIndicator}`);
|
|
286
|
-
}
|
|
85
|
+
if (groups.unknown.length > 0) {
|
|
86
|
+
console.log(colors.dim(` Unknown (${groups.unknown.length}):`));
|
|
87
|
+
groups.unknown.forEach(printWorktree);
|
|
287
88
|
}
|
|
288
89
|
console.log('');
|
|
289
|
-
|
|
290
|
-
const cleanable = [...merged, ...closed];
|
|
90
|
+
const cleanable = getCleanableWorktrees(worktrees);
|
|
291
91
|
if (cleanable.length === 0) {
|
|
292
92
|
console.log(colors.info('No merged or closed PRs to clean up.'));
|
|
293
93
|
return;
|
|
294
94
|
}
|
|
295
95
|
const choices = [
|
|
296
|
-
{
|
|
297
|
-
label: `Clean all merged/closed (${cleanable.length})`,
|
|
298
|
-
value: 'all',
|
|
299
|
-
},
|
|
96
|
+
{ label: `Clean all merged/closed (${cleanable.length})`, value: 'all' },
|
|
300
97
|
];
|
|
301
|
-
if (merged.length > 0) {
|
|
302
|
-
choices.push({
|
|
303
|
-
label: `Clean merged only (${merged.length})`,
|
|
304
|
-
value: 'merged',
|
|
305
|
-
});
|
|
98
|
+
if (groups.merged.length > 0) {
|
|
99
|
+
choices.push({ label: `Clean merged only (${groups.merged.length})`, value: 'merged' });
|
|
306
100
|
}
|
|
307
|
-
choices.push({
|
|
308
|
-
|
|
309
|
-
value: 'select',
|
|
310
|
-
});
|
|
311
|
-
choices.push({
|
|
312
|
-
label: 'Cancel',
|
|
313
|
-
value: 'cancel',
|
|
314
|
-
});
|
|
101
|
+
choices.push({ label: 'Select individually', value: 'select' });
|
|
102
|
+
choices.push({ label: 'Cancel', value: 'cancel' });
|
|
315
103
|
const action = await prompts.promptChoice('What would you like to clean?', choices);
|
|
316
104
|
if (action === 'cancel') {
|
|
317
105
|
console.log(colors.info('Cancelled.'));
|
|
@@ -322,12 +110,13 @@ async function interactiveClean(repoRoot, config, options) {
|
|
|
322
110
|
toClean = cleanable;
|
|
323
111
|
}
|
|
324
112
|
else if (action === 'merged') {
|
|
325
|
-
toClean = merged;
|
|
113
|
+
toClean = groups.merged;
|
|
326
114
|
}
|
|
327
115
|
else if (action === 'select') {
|
|
328
|
-
// Individual selection
|
|
329
116
|
for (const w of cleanable) {
|
|
330
|
-
const
|
|
117
|
+
const stateLabel = w.prState.toLowerCase();
|
|
118
|
+
const changesLabel = w.hasChanges ? ' [has changes]' : '';
|
|
119
|
+
const confirm = await prompts.promptConfirm(`Clean PR #${w.prNumber} (${stateLabel})${changesLabel}?`);
|
|
331
120
|
if (confirm) {
|
|
332
121
|
toClean.push(w);
|
|
333
122
|
}
|
|
@@ -339,50 +128,56 @@ async function interactiveClean(repoRoot, config, options) {
|
|
|
339
128
|
}
|
|
340
129
|
// Ask about remote deletion
|
|
341
130
|
if (!options.deleteRemote) {
|
|
342
|
-
|
|
343
|
-
options.deleteRemote = deleteRemote;
|
|
131
|
+
options.deleteRemote = await prompts.promptConfirm('Also delete remote branches?');
|
|
344
132
|
}
|
|
345
133
|
console.log('');
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
if (
|
|
350
|
-
|
|
134
|
+
const deps = createCleanupDeps(repoRoot);
|
|
135
|
+
const results = toClean.map((w) => {
|
|
136
|
+
const result = cleanWorktree(w, options, deps);
|
|
137
|
+
if (result.success) {
|
|
138
|
+
console.log(colors.success(result.message));
|
|
351
139
|
}
|
|
352
|
-
|
|
140
|
+
else {
|
|
141
|
+
console.log(colors.warning(result.message));
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
});
|
|
145
|
+
const summary = summarizeResults(results);
|
|
353
146
|
console.log('');
|
|
354
|
-
console.log(colors.success(`Cleaned ${cleaned} of ${
|
|
147
|
+
console.log(colors.success(`Cleaned ${summary.cleaned} of ${summary.total} worktrees.`));
|
|
355
148
|
}
|
|
356
149
|
/**
|
|
357
150
|
* Clean all merged/closed PRs automatically
|
|
358
151
|
*/
|
|
359
|
-
async function cleanAll(
|
|
360
|
-
|
|
361
|
-
const worktrees = await getWorktreeInfoList(repoRoot, config);
|
|
362
|
-
const cleanable = worktrees.filter((w) => w.prState === 'MERGED' || w.prState === 'CLOSED');
|
|
152
|
+
async function cleanAll(worktrees, repoRoot, options) {
|
|
153
|
+
const cleanable = getCleanableWorktrees(worktrees);
|
|
363
154
|
if (cleanable.length === 0) {
|
|
364
155
|
console.log(colors.info('No merged or closed PR worktrees found.'));
|
|
365
156
|
return;
|
|
366
157
|
}
|
|
367
158
|
console.log(colors.info(`Found ${cleanable.length} merged/closed PR worktrees.`));
|
|
368
159
|
console.log('');
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
160
|
+
const deps = createCleanupDeps(repoRoot);
|
|
161
|
+
const results = cleanable.map((w) => {
|
|
162
|
+
const result = cleanWorktree(w, options, deps);
|
|
163
|
+
if (result.success) {
|
|
164
|
+
console.log(colors.success(result.message));
|
|
373
165
|
}
|
|
374
|
-
|
|
166
|
+
else {
|
|
167
|
+
console.log(colors.warning(result.message));
|
|
168
|
+
}
|
|
169
|
+
return result;
|
|
170
|
+
});
|
|
171
|
+
const summary = summarizeResults(results);
|
|
375
172
|
console.log('');
|
|
376
|
-
console.log(colors.success(`Cleaned ${cleaned} of ${
|
|
173
|
+
console.log(colors.success(`Cleaned ${summary.cleaned} of ${summary.total} worktrees.`));
|
|
377
174
|
}
|
|
378
175
|
/**
|
|
379
176
|
* Clean a specific PR worktree
|
|
380
177
|
*/
|
|
381
|
-
async function cleanSpecific(prNumber, repoRoot, config, options) {
|
|
382
|
-
const
|
|
383
|
-
const target = worktrees.find((w) => w.prNumber === prNumber);
|
|
178
|
+
async function cleanSpecific(prNumber, worktrees, repoRoot, config, options) {
|
|
179
|
+
const target = findWorktreeByPrNumber(worktrees, prNumber);
|
|
384
180
|
if (!target) {
|
|
385
|
-
// Try to find by pattern
|
|
386
181
|
const pattern = config.worktreePattern
|
|
387
182
|
.replace('{repo}', path.basename(repoRoot))
|
|
388
183
|
.replace('{number}', String(prNumber));
|
|
@@ -396,16 +191,28 @@ async function cleanSpecific(prNumber, repoRoot, config, options) {
|
|
|
396
191
|
console.log(colors.dim(` Branch: ${target.branch}`));
|
|
397
192
|
console.log(colors.dim(` State: ${target.prState}`));
|
|
398
193
|
console.log('');
|
|
399
|
-
|
|
194
|
+
const deps = createCleanupDeps(repoRoot);
|
|
195
|
+
const result = cleanWorktree(target, options, deps);
|
|
196
|
+
if (result.success) {
|
|
400
197
|
console.log('');
|
|
401
198
|
console.log(colors.success(`PR #${prNumber} worktree cleaned up successfully.`));
|
|
402
199
|
}
|
|
403
200
|
else {
|
|
201
|
+
console.log(colors.warning(result.message));
|
|
404
202
|
process.exit(1);
|
|
405
203
|
}
|
|
406
204
|
}
|
|
407
205
|
async function main() {
|
|
408
|
-
const
|
|
206
|
+
const parseResult = parseArgs(process.argv.slice(2));
|
|
207
|
+
if (parseResult.kind === 'help') {
|
|
208
|
+
console.log(getHelpText());
|
|
209
|
+
process.exit(0);
|
|
210
|
+
}
|
|
211
|
+
if (parseResult.kind === 'error') {
|
|
212
|
+
console.error(colors.error(parseResult.message));
|
|
213
|
+
process.exit(1);
|
|
214
|
+
}
|
|
215
|
+
const { prNumber, options } = parseResult;
|
|
409
216
|
// Check prerequisites
|
|
410
217
|
if (!github.isGhInstalled()) {
|
|
411
218
|
console.error(colors.error('GitHub CLI (gh) is required for PR status checking.'));
|
|
@@ -421,17 +228,18 @@ async function main() {
|
|
|
421
228
|
// Load configuration
|
|
422
229
|
const config = loadConfig(repoRoot);
|
|
423
230
|
console.log('');
|
|
231
|
+
console.log(colors.info('Scanning worktrees...'));
|
|
232
|
+
// Gather worktree info
|
|
233
|
+
const gatherDeps = createDefaultDeps();
|
|
234
|
+
const worktrees = await gatherPrWorktreeInfo(repoRoot, config.worktreePattern, gatherDeps);
|
|
424
235
|
if (prNumber !== null) {
|
|
425
|
-
|
|
426
|
-
await cleanSpecific(prNumber, repoRoot, config, options);
|
|
236
|
+
await cleanSpecific(prNumber, worktrees, repoRoot, config, options);
|
|
427
237
|
}
|
|
428
238
|
else if (options.all) {
|
|
429
|
-
|
|
430
|
-
await cleanAll(repoRoot, config, options);
|
|
239
|
+
await cleanAll(worktrees, repoRoot, options);
|
|
431
240
|
}
|
|
432
241
|
else {
|
|
433
|
-
|
|
434
|
-
await interactiveClean(repoRoot, config, options);
|
|
242
|
+
await interactiveClean(worktrees, repoRoot, options);
|
|
435
243
|
}
|
|
436
244
|
}
|
|
437
245
|
main().catch((err) => {
|
package/dist/cli/cleanpr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanpr.js","sourceRoot":"","sources":["../../src/cli/cleanpr.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleanpr.js","sourceRoot":"","sources":["../../src/cli/cleanpr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanpr.test.d.ts","sourceRoot":"","sources":["../../src/cli/cleanpr.test.ts"],"names":[],"mappings":""}
|