@sap/cli-core
Version:
Command-Line Interface (CLI) Core Module
95 lines (94 loc) • 3.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.get = exports.set = exports.setCustomConfig = exports.initialize = void 0;
const lodash_1 = __importDefault(require("lodash"));
const config_1 = __importDefault(require("config"));
const logger_1 = require("../logger");
const utils_1 = require("../utils/utils");
const constants_1 = require("../constants");
const CUSTOM_HOST = "tenant.host";
const CUSTOM_PASSCODE_URL = "tenant.passcodeUrl";
const CUSTOM_PUBLIC_FQDN = "tenant.publicfqdn";
let config;
const CONFIGS_TO_KEEP = [
constants_1.CONFIG_PASSCODE_FUNCTION,
constants_1.CLI_DESCRIPTION,
constants_1.CLI_DISCOVERY_PATHS,
constants_1.CLI_NAME,
constants_1.CLI_PACKAGE_NAME,
constants_1.CLI_SAP_HELP,
constants_1.CLI_SUPPORTED_AUTHENTICATION_METHODS,
constants_1.CLI_VERSION,
constants_1.CLI_DEPRECATED,
constants_1.CLI_DEPRECATION_MESSAGE,
constants_1.CLI_GENERIC_OPTIONS_HELP,
];
const initialize = () => {
const keep = {};
for (const keepConfig of CONFIGS_TO_KEEP) {
keep[keepConfig] = config?.[keepConfig];
}
config = {};
for (const keepConfig of CONFIGS_TO_KEEP) {
if (keep[keepConfig]) {
config[keepConfig] = keep[keepConfig];
}
}
};
exports.initialize = initialize;
(0, exports.initialize)();
const getLogger = () => (0, logger_1.get)("config");
const setCustomConfig = () => {
const { trace, debug } = getLogger();
debug("setting custom configuration");
const sources = config_1.default.util.getConfigSources();
trace("config.custom.getConfigSources", JSON.stringify(sources, null, 2));
trace("config.custom.NODE_CONFIG_DIR", config_1.default.util.getEnv("NODE_CONFIG_DIR"));
trace("config.custom.NODE_ENV", config_1.default.util.getEnv("NODE_ENV"));
trace("config.custom.NODE_CONFIG", JSON.stringify(config_1.default.util.getEnv("NODE_CONFIG"), null, 2));
trace("config.custom.HOSTNAME", config_1.default.util.getEnv("HOSTNAME"));
trace("config.custom.NODE_APP_INSTANCE", config_1.default.util.getEnv("NODE_APP_INSTANCE"));
if (config_1.default.has(CUSTOM_HOST)) {
config.host = config_1.default.get(CUSTOM_HOST);
config.hostSetFromCustomConfig = true;
}
if (config_1.default.has(CUSTOM_PASSCODE_URL)) {
config.passcodeUrl = config_1.default.get(CUSTOM_PASSCODE_URL);
}
if (config_1.default.has(CUSTOM_PUBLIC_FQDN)) {
config.publicfqdn = (0, utils_1.parseTenant)(config_1.default.get(CUSTOM_PUBLIC_FQDN));
}
};
exports.setCustomConfig = setCustomConfig;
(0, exports.setCustomConfig)();
const setTenant = (tenant) => {
const info = (0, utils_1.getInfoFromTenant)(tenant, config.verbose);
// eslint-disable-next-line @typescript-eslint/no-use-before-define
(0, exports.set)({ ...info, newTenant: tenant });
};
const set = (c) => {
const { trace } = getLogger();
const prev = JSON.parse(JSON.stringify(config));
if (c.tenant) {
setTenant(c.tenant);
}
else {
config = lodash_1.default.merge(config, c);
if (config.newTenant) {
config.tenant = config.newTenant;
delete config.newTenant;
}
if (c.data) {
config.data = c.data;
}
if (!lodash_1.default.isEqual(prev, config)) {
trace("configuration changed. previous: %s, current: %s", JSON.stringify(prev), JSON.stringify(config));
}
}
};
exports.set = set;
const get = () => config;
exports.get = get;