Repository navigation
Expand file tree
/
Copy pathbugbot_context_request.ts
More file actions
54 lines (51 loc) · 2.14 KB
/
Copy pathbugbot_context_request.ts
File metadata and controls
54 lines (51 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import type { BugbotReviewTarget } from "../../../../../domain/bugbot/context";
import { parsePositiveSafeInteger } from "../../../../../domain/positive_integer_policy";
import type { BugbotContextSelectionContext } from './bugbot_review_operation_context';
export interface LoadBugbotContextOptions {
readonly branchOverride?: string;
readonly issueNumberOverride?: number;
readonly pullRequestNumberOverride?: number;
readonly exactHeadPullRequestRequired?: boolean;
}
export interface BugbotContextRequest {
readonly target: BugbotReviewTarget;
readonly trustedAuthorLogin?: string;
readonly ignorePatterns: readonly string[];
readonly organizationRules: readonly string[];
}
export function projectBugbotContextRequest(
context: BugbotContextSelectionContext,
options?: LoadBugbotContextOptions,
): BugbotContextRequest {
const issueNumber = parsePositiveSafeInteger(options?.issueNumberOverride ?? context.target.issueNumber);
const pullRequestNumber = parsePositiveSafeInteger(
options?.pullRequestNumberOverride
?? (context.target.isPullRequest ? context.target.pullRequestNumber : undefined),
);
const headRef = (
options?.branchOverride
?? context.target.headBranch
?? ""
).trim();
const target: BugbotReviewTarget = {
repository: {
owner: context.repository.owner,
name: context.repository.name,
...(context.repository.id ? { id: context.repository.id } : {}),
},
triggerKind: context.trigger.kind,
...(issueNumber ? { issueNumber } : {}),
headOwner: context.trigger.headOwner,
headRef,
...(context.trigger.expectedHeadSha ? { expectedHeadSha: context.trigger.expectedHeadSha } : {}),
pullRequestSelection: context.target.isPullRequest || pullRequestNumber !== undefined
? { kind: 'event', ...(pullRequestNumber ? { number: pullRequestNumber } : {}) }
: { kind: 'exact-head', required: options?.exactHeadPullRequestRequired ?? false },
};
return {
target,
...(context.trustedAuthorLogin ? { trustedAuthorLogin: context.trustedAuthorLogin } : {}),
ignorePatterns: context.ignorePatterns,
organizationRules: context.organizationRules,
};
}