on-merge/index.js (127 lines of code) (raw):

"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const core = __importStar(require("@actions/core")); const github_1 = require("@actions/github"); const backport_1 = require("backport"); const backportTargets_1 = require("./backportTargets"); const util_1 = require("./util"); const versions_1 = require("./versions"); async function init() { const { payload, repo } = github_1.context; if (!payload.pull_request) { throw Error('Only pull_request events are supported.'); } const accessToken = core.getInput('github_token', { required: true }); const github = (0, github_1.getOctokit)(accessToken).rest; const versionsConfig = await github.repos.getContent({ ...github_1.context.repo, ref: 'main', path: 'versions.json', }); const backportConfig = await github.repos.getContent({ ...github_1.context.repo, ref: 'main', path: '.backportrc.json', }); const versionsJSON = Buffer.from(versionsConfig.data.content, 'base64').toString(); const backportJSON = Buffer.from(backportConfig.data.content, 'base64').toString(); const versionsRaw = JSON.parse(versionsJSON); const backportRaw = JSON.parse(backportJSON); const versions = (0, versions_1.parseVersions)(versionsRaw); const versionMap = (backportRaw === null || backportRaw === void 0 ? void 0 : backportRaw.branchLabelMapping) || {}; const pullRequestPayload = payload; const pullRequest = pullRequestPayload.pull_request; if (pullRequest.base.ref === 'main') { const currentLabel = `v${versions.currentMinor.version}`; if (!pullRequest.labels.some((label) => label.name === currentLabel)) { await github.issues.addLabels({ ...github_1.context.repo, issue_number: pullRequest.number, labels: [currentLabel], }); } const targets = (0, backportTargets_1.resolveTargets)(versions, versionMap, pullRequest.labels.map((label) => label.name)); if (!(0, util_1.labelsContain)(pullRequest.labels, 'backport:skip') && targets.length) { try { let actionUrl = ''; if (process.env.GITHUB_SERVER_URL && process.env.GITHUB_REPOSITORY && process.env.GITHUB_RUN_ID) { actionUrl = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`; } await github.issues.createComment({ ...repo, issue_number: pullRequest.number, body: `Starting backport for target branches: ${targets.join(', ')}${actionUrl ? '\n\n' + actionUrl : ''}`, }); await github.pulls.update({ ...repo, pull_number: pullRequest.number, body: `${pullRequest.body}\n\n<!--ONMERGE ${JSON.stringify({ backportTargets: targets, })} ONMERGE-->`, }); } catch (error) { console.error('An error occurred', error); core.setFailed(error.message); } await (0, backport_1.backportRun)({ options: { repoOwner: repo.owner, repoName: repo.repo, accessToken, interactive: false, pullNumber: pullRequest.number, assignees: [pullRequest.user.login], autoMerge: true, autoMergeMethod: 'squash', targetBranches: targets, publishStatusCommentOnFailure: true, publishStatusCommentOnSuccess: true, // TODO this will flip to false once we have backport summaries implemented }, }); } } else if ((0, util_1.labelsContain)(pullRequest.labels, 'backport')) { const prData = (0, util_1.getPrBackportData)(pullRequest.body); if (prData) { const version = await (0, util_1.getPrPackageVersion)(github, repo.owner, repo.repo, pullRequest.base.ref); for (const pr of prData) { if (!pr.sourcePullRequest) { continue; } await github.issues.addLabels({ ...github_1.context.repo, issue_number: pr.sourcePullRequest.number, labels: [`v${version}`], // TODO switch this to use getVersionLabel when it's appropriate to increment patch versions after BCs }); } } } } init().catch((error) => { console.error('An error occurred', error); core.setFailed(error.message); }); //# sourceMappingURL=index.js.map