react-native-asset
Version:
Linking and unlinking of assets in your react-native app, works for fonts and sounds
46 lines (41 loc) • 1.28 kB
JavaScript
module.exports = (args, options) => {
const knownCliParams = Object.keys(options)
.reduce((arr, k) => arr.concat(options[k].cliParams), []);
const params = {};
Object.keys(options).forEach((paramName) => {
const { type, cliParams, default: defaultValue } = options[paramName];
let value = defaultValue;
switch (type) {
case 'array': {
const paramIndex = args.findIndex(arg => cliParams.indexOf(arg) !== -1);
if (paramIndex !== -1) {
value = [];
let index = 0;
let nextArg = args[paramIndex + 1 + index];
while (nextArg !== undefined && knownCliParams.indexOf(nextArg) === -1) {
value = value.concat(nextArg);
index += 1;
nextArg = args[paramIndex + 1 + index];
}
}
break;
}
case 'value': {
const paramIndex = args.findIndex(arg => cliParams.indexOf(arg) !== -1);
if (paramIndex !== -1) {
value = args[paramIndex + 1];
}
break;
}
case 'bool': {
value = args.find(arg => cliParams.indexOf(arg) !== -1) !== undefined;
break;
}
default:
}
if (value !== undefined) {
params[paramName] = value;
}
});
return params;
};