@sap/cli-core
Version:
Command-Line Interface (CLI) Core Module
46 lines (45 loc) • 2.39 kB
JavaScript
;
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;