@secustor/backstage-plugin-renovate-common
Version:
Common functionalities for the renovate plugin
90 lines (84 loc) • 2.27 kB
JavaScript
;
var catalogModel = require('@backstage/catalog-model');
var gitUrlParse = require('git-url-parse');
var is = require('@sindresorhus/is');
var schema = require('./schema.cjs.js');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var gitUrlParse__default = /*#__PURE__*/_interopDefaultCompat(gitUrlParse);
var is__default = /*#__PURE__*/_interopDefaultCompat(is);
function getTaskID(target) {
const repo = getTargetRepo(target);
return `renovate_run_${repo.host}_${repo.repository}`;
}
function getTargetRepo(target) {
if (isTargetRepo(target)) {
return target;
}
const url = getTargetURL(target);
return {
host: url.resource,
repository: url.full_name
};
}
function getTargetRepoSafe(target) {
try {
return getTargetRepo(target);
} catch (e) {
return null;
}
}
function parseUrl(url) {
if (!url) {
return null;
}
try {
return new URL(url);
} catch (err) {
return null;
}
}
function parseGitUrl(url) {
if (!url) {
return null;
}
try {
return gitUrlParse__default.default(url);
} catch (err) {
return null;
}
}
function getTargetURL(target) {
let rawTargetUrl = is__default.default.string(target) ? target : target?.metadata.annotations?.[catalogModel.ANNOTATION_SOURCE_LOCATION];
if (rawTargetUrl?.startsWith("url:")) {
rawTargetUrl = rawTargetUrl.replace("url:", "");
}
if (!rawTargetUrl?.includes("://")) {
rawTargetUrl = `https://${rawTargetUrl}`;
}
const targetUrl = parseGitUrl(rawTargetUrl);
if (is__default.default.nullOrUndefined(targetUrl)) {
throw new Error(
`Could not identify platform url via ${JSON.stringify(target)}`
);
}
return targetUrl;
}
function isTargetRepo(value) {
return schema.targetRepo.safeParse(value).success;
}
function isEntityRef(ref) {
try {
catalogModel.parseEntityRef(ref);
return true;
} catch (e) {
return false;
}
}
exports.getTargetRepo = getTargetRepo;
exports.getTargetRepoSafe = getTargetRepoSafe;
exports.getTargetURL = getTargetURL;
exports.getTaskID = getTaskID;
exports.isEntityRef = isEntityRef;
exports.parseGitUrl = parseGitUrl;
exports.parseUrl = parseUrl;
//# sourceMappingURL=utils.cjs.js.map