mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
94 lines
3.0 KiB
JavaScript
94 lines
3.0 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
function resolveRefString(str, values) {
|
||
|
var _a = parse(str), strings = _a.strings, rawRefs = _a.rawRefs;
|
||
|
var refValues = rawRefs.map(function (ref) { return resolveRef(ref, values); });
|
||
|
var res = '';
|
||
|
for (var i = 0; i < refValues.length; i++) {
|
||
|
res += strings[i];
|
||
|
res += refValues[i];
|
||
|
}
|
||
|
res += strings.pop();
|
||
|
return res;
|
||
|
}
|
||
|
exports.resolveRefString = resolveRefString;
|
||
|
function resolveEnvsInValues(config, env) {
|
||
|
for (var key in config) {
|
||
|
var value = config[key];
|
||
|
if (typeof value === 'string') {
|
||
|
config[key] = resolveRefString(value, { env: env });
|
||
|
}
|
||
|
else if (typeof value === 'object') {
|
||
|
config[key] = resolveEnvsInValues(value, env);
|
||
|
}
|
||
|
}
|
||
|
return config;
|
||
|
}
|
||
|
exports.resolveEnvsInValues = resolveEnvsInValues;
|
||
|
function getUsedEnvs(config) {
|
||
|
var result = {};
|
||
|
var traverse = function (val) {
|
||
|
if (typeof val === 'string') {
|
||
|
var rawRefs = parse(val).rawRefs;
|
||
|
for (var _i = 0, rawRefs_1 = rawRefs; _i < rawRefs_1.length; _i++) {
|
||
|
var ref = rawRefs_1[_i];
|
||
|
result[parseRef(ref).ref] = resolveRef(ref, {}, false);
|
||
|
}
|
||
|
}
|
||
|
else if (typeof val === 'object') {
|
||
|
for (var key in val) {
|
||
|
traverse(val[key]);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
traverse(config);
|
||
|
return result;
|
||
|
}
|
||
|
exports.getUsedEnvs = getUsedEnvs;
|
||
|
function parseRef(rawRef) {
|
||
|
var _a = rawRef.split(/\s*:\s*/), type = _a[0], ref = _a[1];
|
||
|
return { type: type, ref: ref };
|
||
|
}
|
||
|
function resolveRef(rawRef, values, throwIfUndef) {
|
||
|
if (values === void 0) { values = {}; }
|
||
|
if (throwIfUndef === void 0) { throwIfUndef = true; }
|
||
|
var _a = parseRef(rawRef), type = _a.type, ref = _a.ref;
|
||
|
if (type === 'env') {
|
||
|
if (!ref) {
|
||
|
throw new Error("Reference value is not present for " + type + ": " + rawRef);
|
||
|
}
|
||
|
var refValue = (values.env && values.env[ref]) || process.env[ref];
|
||
|
if (!refValue) {
|
||
|
if (throwIfUndef) {
|
||
|
throw new Error("Environment variable " + ref + " is not set");
|
||
|
}
|
||
|
else {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
return refValue;
|
||
|
}
|
||
|
else {
|
||
|
// support only 'env' for now
|
||
|
throw new Error('Undefined reference type ${refType}. Only "env" is supported');
|
||
|
}
|
||
|
}
|
||
|
function parse(str) {
|
||
|
var regex = /\${([^}]*)}/g;
|
||
|
var strings = [];
|
||
|
var rawRefs = [];
|
||
|
var prevIdx = 0;
|
||
|
var match;
|
||
|
// tslint:disable-next-line:no-conditional-assignment
|
||
|
while ((match = regex.exec(str)) !== null) {
|
||
|
if (match.index > 0 && str[match.index - 1] === '\\') {
|
||
|
continue;
|
||
|
}
|
||
|
strings.push(str.substring(prevIdx, match.index));
|
||
|
rawRefs.push(match[1]);
|
||
|
prevIdx = match.index + match[0].length;
|
||
|
}
|
||
|
strings.push(str.substring(prevIdx));
|
||
|
return { strings: strings, rawRefs: rawRefs };
|
||
|
}
|