renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
64 lines (63 loc) • 2.3 kB
JavaScript
import { PLATFORM_NOT_FOUND } from "../../constants/error-messages.js";
import { logger } from "../../logger/index.js";
import { parseUrl } from "../../util/url.js";
import { add } from "../../util/host-rules.js";
import { setNoVerify } from "../../util/git/config.js";
import { setPrivateKey } from "../../util/git/private-key.js";
import { setGitAuthor } from "../../util/git/index.js";
import { setPlatformScmApi } from "./scm.js";
import api from "./api.js";
//#region lib/modules/platform/index.ts
const getPlatformList = () => Array.from(api.keys());
let _platform;
const platform = new Proxy({}, { get(_target, prop) {
if (!_platform) throw new Error(PLATFORM_NOT_FOUND);
return _platform[prop];
} });
function setPlatformApi(name) {
if (!api.has(name)) throw new Error(`Init: Platform "${name}" not found. Must be one of: ${getPlatformList().join(", ")}`);
_platform = api.get(name);
setPlatformScmApi(name);
}
async function initPlatform(config) {
setPrivateKey(config.gitPrivateKey, config.gitPrivateKeyPassphrase);
setNoVerify(config.gitNoVerify ?? []);
setPlatformApi(config.platform);
const platformInfo = await platform.initPlatform(config);
const returnConfig = {
...config,
...platformInfo,
hostRules: [...platformInfo?.hostRules ?? [], ...config.hostRules ?? []]
};
// v8 ignore else -- TODO: add test #40625
if (config?.gitAuthor) {
logger.debug(`Using configured gitAuthor (${config.gitAuthor})`);
returnConfig.gitAuthor = config.gitAuthor;
} else if (platformInfo?.gitAuthor) {
logger.debug(`Using platform gitAuthor: ${String(platformInfo.gitAuthor)}`);
returnConfig.gitAuthor = platformInfo.gitAuthor;
}
setGitAuthor(returnConfig.gitAuthor);
const platformRule = { matchHost: parseUrl(returnConfig.endpoint)?.hostname };
if (returnConfig.token) config.token = returnConfig.token;
[
"token",
"username",
"password"
].forEach((field) => {
if (config[field]) {
platformRule[field] = config[field];
delete returnConfig[field];
}
});
const typedPlatformRule = {
...platformRule,
hostType: returnConfig.platform
};
returnConfig.hostRules.push(typedPlatformRule);
add(typedPlatformRule);
return returnConfig;
}
//#endregion
export { getPlatformList, initPlatform, platform, setPlatformApi };
//# sourceMappingURL=index.js.map