@lamantin/fastpush
Version:
Typed fastlane frontend for pushing builds to store
96 lines • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapObjectToArgs = exports.mapLanesToString = void 0;
const ts_pattern_1 = require("ts-pattern");
function mapObject(arg) {
return `{${Object.keys(arg.value).map(keyParam => {
const valueParam = arg.value[keyParam];
if (Array.isArray(valueParam)) {
return `"${keyParam}" => ${valueParam.map(arg => {
return arg;
})}`;
}
else if (typeof valueParam === 'object') {
return `"${keyParam}" => ${mapObject(valueParam)}`;
}
return `"${keyParam}" => "${normalizeValue(valueParam)}"`;
})}}`;
}
function mapArgumentToString(arg) {
if (typeof arg.value === 'object') {
if (Array.isArray(arg.value)) {
return `"${arg.name}": {${arg.value.map(mapArgumentToString)}}`;
}
else {
return `"${arg.name}": ${mapObject(arg)}`;
}
}
else if ((typeof arg.value === 'string' && arg.value.startsWith('ENV[')) ||
typeof arg.value === 'boolean' ||
arg.value === 'nil') {
return `"${arg.name}": ${normalizeValue(arg.value)}`;
}
else {
return `"${arg.name}": "${normalizeValue(arg.value)}"`;
}
}
function mapLanesToString(lanes) {
const laneString = lanes.map(lane => {
var _a;
const args = ((_a = lane.args) === null || _a === void 0 ? void 0 : _a.map(mapArgumentToString)) || '';
if (args) {
return `${lane.name}(${args})`;
}
else {
return `${lane.name}`;
}
});
return `lanes:'[${laneString}]'`;
}
exports.mapLanesToString = mapLanesToString;
// [gradle(task: "clean",system_properties: {"applicationIdInject" => "flavor.android.id"})]
function mapObjectToArgs(object) {
if (!object)
return [];
if (typeof object !== 'object') {
throw "'object' param must be object";
}
return Object.keys(object)
.filter(key => {
const value = object[key];
return !!value;
})
.map(key => {
const value = ts_pattern_1.match(typeof object[key])
.with('string', () => {
return object[key];
})
.with('number', () => {
return object[key];
})
.with('object', () => {
return mapObjectToArgs(object[key]);
})
.with('boolean', () => {
return object[key];
})
.otherwise(() => {
throw `Value ${object[key]} of ${key} should not to be a ${typeof object[key]}`;
});
return {
name: key,
value: value,
};
});
}
exports.mapObjectToArgs = mapObjectToArgs;
function replaceAll(input, search, replace) {
if (typeof input === 'string') {
return input.split(search).join(replace);
}
return input;
}
function normalizeValue(value) {
return replaceAll(value, `"`, `\"`);
}
//# sourceMappingURL=mappers.js.map