UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

46 lines (45 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.create = void 0; exports.readSecretsFile = readSecretsFile; const fs_extra_1 = require("fs-extra"); const next_1 = require("../../../next"); const constants_1 = require("../../../../../constants"); const logger_1 = require("../../../../../logger"); const config_1 = require("../../../../../config"); const options_1 = require("../../../../../utils/options"); const options_2 = require("../../../options"); const SecretsStorageSingleton_1 = require("../../../../../cache/secrets/SecretsStorageSingleton"); const utils_1 = require("../../../../../cache/secrets/utils"); async function readSecretsFile() { const { output, error, debug } = (0, logger_1.get)("commands.handler.authentication.oauth.secretsProvider.file.readSecretsFile"); const secretsFile = (0, options_1.getOptionValueFromConfig)(constants_1.OPTION_SECRETS_FILE); const config = (0, config_1.get)(); try { let content = JSON.parse(await (0, fs_extra_1.readFile)(secretsFile, "utf8")); content.tenantUrl = config.tenantUrl ?? content.tenantUrl; content.customClient = (0, utils_1.isCustomClient)(content.client_id); content = await (0, utils_1.updateUrls)(content); debug("secrets found from file"); const consistent = (0, utils_1.isSecretConsistent)(content); if (!consistent.consistent) { output(`the provided secrets file is not consistent. ${consistent.errors.join(". ")}`); throw new Error("inconsistent secrets file"); } return content; } catch (err) { error("failed to read secrets from file", err); output(`The secrets file at location ${secretsFile} could not be read and JSON.parse'd.` + `Does the file exist and is it a valid JSON file?`); throw err; } } const handler = async () => async () => { const { info } = (0, logger_1.get)("commands.handler.authentication.oauth.secretsProvider.file"); info("reading secrets from file"); const content = await readSecretsFile(); await SecretsStorageSingleton_1.SecretsStorageSingleton.SINGLETON.storeSecret(content); }; const create = () => (0, next_1.create)("commands.handler.authentication.oauth.secretsProvider.file", (0, options_2.create)([constants_1.OPTION_SECRETS_FILE]), handler); exports.create = create;