UNPKG

@lamantin/fastpush

Version:

Typed fastlane frontend for pushing builds to store

96 lines 3.03 kB
"use strict"; 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