|
|
|
@@ -230,7 +230,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (sub === "create" && options.dryRun) return repoCreate(options.repo, "", options);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(options.repo, true);
|
|
|
|
|
const commandName = `repo ${sub}`;
|
|
|
|
|
const missing = authRequired(options.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
@@ -259,7 +259,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
}
|
|
|
|
|
const resolved = resolvePositionalIssueReference(args, 3, commandName, options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (action === "list") return withNumberOptionHint(issueAttachmentList(resolved.repo, token, resolved.number), resolved);
|
|
|
|
@@ -271,7 +271,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const commentId = resolved.number;
|
|
|
|
|
if (typeof commentId !== "number") return commentId;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(commentView(resolved.repo, token, "issue", commentId, options.raw || options.full, commandName), resolved);
|
|
|
|
@@ -282,7 +282,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
const commentId = resolved.number;
|
|
|
|
|
if (typeof commentId !== "number") return commentId;
|
|
|
|
|
if (options.dryRun) return withNumberOptionHint(commentDelete(resolved.repo, "", "issue", commentId, true), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "issue comment delete", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "issue comment delete", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(commentDelete(resolved.repo, token, "issue", commentId, false), resolved);
|
|
|
|
@@ -293,7 +293,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const commentId = resolved.number;
|
|
|
|
|
if (typeof commentId !== "number") return commentId;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(commentPatch(resolved.repo, token, "issue", commentId, { ...options, repo: resolved.repo }, commandName), resolved);
|
|
|
|
@@ -306,7 +306,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (typeof commentId !== "number") return commentId;
|
|
|
|
|
const updateOptions = { ...options, repo: resolved.repo };
|
|
|
|
|
if (options.dryRun) return withNumberOptionHint(commentUpdate(resolved.repo, "", "issue", commentId, updateOptions, commandName), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(commentUpdate(resolved.repo, token, "issue", commentId, updateOptions, commandName), resolved);
|
|
|
|
@@ -317,28 +317,28 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
const issueNumber = resolved.number;
|
|
|
|
|
if (typeof issueNumber !== "number") return issueNumber;
|
|
|
|
|
if (options.dryRun) return withNumberOptionHint(issueComment(resolved.repo, "", issueNumber, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "issue comment create", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, "issue comment create", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "issue comment create", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issueComment(resolved.repo, token, issueNumber, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "comments") {
|
|
|
|
|
const resolved = resolvePositionalIssueReference(args, 2, "issue comments", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "issue comments", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "issue comments", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issueComments(resolved.repo, token, resolved.number, options.limit, { includeFullCommentBodies: options.full || options.raw }), resolved);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "scan-escape" || sub === "cleanup-plan") {
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(options.repo, true);
|
|
|
|
|
const commandName = sub === "cleanup-plan" ? "issue cleanup-plan" : "issue scan-escape";
|
|
|
|
|
const missing = authRequired(options.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return issueScanEscape(options.repo, token, options.limit, options.dryRun || sub === "cleanup-plan", commandName);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "board-audit") {
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(options.repo, true);
|
|
|
|
|
const missing = authRequired(options.repo, "issue board-audit", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, "issue board-audit", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return issueBoardAudit(options.repo, token, options);
|
|
|
|
@@ -349,15 +349,20 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (action !== "list" && action !== "get" && action !== "update" && action !== "add" && action !== "move" && action !== "delete" && action !== "upsert") {
|
|
|
|
|
return unsupportedCommand(commandName, options.repo, "board-row supported commands are list, get, update, add, move, delete, and upsert.");
|
|
|
|
|
}
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const missing = authRequired(options.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (action === "list") return issueBoardRowList(options.repo, token, options);
|
|
|
|
|
if (action === "list") {
|
|
|
|
|
const { token, probe } = resolveToken(options.repo, true);
|
|
|
|
|
const missing = authRequired(options.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return issueBoardRowList(options.repo, token, options);
|
|
|
|
|
}
|
|
|
|
|
const resolvedBoardRow = resolvePositionalIssueReference(args, 3, commandName, options);
|
|
|
|
|
if (isGitHubCommandResult(resolvedBoardRow)) return resolvedBoardRow;
|
|
|
|
|
const issueNumber = resolvedBoardRow.number;
|
|
|
|
|
if (typeof issueNumber !== "number") return issueNumber;
|
|
|
|
|
const boardRowOptions = { ...options, repo: resolvedBoardRow.repo };
|
|
|
|
|
const { token, probe } = resolveToken(resolvedBoardRow.repo, true);
|
|
|
|
|
const missing = authRequired(resolvedBoardRow.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolvedBoardRow.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (action === "get") return withNumberOptionHint(issueBoardRowGet(resolvedBoardRow.repo, token, issueNumber, boardRowOptions), resolvedBoardRow);
|
|
|
|
|
if (action === "update") return withNumberOptionHint(issueBoardRowUpdate(resolvedBoardRow.repo, token, issueNumber, boardRowOptions), resolvedBoardRow);
|
|
|
|
|
if (action === "add") return withNumberOptionHint(issueBoardRowAdd(resolvedBoardRow.repo, token, issueNumber, boardRowOptions), resolvedBoardRow);
|
|
|
|
@@ -368,7 +373,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (sub === "patch") {
|
|
|
|
|
const resolved = resolvePositionalIssueReference(args, 2, "issue patch", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "issue patch", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "issue patch", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issuePatch(resolved.repo, token, resolved.number, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
@@ -379,14 +384,14 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
const issueEditRef = resolvePositionalIssueReference(args, 2, "issue edit", options);
|
|
|
|
|
if (isGitHubCommandResult(issueEditRef)) return issueEditRef;
|
|
|
|
|
const issueNumber = issueEditRef.number;
|
|
|
|
|
const { token } = resolveToken(false);
|
|
|
|
|
const { token } = resolveToken(issueEditRef.repo, false);
|
|
|
|
|
return withNumberOptionHint(issueEdit(issueEditRef.repo, token ?? "", issueNumber, { ...options, repo: issueEditRef.repo }), issueEditRef);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "update") {
|
|
|
|
|
const issueUpdateRef = resolvePositionalIssueReference(args, 2, "issue update", options);
|
|
|
|
|
if (isGitHubCommandResult(issueUpdateRef)) return issueUpdateRef;
|
|
|
|
|
const issueNumber = issueUpdateRef.number;
|
|
|
|
|
const { token } = resolveToken(false);
|
|
|
|
|
const { token } = resolveToken(issueUpdateRef.repo, false);
|
|
|
|
|
return withNumberOptionHint(issueEdit(issueUpdateRef.repo, token ?? "", issueNumber, { ...options, repo: issueUpdateRef.repo }, "issue update"), issueUpdateRef);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "comment") {
|
|
|
|
@@ -408,43 +413,60 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (sub === "read" || sub === "view") {
|
|
|
|
|
const resolved = resolveReadViewNumberReference("issue", sub, third, options, args);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, `issue ${sub}`, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, `issue ${sub}`, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
const disclosure = readDisclosureOptions(options, resolved.shorthand);
|
|
|
|
|
if (sub === "read") return withNumberOptionHint(issueRead(resolved.repo, token, resolved.number, issueReadJsonFields(options), "issue read", disclosure, { includeFullCommentBodies: options.raw }), resolved);
|
|
|
|
|
return withNumberOptionHint(issueView(resolved.repo, token, resolved.number, issueReadJsonFields(options), disclosure, { includeFullCommentBodies: options.raw }), resolved);
|
|
|
|
|
}
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const missing = authRequired(options.repo, `issue ${sub ?? ""}`.trim(), probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, `issue ${sub ?? ""}`.trim(), { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
|
|
|
|
|
if (sub === "list") return issueList(options.repo, token, options.listState, options.limit, options.issueListJsonFields, options.search, options.labels, options.raw || options.full, options.titlePrefix);
|
|
|
|
|
if (sub === "stale-close") return issueStaleClose(options.repo, token, options);
|
|
|
|
|
if (sub === "create") return issueCreate(options.repo, token, options);
|
|
|
|
|
if (sub === "list" || sub === "stale-close" || sub === "create") {
|
|
|
|
|
const commandName = `issue ${sub}`;
|
|
|
|
|
const { token, probe } = resolveToken(options.repo, true);
|
|
|
|
|
const missing = authRequired(options.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (sub === "list") return issueList(options.repo, token, options.listState, options.limit, options.issueListJsonFields, options.search, options.labels, options.raw || options.full, options.titlePrefix);
|
|
|
|
|
if (sub === "stale-close") return issueStaleClose(options.repo, token, options);
|
|
|
|
|
return issueCreate(options.repo, token, options);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "edit") {
|
|
|
|
|
const r = resolvePositionalIssueReference(args, 2, "issue edit", options);
|
|
|
|
|
if (isGitHubCommandResult(r)) return r;
|
|
|
|
|
const { token, probe } = resolveToken(r.repo, true);
|
|
|
|
|
const missing = authRequired(r.repo, "issue edit", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(r.repo, "issue edit", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issueEdit(r.repo, token, r.number, { ...options, repo: r.repo }), r);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "update") {
|
|
|
|
|
const r = resolvePositionalIssueReference(args, 2, "issue update", options);
|
|
|
|
|
if (isGitHubCommandResult(r)) return r;
|
|
|
|
|
const { token, probe } = resolveToken(r.repo, true);
|
|
|
|
|
const missing = authRequired(r.repo, "issue update", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(r.repo, "issue update", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issueEdit(r.repo, token, r.number, { ...options, repo: r.repo }, "issue update"), r);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "comment") {
|
|
|
|
|
const r = resolvePositionalIssueReference(args, 2, "issue comment", options);
|
|
|
|
|
if (isGitHubCommandResult(r)) return r;
|
|
|
|
|
const { token, probe } = resolveToken(r.repo, true);
|
|
|
|
|
const missing = authRequired(r.repo, "issue comment", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(r.repo, "issue comment", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issueComment(r.repo, token, r.number, { ...options, repo: r.repo }), r);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "close") {
|
|
|
|
|
const r = resolvePositionalIssueReference(args, 2, "issue close", options);
|
|
|
|
|
if (isGitHubCommandResult(r)) return r;
|
|
|
|
|
const { token, probe } = resolveToken(r.repo, true);
|
|
|
|
|
const missing = authRequired(r.repo, "issue close", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(r.repo, "issue close", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issueState(r.repo, token, r.number, "closed", options.dryRun, { ...options, repo: r.repo }), r);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "reopen") {
|
|
|
|
|
const r = resolvePositionalIssueReference(args, 2, "issue reopen", options);
|
|
|
|
|
if (isGitHubCommandResult(r)) return r;
|
|
|
|
|
const { token, probe } = resolveToken(r.repo, true);
|
|
|
|
|
const missing = authRequired(r.repo, "issue reopen", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(r.repo, "issue reopen", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(issueState(r.repo, token, r.number, "open", options.dryRun, { ...options, repo: r.repo }), r);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -462,7 +484,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (optionWasProvided(args, "--file")) {
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr diff", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr diff", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prDiffFile(resolved.repo, token, resolved.number, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
@@ -478,7 +500,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr diff --stat", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr diff --stat", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prFiles(resolved.repo, token, resolved.number, options.limit, "pr diff --stat"), resolved);
|
|
|
|
@@ -486,7 +508,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (sub === "review-plan") {
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 2, "pr review-plan", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr review-plan", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr review-plan", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prReviewPlan(resolved.repo, token, resolved.number, options.limit), resolved);
|
|
|
|
@@ -494,7 +516,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (sub === "files") {
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 2, "pr files", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr files", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr files", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prFiles(resolved.repo, token, resolved.number, options.limit, "pr files"), resolved);
|
|
|
|
@@ -509,7 +531,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
const resolved = resolvePositionalNumberReference("pr", args, 3, "pr comment delete", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
if (options.dryRun) return withNumberOptionHint(commentDelete(resolved.repo, "", "pr", resolved.number, true), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr comment delete", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr comment delete", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(commentDelete(resolved.repo, token, "pr", resolved.number, false), resolved);
|
|
|
|
@@ -518,7 +540,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
const commandName = `pr comment ${third}`;
|
|
|
|
|
const resolved = resolvePositionalNumberReference("pr", args, 3, commandName, options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(commentView(resolved.repo, token, "pr", resolved.number, options.raw || options.full, commandName), resolved);
|
|
|
|
@@ -529,7 +551,7 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const updateOptions = { ...options, repo: resolved.repo };
|
|
|
|
|
if (options.dryRun) return withNumberOptionHint(commentUpdate(resolved.repo, "", "pr", resolved.number, updateOptions, commandName), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(commentUpdate(resolved.repo, token, "pr", resolved.number, updateOptions, commandName), resolved);
|
|
|
|
@@ -538,14 +560,14 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 3, "pr comment create", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
if (options.dryRun) return withNumberOptionHint(prComment(resolved.repo, "", resolved.number, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr comment create", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, "pr comment create", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr comment create", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prComment(resolved.repo, token, resolved.number, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "create") {
|
|
|
|
|
if (options.dryRun) return prCreate(options.repo, "", options);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(options.repo, true);
|
|
|
|
|
const missing = authRequired(options.repo, "pr create", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, "pr create", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return prCreate(options.repo, token, options);
|
|
|
|
@@ -556,11 +578,11 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
return withNumberOptionHint(prComment(resolved.repo, "", resolved.number, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
|
}
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const missing = authRequired(options.repo, "pr comment", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, "pr comment", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 2, "pr comment", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr comment", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr comment", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prComment(resolved.repo, token, resolved.number, { ...options, repo: resolved.repo }), resolved);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "update" || sub === "edit") {
|
|
|
|
@@ -568,24 +590,24 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 2, commandName, options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
if (options.dryRun && options.mode === "replace") return withNumberOptionHint(prUpdate(resolved.repo, "", resolved.number, { ...options, repo: resolved.repo }, commandName), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, commandName, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, commandName, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prUpdate(resolved.repo, token, resolved.number, { ...options, repo: resolved.repo }, commandName), resolved);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "close" || sub === "reopen") {
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 2, `pr ${sub}`, options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
if (options.dryRun) return withNumberOptionHint(prState(resolved.repo, "", resolved.number, sub === "close" ? "closed" : "open", true), resolved);
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, `pr ${sub}`, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, `pr ${sub}`, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, `pr ${sub}`, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prState(resolved.repo, token, resolved.number, sub === "close" ? "closed" : "open", false), resolved);
|
|
|
|
|
}
|
|
|
|
|
if (sub === "ready") {
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 2, "pr ready", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr ready", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr ready", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prReady(resolved.repo, token, resolved.number, options.dryRun), resolved);
|
|
|
|
@@ -593,9 +615,9 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (sub === "merge") {
|
|
|
|
|
const resolved = resolvePositionalPrReference(args, 2, "pr merge", options);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const missing = authRequired(options.repo, "pr merge", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, "pr merge", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, "pr merge", probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, "pr merge", { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
return withNumberOptionHint(prMerge(resolved.repo, token, resolved.number, options), resolved);
|
|
|
|
|
}
|
|
|
|
|
if (sub !== "list" && !isPrReadCommand(sub)) {
|
|
|
|
@@ -604,14 +626,14 @@ export async function runGhCommand(args: string[]): Promise<GitHubCommandResult
|
|
|
|
|
if (sub === "read" || sub === "view") {
|
|
|
|
|
const resolved = resolveReadViewNumberReference("pr", sub, third, options, args);
|
|
|
|
|
if (isGitHubCommandResult(resolved)) return resolved;
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(resolved.repo, true);
|
|
|
|
|
const missing = authRequired(resolved.repo, `pr ${sub}`, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(resolved.repo, `pr ${sub}`, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
const disclosure = readDisclosureOptions(options, resolved.shorthand);
|
|
|
|
|
if (sub === "read") return withNumberOptionHint(prRead(resolved.repo, token, resolved.number, prReadJsonFields(options), "pr read", disclosure), resolved);
|
|
|
|
|
return withNumberOptionHint(prView(resolved.repo, token, resolved.number, prReadJsonFields(options), disclosure), resolved);
|
|
|
|
|
}
|
|
|
|
|
const { token, probe } = resolveToken(true);
|
|
|
|
|
const { token, probe } = resolveToken(options.repo, true);
|
|
|
|
|
const missing = authRequired(options.repo, `pr ${sub}`, probe);
|
|
|
|
|
if (missing !== null || token === null) return missing ?? authRequired(options.repo, `pr ${sub}`, { present: false, source: null, ghFallbackAttempted: true });
|
|
|
|
|
if (sub === "list") return prList(options.repo, token, options.prListState, options.limit, options.prListJsonFields, options.raw || options.full);
|
|
|
|
|