renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
162 lines • 5.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getGitStatusContextCombinedName = getGitStatusContextCombinedName;
exports.getGitStatusContextFromCombinedName = getGitStatusContextFromCombinedName;
exports.getBranchNameWithoutRefsheadsPrefix = getBranchNameWithoutRefsheadsPrefix;
exports.getBranchNameWithoutRefsPrefix = getBranchNameWithoutRefsPrefix;
exports.getRenovatePRFormat = getRenovatePRFormat;
exports.getStorageExtraCloneOpts = getStorageExtraCloneOpts;
exports.max4000Chars = max4000Chars;
exports.getProjectAndRepo = getProjectAndRepo;
exports.getRepoByName = getRepoByName;
exports.mapMergeStrategy = mapMergeStrategy;
const GitInterfaces_js_1 = require("azure-devops-node-api/interfaces/GitInterfaces.js");
const logger_1 = require("../../../logger");
const sanitize_1 = require("../../../util/sanitize");
const string_1 = require("../../../util/string");
const pr_body_1 = require("../pr-body");
function getGitStatusContextCombinedName(context) {
if (!context) {
return undefined;
}
const combinedName = `${context.genre ? `${context.genre}/` : ''}${
// TODO: types (#22198)
context.name}`;
logger_1.logger.trace(`Got combined context name of ${combinedName}`);
return combinedName;
}
function getGitStatusContextFromCombinedName(context) {
if (!context) {
return undefined;
}
let name = context;
let genre;
const lastSlash = context.lastIndexOf('/');
if (lastSlash > 0) {
name = context.substring(lastSlash + 1);
genre = context.substring(0, lastSlash);
}
return {
genre,
name,
};
}
function getBranchNameWithoutRefsheadsPrefix(branchPath) {
if (!branchPath) {
logger_1.logger.error(`getBranchNameWithoutRefsheadsPrefix(undefined)`);
return undefined;
}
if (!branchPath.startsWith('refs/heads/')) {
logger_1.logger.trace(`The refs/heads/ name should have started with 'refs/heads/' but it didn't. (${branchPath})`);
return branchPath;
}
return branchPath.substring(11, branchPath.length);
}
function getBranchNameWithoutRefsPrefix(branchPath) {
if (!branchPath) {
logger_1.logger.error(`getBranchNameWithoutRefsPrefix(undefined)`);
return undefined;
}
if (!branchPath.startsWith('refs/')) {
logger_1.logger.trace(`The ref name should have started with 'refs/' but it didn't. (${branchPath})`);
return branchPath;
}
return branchPath.substring(5, branchPath.length);
}
const stateMap = {
[GitInterfaces_js_1.PullRequestStatus.Abandoned]: 'closed',
[GitInterfaces_js_1.PullRequestStatus.Completed]: 'merged',
};
function getRenovatePRFormat(azurePr) {
const number = azurePr.pullRequestId;
const sourceBranch = getBranchNameWithoutRefsheadsPrefix(azurePr.sourceRefName);
const targetBranch = getBranchNameWithoutRefsheadsPrefix(azurePr.targetRefName);
const bodyStruct = (0, pr_body_1.getPrBodyStruct)(azurePr.description);
const createdAt = azurePr.creationDate?.toISOString();
// TODO #22198
const state = stateMap[azurePr.status] ?? 'open';
const sourceRefName = azurePr.sourceRefName;
return {
...azurePr,
sourceBranch,
state,
number,
bodyStruct,
sourceRefName,
targetBranch,
createdAt,
};
}
function getStorageExtraCloneOpts(config) {
let authType;
let authValue;
if (!config.token && config.username && config.password) {
authType = 'basic';
authValue = (0, string_1.toBase64)(`${config.username}:${config.password}`);
}
else if (config.token?.length === 52) {
authType = 'basic';
authValue = (0, string_1.toBase64)(`:${config.token}`);
}
else {
authType = 'bearer';
authValue = config.token;
}
(0, sanitize_1.addSecretForSanitizing)(authValue, 'global');
return {
'-c': `http.extraHeader=AUTHORIZATION: ${authType} ${authValue}`,
};
}
function max4000Chars(str) {
if (str && str.length >= 4000) {
return str.substring(0, 3999);
}
return str;
}
function getProjectAndRepo(str) {
logger_1.logger.trace(`getProjectAndRepo(${str})`);
const strSplit = str.split(`/`);
if (strSplit.length === 1) {
return {
project: str,
repo: str,
};
}
if (strSplit.length === 2) {
return {
project: strSplit[0],
repo: strSplit[1],
};
}
const msg = `Azure repository can be only structured this way : 'repository' or 'projectName/repository'!`;
logger_1.logger.warn({ repository: str }, msg);
throw new Error(msg);
}
function getRepoByName(name, repos) {
logger_1.logger.trace(`getRepoByName(${name})`);
let { project, repo } = getProjectAndRepo(name);
project = project.toLowerCase();
repo = repo.toLowerCase();
const foundRepo = repos?.find((r) => project === r?.project?.name?.toLowerCase() &&
repo === r?.name?.toLowerCase());
if (!foundRepo) {
logger_1.logger.debug(`Repo not found: ${name}`);
}
return foundRepo ?? null;
}
function mapMergeStrategy(mergeStrategy) {
switch (mergeStrategy) {
case 'rebase':
case 'fast-forward':
return GitInterfaces_js_1.GitPullRequestMergeStrategy.Rebase;
case 'merge-commit':
return GitInterfaces_js_1.GitPullRequestMergeStrategy.NoFastForward;
case 'rebase-merge':
return GitInterfaces_js_1.GitPullRequestMergeStrategy.RebaseMerge;
case 'squash':
return GitInterfaces_js_1.GitPullRequestMergeStrategy.Squash;
default:
return GitInterfaces_js_1.GitPullRequestMergeStrategy.NoFastForward;
}
}
//# sourceMappingURL=util.js.map