refactor(claude-do): refactor(worker): move the merge and worktree MCP tools out
`src/ClaudeDo.Worker/External/ExternalMcpService.cs` ist **1897 Zeilen** (nachgezählt 2026-09-02; die Datei ist seit dem Anlegen dieses Tasks von 1696 weiter gewachsen): ~30 DTO-Records oben plus ~25 Tool-Methoden — während **13** Geschwisterdateien `*McpTools.cs` im selben Ordner das Topic-Split-Muster schon tragen (`ListMcpTools`, `ConfigMcpTools`, `BatchMcpTools`, `NotesMcpTools`, `QueueStateMc ClaudeDo-Task: 1862e160-ffde-4a50-aa03-bb7251f56088
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import re
|
||||
|
||||
path = r"C:\Private\.claudedo-worktrees\claude-do\1862e160-ffde-4a50-aa03-bb7251f56088\tests\ClaudeDo.Worker.Tests\External\_remainder.cs"
|
||||
with open(path, encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
def idx(marker, start=0):
|
||||
for i in range(start, len(lines)):
|
||||
if marker in lines[i]:
|
||||
return i
|
||||
raise AssertionError(f"marker not found: {marker!r}")
|
||||
|
||||
# Each deletion described as (start_marker, end_marker_exclusive) -- delete from the line
|
||||
# containing start_marker up to (but not including) the line containing end_marker.
|
||||
deletions = [
|
||||
("// ── GetTaskWorktree ──", "// ── GetTaskConfig ──"),
|
||||
("// ── MergeTask allowWaitingForReview ──", "// ── leaveConflictsInTree ──"),
|
||||
("// Three edits spread far enough apart", "[Fact]"), # multi-hunk helpers, up to next [Fact]
|
||||
("// ── continue_merge / abort_merge ──", "// ── PreviewMerge / PreviewMergeSet ──"),
|
||||
("private async Task<string> CreateActiveWorktreeAsync(", "[Fact]"),
|
||||
]
|
||||
|
||||
# Apply deletions from bottom to top so earlier indices stay valid.
|
||||
spans = []
|
||||
for start_marker, end_marker in deletions:
|
||||
s = idx(start_marker)
|
||||
e = idx(end_marker, s + 1)
|
||||
spans.append((s, e))
|
||||
|
||||
spans.sort(reverse=True)
|
||||
for s, e in spans:
|
||||
del lines[s:e]
|
||||
|
||||
text = ''.join(lines)
|
||||
|
||||
# Drop the now-unused `maintenance` local + ctor arg in BuildSut(QueueService, IVerifyCommandRunner).
|
||||
before = text
|
||||
text = text.replace(
|
||||
" var maintenance = new WorktreeMaintenanceService(factory, git, NullLogger<WorktreeMaintenanceService>.Instance);\n",
|
||||
"", 1)
|
||||
assert text != before, "maintenance local not removed"
|
||||
before = text
|
||||
text = text.replace(
|
||||
" git, factory, maintenance, merge, planningMerge,\n",
|
||||
" git, factory, merge, planningMerge,\n", 1)
|
||||
assert text != before, "maintenance ctor arg not removed"
|
||||
|
||||
# Collapse any remaining runs of 2+ blank lines down to a single blank line (cosmetic only).
|
||||
text = re.sub(r'\n{3,}', '\n\n', text)
|
||||
|
||||
with open(path, 'w', encoding='utf-8') as f:
|
||||
f.write(text)
|
||||
|
||||
print("final line count:", len(text.splitlines()))
|
||||
Reference in New Issue
Block a user