fix: render gh issue comments as table (#664)

Co-authored-by: Codex <codex@noreply.local>
This commit is contained in:
Lyon
2026-06-22 15:43:09 +08:00
committed by GitHub
parent 5462aca6d7
commit 3421a5bc96
+42 -4
View File
@@ -7112,6 +7112,44 @@ async function issueEdit(repo: string, token: string, issueNumber: number, optio
};
}
function withIssueCommentCreateRendered(result: GitHubCommandResult): GitHubCommandResult {
return {
...result,
contentType: "text/plain",
renderedText: renderIssueCommentCreateTable(result),
};
}
function renderIssueCommentCreateTable(result: GitHubCommandResult): string {
const comment = isRecord(result.comment) ? result.comment : {};
const readCommands = isRecord(result.readCommands) ? result.readCommands : {};
const status = result.dryRun === true ? "dry-run" : "created";
const issueNumber = ghText(result.issueNumber);
const commentId = ghText(comment.id ?? result.commentId);
const sourceKind = isRecord(result.bodySource) ? result.bodySource.kind : result.source;
const lines = [
`gh issue comment create (${status})`,
"",
ghTable(["ISSUE", "COMMENT", "STATUS", "BODY", "URL"], [[
issueNumber === "-" ? "-" : `#${issueNumber}`,
commentId,
status,
`${ghText(result.bodyChars ?? comment.bodyChars)} chars`,
ghShort(ghText(comment.url ?? result.url), 96),
]]),
"",
"Summary:",
` repo=${ghText(result.repo)} source=${ghText(sourceKind)} bodySha=${ghText(result.bodySha ?? comment.bodySha)}`,
"",
"Next:",
` ${ghText(readCommands.comments ?? readCommands.full ?? readCommands.raw)}`,
"",
"Disclosure:",
" default view is a bounded table; use --full/--raw or the read command for full comment metadata/body.",
];
return lines.join("\n");
}
async function issueComment(repo: string, token: string, issueNumber: number, options: GitHubOptions): Promise<GitHubCommandResult> {
let bodyInput: { body: string; bodySource: Record<string, unknown> };
try {
@@ -7121,7 +7159,7 @@ async function issueComment(repo: string, token: string, issueNumber: number, op
}
const { body, bodySource } = bodyInput;
if (options.dryRun) {
return {
return withIssueCommentCreateRendered({
ok: true,
command: "issue comment create",
repo,
@@ -7130,12 +7168,12 @@ async function issueComment(repo: string, token: string, issueNumber: number, op
issueNumber,
readCommands: issueCommentReadCommands(repo, issueNumber),
...writeBodyPlan("issue comment create", repo, body, bodySource, { issueNumber }),
};
});
}
const { owner, name } = repoParts(repo);
const comment = await githubRequest<GitHubComment>(token, "POST", `/repos/${owner}/${name}/issues/${issueNumber}/comments`, { body });
if (isGitHubError(comment)) return commandError("issue comment", repo, comment, { issueNumber });
return {
return withIssueCommentCreateRendered({
ok: true,
command: "issue comment create",
repo,
@@ -7148,7 +7186,7 @@ async function issueComment(repo: string, token: string, issueNumber: number, op
source: String(bodySource.kind ?? "unknown"),
readCommands: issueCommentReadCommands(repo, issueNumber),
rest: true,
};
});
}
async function commentPatch(repo: string, token: string, ownerKind: "issue" | "pr", commentId: number, options: GitHubOptions, commandName?: string): Promise<GitHubCommandResult> {