backport
Version:
A CLI tool that automates the process of backporting commits
98 lines • 5.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCommits = exports.backportRun = exports.getOptionsFromGithub = exports.getProjectConfig = exports.getGlobalConfig = exports.BackportError = exports.getTargetBranchFromLabel = void 0;
require("./lib/apm");
const elastic_apm_node_1 = __importDefault(require("elastic-apm-node"));
const backportRun_1 = require("./backportRun");
const fetchCommitByPullNumber_1 = require("./lib/github/v4/fetchCommits/fetchCommitByPullNumber");
const fetchCommitBySha_1 = require("./lib/github/v4/fetchCommits/fetchCommitBySha");
const fetchCommitsByAuthor_1 = require("./lib/github/v4/fetchCommits/fetchCommitsByAuthor");
const fetchPullRequestsBySearchQuery_1 = require("./lib/github/v4/fetchCommits/fetchPullRequestsBySearchQuery");
const getOptionsFromGithub_1 = require("./lib/github/v4/getOptionsFromGithub/getOptionsFromGithub");
const logger_1 = require("./lib/logger");
const excludeUndefined_1 = require("./utils/excludeUndefined");
var getPullRequestStates_1 = require("./lib/sourceCommit/getPullRequestStates");
Object.defineProperty(exports, "getTargetBranchFromLabel", { enumerable: true, get: function () { return getPullRequestStates_1.getTargetBranchFromLabel; } });
var BackportError_1 = require("./lib/BackportError");
Object.defineProperty(exports, "BackportError", { enumerable: true, get: function () { return BackportError_1.BackportError; } });
var globalConfig_1 = require("./options/config/globalConfig");
Object.defineProperty(exports, "getGlobalConfig", { enumerable: true, get: function () { return globalConfig_1.getGlobalConfig; } });
var projectConfig_1 = require("./options/config/projectConfig");
Object.defineProperty(exports, "getProjectConfig", { enumerable: true, get: function () { return projectConfig_1.getProjectConfig; } });
// wrap `getOptionsFromGithub` with logger
function getOptionsFromGithub(options) {
(0, logger_1.initLogger)({ interactive: false, accessToken: options.accessToken });
return (0, getOptionsFromGithub_1.getOptionsFromGithub)(options);
}
exports.getOptionsFromGithub = getOptionsFromGithub;
async function backportRun({ options = {}, processArgs = [], exitCodeOnFailure = true, }) {
const apmTransaction = elastic_apm_node_1.default.startTransaction('API: backportRun');
const res = await (0, backportRun_1.backportRun)({
optionsFromModule: (0, excludeUndefined_1.excludeUndefined)(options),
processArgs,
exitCodeOnFailure,
apmTransaction,
});
elastic_apm_node_1.default.endTransaction(res.status);
return res;
}
exports.backportRun = backportRun;
async function getCommits(options) {
return apmStartTransaction('API: getCommits', async () => {
(0, logger_1.initLogger)({ interactive: false, accessToken: options.accessToken });
const optionsFromGithub = await (0, getOptionsFromGithub_1.getOptionsFromGithub)(options);
if (options.pullNumber) {
const pullNumbers = Array.isArray(options.pullNumber)
? options.pullNumber
: [options.pullNumber];
const nestedCommits = await Promise.all(pullNumbers.map((pullNumber) => (0, fetchCommitByPullNumber_1.fetchCommitsByPullNumber)({
...optionsFromGithub,
...options,
pullNumber,
})));
return nestedCommits.flat();
}
if (options.sha) {
const shas = Array.isArray(options.sha) ? options.sha : [options.sha];
return Promise.all(shas.map((sha) => (0, fetchCommitBySha_1.fetchCommitBySha)({ ...optionsFromGithub, ...options, sha })));
}
if (options.prFilter) {
return (0, fetchPullRequestsBySearchQuery_1.fetchPullRequestsBySearchQuery)({
...optionsFromGithub,
...options,
prFilter: options.prFilter,
author: options.author ?? null,
dateSince: options.dateSince ?? null,
dateUntil: options.dateUntil ?? null,
});
}
if (options.author) {
return (0, fetchCommitsByAuthor_1.fetchCommitsByAuthor)({
...optionsFromGithub,
...options,
author: options.author,
dateSince: options.dateSince ?? null,
dateUntil: options.dateUntil ?? null,
});
}
throw new Error('Must supply one of: `pullNumber`, `sha`, `prFilter` or `author`');
});
}
exports.getCommits = getCommits;
async function apmStartTransaction(transactionName, cb) {
elastic_apm_node_1.default.startTransaction(transactionName);
try {
const res = await cb();
elastic_apm_node_1.default.endTransaction('success');
return res;
}
catch (e) {
elastic_apm_node_1.default.captureError(e);
elastic_apm_node_1.default.endTransaction('failure');
throw e;
}
}
//# sourceMappingURL=entrypoint.api.js.map