UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

147 lines (146 loc) • 6.69 kB
import { CONFIG_PRESETS_INVALID } from "../../../../constants/error-messages.js"; import { setCustomEnv } from "../../../../util/env.js"; import { setUserConfigFileNames } from "../../../../config/app-strings.js"; import { addSecretForSanitizing } from "../../../../util/sanitize.js"; import { logger, setContext } from "../../../../logger/index.js"; import { ensureTrailingSlash } from "../../../../util/url.js"; import { mergeChildConfig } from "../../../../config/utils.js"; import { coerceArray } from "../../../../util/array.js"; import { resolveConfigPresets } from "../../../../config/presets/index.js"; import { readSystemFile } from "../../../../util/fs/index.js"; import { deleteNonDefaultConfig, getConfig } from "./file.js"; import { setPrivateKeys } from "../../../../config/decrypt.js"; import { getConfig as getConfig$1 } from "../../../../config/defaults.js"; import { applySecretsAndVariablesToConfig } from "../../../../config/secrets.js"; import { deleteNonDefaultConfig as deleteNonDefaultConfig$1, getConfig as getConfig$2 } from "./additional-config-file.js"; import { getConfig as getConfig$3 } from "./cli.js"; import { setConfig } from "./codespaces.js"; import { getConfig as getConfig$4 } from "./env.js"; import { isNonEmptyArray, isNonEmptyObject } from "@sindresorhus/is"; //#region lib/workers/global/config/parse/index.ts async function resolveGlobalExtends(globalExtends, ignorePresets) { try { const { config: resolvedConfig } = await resolveConfigPresets({ extends: globalExtends, ignorePresets }); return resolvedConfig; } catch (err) { logger.error({ err }, "Error resolving config preset"); throw new Error(CONFIG_PRESETS_INVALID); } } async function parseConfigs(env, argv) { logger.debug("Parsing configs"); const defaultConfig = getConfig$1(); const fileConfig = await getConfig(env); const additionalFileConfig = await getConfig$2(env); const cliConfig = getConfig$3(argv); const envConfig = await getConfig$4(env); let config = mergeChildConfig(fileConfig, additionalFileConfig); if (isNonEmptyArray(fileConfig.extends) && isNonEmptyArray(additionalFileConfig.extends)) config.extends = [...fileConfig.extends, ...config.extends ?? []]; config = mergeChildConfig(config, envConfig); config = mergeChildConfig(config, cliConfig); config = await setConfig(config); let resolvedGlobalExtends; if (isNonEmptyArray(config?.globalExtends)) { resolvedGlobalExtends = await resolveGlobalExtends(config.globalExtends, config.ignorePresets); config = mergeChildConfig(resolvedGlobalExtends, config); delete config.globalExtends; } const combinedConfig = config; config = mergeChildConfig(defaultConfig, config); if (config.forceCli) { const forcedCli = { ...cliConfig }; delete forcedCli.token; delete forcedCli.hostRules; if (config.force) config.force = { ...config.force, ...forcedCli }; else config.force = forcedCli; } if (!config.privateKey && config.privateKeyPath) { config.privateKey = await readSystemFile(config.privateKeyPath, "utf8"); delete config.privateKeyPath; } if (!config.privateKeyOld && config.privateKeyPathOld) { config.privateKeyOld = await readSystemFile(config.privateKeyPathOld, "utf8"); delete config.privateKeyPathOld; } addSecretForSanitizing(config.privateKey, "global"); addSecretForSanitizing(config.privateKeyOld, "global"); setPrivateKeys(config.privateKey, config.privateKeyOld); delete config.privateKey; delete config.privateKeyOld; if (config.logContext) setContext(config.logContext); logger.trace({ config: defaultConfig }, "Default config"); logger.debug({ config: fileConfig }, "File config"); logger.debug({ config: additionalFileConfig }, "Additional file config"); logger.debug({ config: cliConfig }, "CLI config"); logger.debug({ config: envConfig }, "Env config"); logger.debug({ config: resolvedGlobalExtends }, "Resolved global extends"); logger.debug({ config: combinedConfig }, "Combined config"); if (isNonEmptyArray(cliConfig.repositories)) { const existingRepos = [ ...fileConfig.repositories ?? [], ...additionalFileConfig.repositories ?? [], ...envConfig.repositories ?? [] ]; if (isNonEmptyArray(existingRepos)) { const allStrings = existingRepos.every((repo) => typeof repo === "string"); let shouldWarn = true; if (allStrings) { if (cliConfig.repositories.length === existingRepos.length && cliConfig.repositories.every((repo, idx) => repo === existingRepos[idx])) shouldWarn = false; } if (shouldWarn) logger.warn("CLI config is overridding the `repositories` config previously set"); } } if (config.detectGlobalManagerConfig) { logger.debug("Detecting global manager config"); const { detectAllGlobalConfig } = await import("../../../../modules/manager/index.js"); const globalManagerConfig = await detectAllGlobalConfig(); logger.debug({ config: globalManagerConfig }, "Global manager config"); config = mergeChildConfig(config, globalManagerConfig); } if (config.detectHostRulesFromEnv) { const { hostRulesFromEnv } = await import("./host-rules-from-env.js"); const hostRules = hostRulesFromEnv(env); config.hostRules = [...coerceArray(config.hostRules), ...hostRules]; } logger.trace({ config }, "Full config"); if (config.endpoint) { logger.debug("Adding trailing slash to endpoint"); config.endpoint = ensureTrailingSlash(config.endpoint); } if (!config.autodiscover && config.forkProcessing !== "disabled") { logger.debug("Enabling forkProcessing while in non-autodiscover mode"); config.forkProcessing = "enabled"; } await deleteNonDefaultConfig(env, !!config.deleteConfigFile); await deleteNonDefaultConfig$1(env, !!config.deleteAdditionalConfigFile); if (!config.autodiscover && config.onboardingNoDeps !== "disabled") { logger.debug("Enabling onboardingNoDeps while in non-autodiscover mode"); config.onboardingNoDeps = "enabled"; } if (isNonEmptyObject(config.secrets) || isNonEmptyObject(config.variables)) { config = applySecretsAndVariablesToConfig({ config, secrets: config.secrets, variables: config.variables, deleteSecrets: false, deleteVariables: false }); for (const secret of Object.values(config.secrets)) addSecretForSanitizing(secret, "global"); } if (isNonEmptyObject(config.customEnvVariables)) setCustomEnv(config.customEnvVariables); if (isNonEmptyArray(config.configFileNames)) { logger.debug({ configFileNames: config.configFileNames }, "Updated the config filenames list"); setUserConfigFileNames(config.configFileNames); delete config.configFileNames; } return config; } //#endregion export { parseConfigs, resolveGlobalExtends }; //# sourceMappingURL=index.js.map