71 lines
7.3 KiB
JavaScript
71 lines
7.3 KiB
JavaScript
import * as path from 'path';
|
|
import { REGEX_VAR } from "@polymech/core/constants";
|
|
import { sync as read } from '@polymech/fs/read';
|
|
import { sync as exists } from '@polymech/fs/exists';
|
|
import { isString } from '@polymech/core/types';
|
|
import { resolve, substitute, template } from './variables.js';
|
|
const _resolve = (config) => {
|
|
for (const key in config) {
|
|
if (isString(config[key])) {
|
|
config[key] = template(config[key], config);
|
|
}
|
|
}
|
|
return config;
|
|
};
|
|
export const resolveConfig = (config) => _resolve(config);
|
|
export const parse = (profilePath, profile, options = { env: 'default' }, rel) => {
|
|
profilePath = path.resolve(resolve(profilePath, false, profile.variables));
|
|
if (!exists(profilePath)) {
|
|
return;
|
|
}
|
|
const _profile = read(profilePath, 'json') || { includes: [], variables: {} };
|
|
_profile.includes = _profile.includes || [];
|
|
_profile.variables = _profile.variables || {};
|
|
if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].includes) {
|
|
profile.includes = [
|
|
...profile.includes,
|
|
..._profile.includes,
|
|
..._profile.env[options.env].includes
|
|
];
|
|
}
|
|
else {
|
|
profile.includes = [
|
|
...profile.includes,
|
|
..._profile.includes
|
|
];
|
|
}
|
|
if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].variables) {
|
|
profile.variables = {
|
|
...profile.variables,
|
|
..._profile.variables,
|
|
..._profile.env[options.env].variables
|
|
};
|
|
}
|
|
for (const k in _profile.variables) {
|
|
if (isString(_profile.variables[k])) {
|
|
_profile.variables[k] = substitute(false, _profile.variables[k], profile.variables);
|
|
}
|
|
}
|
|
profile.variables = { ...profile.variables, ..._profile.variables, ..._profile.env[options.env]?.variables || {} };
|
|
for (const k in profile.variables) {
|
|
if (isString(profile.variables[k])) {
|
|
profile.variables[k] = substitute(false, profile.variables[k], profile.variables);
|
|
}
|
|
}
|
|
profile.includes = Array.from(new Set(profile.includes));
|
|
profile.includes = [
|
|
...profile.includes.map((i) => {
|
|
if (!path.isAbsolute(i) && rel && !i.match(REGEX_VAR)) {
|
|
return path.resolve(`${rel}/${i}`);
|
|
}
|
|
let ret = resolve(i, false, profile.variables);
|
|
ret = path.resolve(substitute(false, ret, profile.variables));
|
|
return ret;
|
|
})
|
|
];
|
|
profile.includes = profile.includes.filter((include) => include !== null &&
|
|
include !== '');
|
|
profile.includes = Array.from(new Set(profile.includes));
|
|
return profile;
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBbUI5RCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQThCLEVBQTJCLEVBQUU7SUFDekUsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN2QixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQy9DLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBOEIsRUFBMkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUUxRyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxXQUFtQixFQUFFLE9BQWlCLEVBQUUsVUFBMkIsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBWSxFQUFFLEVBQUU7SUFDekgsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMs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
|