@claudetree/cli 0.3.0 → 0.3.1
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.ja.md +1 -0
- package/README.ko.md +1 -0
- package/README.md +1 -0
- package/README.zh.md +1 -0
- package/dist/commands/clean.d.ts +3 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +111 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.ja.md
CHANGED
package/README.ko.md
CHANGED
package/README.md
CHANGED
|
@@ -45,6 +45,7 @@ ct web
|
|
|
45
45
|
| `ct demo` | Interactive demo (no tokens used) |
|
|
46
46
|
| `ct batch` | Process multiple issues in parallel |
|
|
47
47
|
| `ct bustercall` | Auto-fetch all open issues and run parallel sessions |
|
|
48
|
+
| `ct clean` | Remove all worktrees (except main) |
|
|
48
49
|
| `ct web` | Start web dashboard |
|
|
49
50
|
|
|
50
51
|
## Key Features
|
package/README.zh.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,eAAO,MAAM,YAAY,SAyGrB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { createInterface } from 'node:readline';
|
|
4
|
+
import { GitWorktreeAdapter, FileSessionRepository } from '@claudetree/core';
|
|
5
|
+
const CONFIG_DIR = '.claudetree';
|
|
6
|
+
async function confirm(message) {
|
|
7
|
+
const rl = createInterface({
|
|
8
|
+
input: process.stdin,
|
|
9
|
+
output: process.stdout,
|
|
10
|
+
});
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
rl.question(`${message} [y/N] `, (answer) => {
|
|
13
|
+
rl.close();
|
|
14
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export const cleanCommand = new Command('clean')
|
|
19
|
+
.description('Remove all worktrees (except main)')
|
|
20
|
+
.option('-f, --force', 'Force removal without confirmation', false)
|
|
21
|
+
.option('--keep-sessions', 'Keep session records after removal', false)
|
|
22
|
+
.option('--dry-run', 'Show what would be removed without removing', false)
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
const cwd = process.cwd();
|
|
25
|
+
const adapter = new GitWorktreeAdapter(cwd);
|
|
26
|
+
try {
|
|
27
|
+
const worktrees = await adapter.list();
|
|
28
|
+
const toRemove = worktrees.filter((wt) => !wt.isMainWorktree);
|
|
29
|
+
if (toRemove.length === 0) {
|
|
30
|
+
console.log('No worktrees to remove.');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log('\n=== Clean Worktrees ===\n');
|
|
34
|
+
console.log(`Found ${toRemove.length} worktree(s) to remove:\n`);
|
|
35
|
+
for (const wt of toRemove) {
|
|
36
|
+
const branch = wt.branch || '(detached)';
|
|
37
|
+
console.log(` \u2022 ${wt.path} (${branch})`);
|
|
38
|
+
}
|
|
39
|
+
if (options.dryRun) {
|
|
40
|
+
console.log('\n[Dry run] No changes made.');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (!options.force) {
|
|
44
|
+
console.log('');
|
|
45
|
+
const confirmed = await confirm('Are you sure you want to remove these worktrees?');
|
|
46
|
+
if (!confirmed) {
|
|
47
|
+
console.log('Cancelled.');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
console.log('');
|
|
52
|
+
let successCount = 0;
|
|
53
|
+
let failCount = 0;
|
|
54
|
+
for (const wt of toRemove) {
|
|
55
|
+
process.stdout.write(`Removing ${wt.path}... `);
|
|
56
|
+
try {
|
|
57
|
+
await adapter.remove(wt.path, options.force);
|
|
58
|
+
console.log('\u2713');
|
|
59
|
+
successCount++;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.log('\u2717');
|
|
63
|
+
if (error instanceof Error) {
|
|
64
|
+
console.log(` Error: ${error.message}`);
|
|
65
|
+
}
|
|
66
|
+
failCount++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Clean up sessions if not keeping them
|
|
70
|
+
if (!options.keepSessions) {
|
|
71
|
+
const configDir = join(cwd, CONFIG_DIR);
|
|
72
|
+
try {
|
|
73
|
+
const sessionRepo = new FileSessionRepository(configDir);
|
|
74
|
+
const sessions = await sessionRepo.findAll();
|
|
75
|
+
// Find sessions that reference removed worktrees
|
|
76
|
+
const removedPaths = new Set(toRemove.map((wt) => wt.path));
|
|
77
|
+
const sessionsToDelete = sessions.filter((s) => s.worktreePath && removedPaths.has(s.worktreePath));
|
|
78
|
+
for (const session of sessionsToDelete) {
|
|
79
|
+
await sessionRepo.delete(session.id);
|
|
80
|
+
}
|
|
81
|
+
if (sessionsToDelete.length > 0) {
|
|
82
|
+
console.log(`\nRemoved ${sessionsToDelete.length} associated session(s).`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Config dir might not exist, which is fine
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Prune stale worktree entries
|
|
90
|
+
process.stdout.write('\nPruning stale entries... ');
|
|
91
|
+
try {
|
|
92
|
+
await adapter.prune();
|
|
93
|
+
console.log('\u2713');
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
console.log('\u2717');
|
|
97
|
+
}
|
|
98
|
+
console.log(`\nRemoved ${successCount} worktree(s) successfully.`);
|
|
99
|
+
if (failCount > 0) {
|
|
100
|
+
console.log(`Failed to remove ${failCount} worktree(s).`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
if (error instanceof Error) {
|
|
106
|
+
console.error(`Error: ${error.message}`);
|
|
107
|
+
}
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { program } from 'commander';
|
|
3
3
|
import { batchCommand } from './commands/batch.js';
|
|
4
4
|
import { bustercallCommand } from './commands/bustercall.js';
|
|
5
|
+
import { cleanCommand } from './commands/clean.js';
|
|
5
6
|
import { demoCommand } from './commands/demo.js';
|
|
6
7
|
import { doctorCommand } from './commands/doctor.js';
|
|
7
8
|
import { initCommand } from './commands/init.js';
|
|
@@ -17,6 +18,7 @@ program
|
|
|
17
18
|
.version('0.1.0');
|
|
18
19
|
program.addCommand(batchCommand);
|
|
19
20
|
program.addCommand(bustercallCommand);
|
|
21
|
+
program.addCommand(cleanCommand);
|
|
20
22
|
program.addCommand(demoCommand);
|
|
21
23
|
program.addCommand(doctorCommand);
|
|
22
24
|
program.addCommand(initCommand);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudetree/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "CLI for claudetree - Manage Claude sessions with git worktrees",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"commander": "^13.0.0",
|
|
31
|
-
"@claudetree/core": "0.3.
|
|
32
|
-
"@claudetree/shared": "0.3.
|
|
31
|
+
"@claudetree/core": "0.3.1",
|
|
32
|
+
"@claudetree/shared": "0.3.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.10.0",
|