UNPKG

tarifa

Version:

Your friendly toolchain for mobile app development on top of Apache Cordova

80 lines (70 loc) 2.21 kB
var path = require('path'), Q = require('q'), format = require('util').format, chalk = require('chalk'); var device = function (desc, platform) { return { id: desc.udid || desc.name || desc.id || desc, platform: platform, description: desc }; }; var list = function (platform) { var m = path.resolve(__dirname, 'platforms', platform, 'lib/device.js'); return require(m).list().then(function (ds) { return ds.map(function (d) { return device(d, platform); }); }); }; var ids = function (platform) { return list(platform).then(function (ds) { return ds.map(function (dev) { return dev.id; }); }); }; var prettifyDevice = function (platform) { return function (adevice) { return format( chalk.green('%s device with id: %s'), chalk.bold(platform), chalk.bold.black(adevice.id) ); }; }; var prettifyDeviceWithDescription = function (platform) { return function (adevice) { var msg = prettifyDevice(platform)(adevice), attr, v; for (attr in adevice.description) { v = adevice.description[attr]; if(v) msg += format('\n %s: %s', attr, v); } return msg; }; }; var prettifyWithDescription = function (platform) { return list(platform).then(function (ds) { return ds.reduce(function (p, d) { return Q.when(p, function (msg) { return msg + (msg.length ? '\n' : '') + prettifyDeviceWithDescription(platform)(d); }); }, ''); }); }; var prettify = function (platform) { return list(platform).then(function (ds) { return ds.reduce(function (p, d) { return Q.when(p, function (msg) { return msg + (msg.length ? '\n' : '') + prettifyDevice(platform)(d); }); }, ''); }); }; var isSupported = function (platform) { var mod = path.resolve(__dirname, 'platforms', platform, 'lib/device.js'); return require(mod).isSupported; }; module.exports = { list: list, ids: ids, prettify: prettify, prettifyWithDescription: prettifyWithDescription, isSupported: isSupported };