@octokit/rest#PullsUpdateParams TypeScript Examples
The following examples show how to use
@octokit/rest#PullsUpdateParams.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: utils.ts From jira-lint with MIT License | 6 votes |
updatePrDetails = async (client: github.GitHub, prData: PullsUpdateParams): Promise<void> => {
try {
await client.pulls.update(prData);
} catch (error) {
core.setFailed(error.message);
process.exit(1);
}
}
Example #2
Source File: github-connector.ts From jira-description-action with MIT License | 6 votes |
async updatePrDetails(details: JIRADetails) {
const owner = this.githubData.owner;
const repo = this.githubData.repository.name;
console.log('Updating PR details');
const { number: prNumber = 0, body: prBody = '' } = this.githubData.pullRequest;
const prData: PullsUpdateParams = {
owner,
repo,
pull_number: prNumber,
body: getPRDescription(prBody, buildPRDescription(details)),
};
return await this.client.pulls.update(prData);
}
Example #3
Source File: main.ts From jira-lint with MIT License | 4 votes |
async function run(): Promise<void> {
try {
const {
JIRA_TOKEN,
JIRA_BASE_URL,
GITHUB_TOKEN,
BRANCH_IGNORE_PATTERN,
SKIP_COMMENTS,
PR_THRESHOLD,
VALIDATE_ISSUE_STATUS,
ALLOWED_ISSUE_STATUSES,
} = getInputs();
const defaultAdditionsCount = 800;
const prThreshold: number = PR_THRESHOLD ? Number(PR_THRESHOLD) : defaultAdditionsCount;
const {
payload: {
repository,
organization: { login: owner },
pull_request: pullRequest,
},
} = github.context;
if (typeof repository === 'undefined') {
throw new Error(`Missing 'repository' from github action context.`);
}
const { name: repo } = repository;
const {
base: { ref: baseBranch },
head: { ref: headBranch },
number: prNumber = 0,
body: prBody = '',
additions = 0,
title = '',
} = pullRequest as PullRequestParams;
// common fields for both issue and comment
const commonPayload = {
owner,
repo,
// eslint-disable-next-line @typescript-eslint/camelcase
issue_number: prNumber,
};
// github client with given token
const client: github.GitHub = new github.GitHub(GITHUB_TOKEN);
if (!headBranch && !baseBranch) {
const commentBody = 'jira-lint is unable to determine the head and base branch';
const comment: IssuesCreateCommentParams = {
...commonPayload,
body: commentBody,
};
await addComment(client, comment);
core.setFailed('Unable to get the head and base branch');
process.exit(1);
}
console.log('Base branch -> ', baseBranch);
console.log('Head branch -> ', headBranch);
if (shouldSkipBranchLint(headBranch, BRANCH_IGNORE_PATTERN)) {
process.exit(0);
}
const issueKeys = getJIRAIssueKeys(headBranch);
if (!issueKeys.length) {
const comment: IssuesCreateCommentParams = {
...commonPayload,
body: getNoIdComment(headBranch),
};
await addComment(client, comment);
core.setFailed('JIRA issue id is missing in your branch.');
process.exit(1);
}
// use the last match (end of the branch name)
const issueKey = issueKeys[issueKeys.length - 1];
console.log(`JIRA key -> ${issueKey}`);
const { getTicketDetails } = getJIRAClient(JIRA_BASE_URL, JIRA_TOKEN);
const details: JIRADetails = await getTicketDetails(issueKey);
if (details.key) {
const podLabel = details?.project?.name || '';
const hotfixLabel: string = getHotfixLabel(baseBranch);
const typeLabel: string = details?.type?.name || '';
const labels: string[] = [podLabel, hotfixLabel, typeLabel].filter(isNotBlank);
console.log('Adding lables -> ', labels);
await addLabels(client, {
...commonPayload,
labels,
});
if (!isIssueStatusValid(VALIDATE_ISSUE_STATUS, ALLOWED_ISSUE_STATUSES.split(','), details)) {
const invalidIssueStatusComment: IssuesCreateCommentParams = {
...commonPayload,
body: getInvalidIssueStatusComment(details.status, ALLOWED_ISSUE_STATUSES),
};
console.log('Adding comment for invalid issue status');
await addComment(client, invalidIssueStatusComment);
core.setFailed('The found jira issue does is not in acceptable statuses');
process.exit(1);
}
if (shouldUpdatePRDescription(prBody)) {
const prData: PullsUpdateParams = {
owner,
repo,
// eslint-disable-next-line @typescript-eslint/camelcase
pull_number: prNumber,
body: getPRDescription(prBody, details),
};
await updatePrDetails(client, prData);
// add comment for PR title
if (!SKIP_COMMENTS) {
const prTitleComment: IssuesCreateCommentParams = {
...commonPayload,
body: getPRTitleComment(details.summary, title),
};
console.log('Adding comment for the PR title');
addComment(client, prTitleComment);
// add a comment if the PR is huge
if (isHumongousPR(additions, prThreshold)) {
const hugePrComment: IssuesCreateCommentParams = {
...commonPayload,
body: getHugePrComment(additions, prThreshold),
};
console.log('Adding comment for huge PR');
addComment(client, hugePrComment);
}
}
}
} else {
const comment: IssuesCreateCommentParams = {
...commonPayload,
body: getNoIdComment(headBranch),
};
await addComment(client, comment);
core.setFailed('Invalid JIRA key. Please create a branch with a valid JIRA issue key.');
process.exit(1);
}
} catch (error) {
console.log({ error });
core.setFailed(error.message);
process.exit(1);
}
}