renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
67 lines (66 loc) • 2.65 kB
JavaScript
import { logger } from "../../../../logger/index.js";
import { getParsedContent, migrateAndValidateConfig } from "./util.js";
import { isEmptyStringOrWhitespace, isNonEmptyObject, isNonEmptyString, isUndefined } from "@sindresorhus/is";
import fs from "fs-extra";
//#region lib/workers/global/config/parse/additional-config-file.ts
async function getConfig(env) {
let config = {};
const configFile = env.RENOVATE_ADDITIONAL_CONFIG_FILE;
if (!configFile) {
logger.debug("No additional config file found specified - skipping");
return config;
}
if (!await fs.pathExists(configFile)) {
logger.fatal({ configFile }, `Custom additional config file specified in RENOVATE_ADDITIONAL_CONFIG_FILE must exist`);
process.exit(1);
}
logger.debug(`Checking for additional config file in ${configFile}`);
try {
config = await getParsedContent(configFile);
} catch (err) {
if (err instanceof SyntaxError || err instanceof TypeError) {
logger.fatal({ error: err.stack }, "Could not parse additional config file");
process.exit(1);
} else if (err instanceof ReferenceError) {
logger.fatal(`Error parsing additional config file due to unresolved variable(s): ${err.message}`);
process.exit(1);
} else if (err.message === "Unsupported file type") {
logger.fatal(err.message);
process.exit(1);
} else if (env.RENOVATE_ADDITIONAL_CONFIG_FILE) {
logger.debug({ err }, "Parse error");
logger.fatal("Error parsing additional config file");
process.exit(1);
}
logger.debug("Error reading or parsing additional config file - skipping");
}
if (isNonEmptyObject(config.processEnv)) {
const exportedKeys = [];
for (const [key, value] of Object.entries(config.processEnv)) {
if (!isNonEmptyString(value)) {
logger.error({ key }, "processEnv value is not a string.");
continue;
}
exportedKeys.push(key);
process.env[key] = value;
}
logger.debug({ keys: exportedKeys }, "processEnv keys were exported to env");
delete config.processEnv;
}
return migrateAndValidateConfig(config, configFile);
}
async function deleteNonDefaultConfig(env, deleteConfigFile) {
const configFile = env.RENOVATE_ADDITIONAL_CONFIG_FILE;
if (isUndefined(configFile) || isEmptyStringOrWhitespace(configFile)) return;
if (!deleteConfigFile) return;
if (!await fs.pathExists(configFile)) return;
try {
await fs.remove(configFile);
logger.trace({ path: configFile }, "Additional config file successfully deleted");
} catch (err) {
logger.warn({ err }, "Error deleting additional config file");
}
}
//#endregion
export { deleteNonDefaultConfig, getConfig };
//# sourceMappingURL=additional-config-file.js.map