refactor(capture): CloseIssue carries a closing comment (#52)

#52's IssueTracker spec is CloseIssue(repo, number, comment). Refine the
#51 port signature to match and have the service pass the ticket body as
the closing comment (empty ⇒ close only). Keeps the close-with-comment
flow first-class rather than forcing two separate ticket items.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-22 23:27:29 +02:00
co-authored by Claude Opus 4.8
parent 0ac165cca3
commit 4cfc98de56
3 changed files with 5 additions and 3 deletions
+3 -1
View File
@@ -63,7 +63,9 @@ type IssueRef struct {
// scopes to owner "mathias"; the port deliberately omits owner. // scopes to owner "mathias"; the port deliberately omits owner.
type IssueTracker interface { type IssueTracker interface {
CreateIssue(ctx context.Context, repo, title, body string) (IssueRef, error) CreateIssue(ctx context.Context, repo, title, body string) (IssueRef, error)
CloseIssue(ctx context.Context, repo string, number int) (IssueRef, error) // CloseIssue closes an issue, optionally posting a closing comment
// first (empty comment ⇒ close only).
CloseIssue(ctx context.Context, repo string, number int, comment string) (IssueRef, error)
CommentIssue(ctx context.Context, repo string, number int, body string) (IssueRef, error) CommentIssue(ctx context.Context, repo string, number int, body string) (IssueRef, error)
} }
+1 -1
View File
@@ -222,7 +222,7 @@ func (s *Service) persistTicket(ctx context.Context, tk Ticket) (TicketResult, e
case "create": case "create":
ref, err = s.issues.CreateIssue(ctx, tk.Repo, tk.Title, tk.Body) ref, err = s.issues.CreateIssue(ctx, tk.Repo, tk.Title, tk.Body)
case "close": case "close":
ref, err = s.issues.CloseIssue(ctx, tk.Repo, tk.Number) ref, err = s.issues.CloseIssue(ctx, tk.Repo, tk.Number, tk.Body)
case "comment": case "comment":
ref, err = s.issues.CommentIssue(ctx, tk.Repo, tk.Number, tk.Body) ref, err = s.issues.CommentIssue(ctx, tk.Repo, tk.Number, tk.Body)
} }
+1 -1
View File
@@ -69,7 +69,7 @@ func (f *fakeTracker) CreateIssue(_ context.Context, repo, title, _ string) (Iss
return IssueRef{Repo: repo, Number: 100 + len(f.created), URL: "https://git/" + repo + "/issues/x"}, nil return IssueRef{Repo: repo, Number: 100 + len(f.created), URL: "https://git/" + repo + "/issues/x"}, nil
} }
func (f *fakeTracker) CloseIssue(_ context.Context, repo string, number int) (IssueRef, error) { func (f *fakeTracker) CloseIssue(_ context.Context, repo string, number int, _ string) (IssueRef, error) {
if f.err != nil { if f.err != nil {
return IssueRef{}, f.err return IssueRef{}, f.err
} }