backport
Version:
A CLI tool that automates the process of backporting commits
68 lines • 2.67 kB
JavaScript
;
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