UNPKG

backport

Version:

A CLI tool that automates the process of backporting commits

68 lines 2.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createPullRequest = void 0; const rest_1 = require("@octokit/rest"); const elastic_apm_node_1 = __importDefault(require("elastic-apm-node")); const BackportError_1 = require("../../../BackportError"); const logger_1 = require("../../../logger"); const ora_1 = require("../../../ora"); const fetchExistingPullRequest_1 = require("../../v4/fetchExistingPullRequest"); const getGithubV3ErrorMessage_1 = require("../getGithubV3ErrorMessage"); async function createPullRequest({ options, prPayload, }) { const msg = `Creating ${options.draft ? 'draft ' : ''}pull request`; logger_1.logger.info(`${msg} with title: "${prPayload.title}". ${prPayload.head} -> ${prPayload.base}`); const { accessToken, githubApiBaseUrlV3 } = options; const spinner = (0, ora_1.ora)(options.interactive, msg).start(); if (options.dryRun) { spinner.succeed(); return { didUpdate: false, number: 1337, url: 'this-is-a-dry-run' }; } const span = elastic_apm_node_1.default.startSpan('REST: Create pull request'); try { const octokit = new rest_1.Octokit({ auth: accessToken, baseUrl: githubApiBaseUrlV3, log: logger_1.logger, }); const res = await octokit.pulls.create(prPayload); spinner.succeed(); return { url: res.data.html_url, number: res.data.number, didUpdate: false, }; } catch (e) { // retrieve url for existing try { const existingPR = await (0, fetchExistingPullRequest_1.fetchExistingPullRequest)({ options, prPayload, }); if (existingPR) { spinner.succeed('Updating existing pull request'); return { url: existingPR.url, number: existingPR.number, didUpdate: true, }; } } catch (e) { logger_1.logger.error('Could not retrieve existing pull request', e); // swallow error } finally { span?.end(); } spinner.fail(); throw new BackportError_1.BackportError( //@ts-expect-error `Could not create pull request: ${(0, getGithubV3ErrorMessage_1.getGithubV3ErrorMessage)(e)}`); } } exports.createPullRequest = createPullRequest; //# sourceMappingURL=createPullRequest.js.map