tarifa
Version:
Your friendly toolchain for mobile app development on top of Apache Cordova
80 lines (70 loc) • 2.21 kB
JavaScript
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
};