backport
Version:
A CLI tool that automates the process of backporting commits
30 lines • 1.14 kB
JavaScript
import { RequestError } from '@octokit/request-error';
import { Octokit } from '@octokit/rest';
import pRetry from 'p-retry';
import { logger } from '../../logger.js';
export function createOctokitClient({ githubToken, githubApiBaseUrlV3, }) {
return new Octokit({
auth: githubToken,
baseUrl: githubApiBaseUrlV3,
log: logger,
});
}
/**
* Retry-wrapped Octokit request. Retries on transient server errors (5xx)
* and rate limiting (429). Does not retry client errors (4xx).
*/
export function retryOctokitRequest(fn) {
return pRetry(fn, {
retries: 2,
minTimeout: 1000,
shouldRetry: (error) => {
return (error instanceof RequestError &&
(error.status >= 500 || error.status === 429));
},
onFailedAttempt: ({ error, attemptNumber, retriesLeft }) => {
const status = error instanceof RequestError ? error.status : undefined;
logger.info(`Octokit request failed (attempt ${attemptNumber}/${attemptNumber + retriesLeft}): ${status ?? error.message}`);
},
});
}
//# sourceMappingURL=octokit-client.js.map