UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

95 lines (94 loc) 3.68 kB
"use strict"; 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;