@sap/cf-tools
Version:
Cloud Foundry API tools
126 lines • 4.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseRawDictData = exports.padQuerySpace = exports.getSpaceGuidThrowIfUndefined = exports.cfGetConfigFileField = exports.cfGetConfigFileJson = exports.isUpsType = exports.cfGetConfigFilePath = exports.getTags = exports.getOrgGUID = exports.getSpaceFieldGUID = exports.getDescription = exports.getLabel = exports.getName = exports.getGuid = exports.padQuery = exports.ensureQuery = exports.dataContentAsObject = void 0;
const _ = require("lodash");
const os = require("os");
const fs = require("fs");
const path = require("path");
const comment_json_1 = require("comment-json");
const messages_1 = require("./messages");
const types_1 = require("./types");
async function dataContentAsObject(filePath) {
try {
return _.reduce(_.split(await fs.promises.readFile(filePath, { encoding: "utf8" }), os.EOL), (data, line) => {
const parts = _.split(line, "=");
if (_.size(parts) > 1) {
data[_.trim(parts[0])] = _.trim(parts[1]);
}
return data;
}, {});
}
catch (error) {
return {};
}
}
exports.dataContentAsObject = dataContentAsObject;
function ensureQuery(query) {
query = query || {};
_.defaults(query, { filters: [] });
_.defaults(query, { per_page: types_1.CF_PAGE_SIZE });
return query;
}
exports.ensureQuery = ensureQuery;
function padQuery(query, otherFilters) {
query = ensureQuery(query);
_.each(otherFilters, (other) => {
const filter = _.find(query.filters, ["key", other.key]);
if (!_.size(filter === null || filter === void 0 ? void 0 : filter.value)) {
query.filters = _.concat(query.filters, [other]);
}
});
return query;
}
exports.padQuery = padQuery;
function getGuid(resource) {
return _.get(resource, "guid", "");
}
exports.getGuid = getGuid;
function getName(resource) {
return _.get(resource, "name", "");
}
exports.getName = getName;
function getLabel(resource) {
return _.get(resource, "label", "");
}
exports.getLabel = getLabel;
function getDescription(resource) {
return _.get(resource, "description", "");
}
exports.getDescription = getDescription;
function getSpaceFieldGUID(spaceField) {
return _.get(spaceField, "GUID", "");
}
exports.getSpaceFieldGUID = getSpaceFieldGUID;
function getOrgGUID(resource) {
return _.get(resource, ["relationships", "organization", "data", "guid"], "");
}
exports.getOrgGUID = getOrgGUID;
function getTags(resource) {
return _.get(resource, "tags", []);
}
exports.getTags = getTags;
function cfGetConfigFilePath(target) {
const relatives = target ? ["targets", `${target}.config.json`] : [`config.json`];
return path.join(_.get(process, "env.CF_HOME", os.homedir()), ".cf", ...relatives);
}
exports.cfGetConfigFilePath = cfGetConfigFilePath;
function isUpsType(resource) {
return _.get(resource, "type", types_1.eServiceTypes.managed) === types_1.eServiceTypes.user_provided;
}
exports.isUpsType = isUpsType;
async function cfGetConfigFileJson(target) {
try {
return (0, comment_json_1.parse)(await fs.promises.readFile(cfGetConfigFilePath(target), { encoding: "utf8" }));
}
catch (error) {
}
}
exports.cfGetConfigFileJson = cfGetConfigFileJson;
async function cfGetConfigFileField(field, target) {
return _.get(await cfGetConfigFileJson(target), `${field}`);
}
exports.cfGetConfigFileField = cfGetConfigFileField;
async function getSpaceGuidThrowIfUndefined() {
const space = getSpaceFieldGUID(await cfGetConfigFileField("SpaceFields"));
if (!space) {
throw new Error(messages_1.messages.cf_setting_not_set);
}
return space;
}
exports.getSpaceGuidThrowIfUndefined = getSpaceGuidThrowIfUndefined;
async function padQuerySpace(query, otherFilters) {
query = padQuery(query, otherFilters);
const filter = _.find(query.filters, ["key", types_1.eFilters.space_guids]);
if (!_.size(filter === null || filter === void 0 ? void 0 : filter.value)) {
query.filters = _.concat(query.filters, [
{ key: types_1.eFilters.space_guids, value: await getSpaceGuidThrowIfUndefined() },
]);
}
return query;
}
exports.padQuerySpace = padQuerySpace;
function parseRawDictData(data) {
const result = {};
_.each(_.compact(_.split(data, "\n")), (item) => {
item = _.replace(_.trim(item), /^['"]|['"]$/g, "");
const sep = _.indexOf(item, ":");
if (sep > -1) {
const key = _.toLower(_.trim(_.join(_.slice(item, 0, sep), "")));
const value = _.trim(_.join(_.slice(item, sep + 1), ""));
result[`${key}`] = value;
}
});
return result;
}
exports.parseRawDictData = parseRawDictData;
//# sourceMappingURL=utils.js.map