UNPKG

tarifa

Version:

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

55 lines (48 loc) 1.66 kB
var Q = require('q'), format = require('util').format, exec = require('child_process').exec, log = require('../../../../../helper/log'), pathHelper = require('../../../../../helper/path'), settings = require('../../../../../settings'); var install = function (conf, device) { var defer = Q.defer(), androidConfs = conf.localSettings.configurations.android, product_file_name = androidConfs[conf.configuration].product_file_name, apk_filename_path = pathHelper.productFile('android', product_file_name, conf.arch), cmd = format( '%s -s %s install -r "%s"', settings.external.adb.name, device, apk_filename_path ), options = { timeout: 100000, maxBuffer: 1024 * 400 }; log.send( 'success', 'trying to install android app: %s on %s', product_file_name, device ); exec(cmd, options, function (err, stdout, stderr) { log.send('msg', 'adb:\n %s %s', stdout, stderr); if(err) { log.send('error', 'command: %s', cmd); log.send('error', 'adb stderr %s', stderr); defer.reject('adb command failed; try to plug again the device if the error persist.'); } else { defer.resolve(conf); } }); return defer.promise; }; module.exports = function (conf) { if(conf.device) return install(conf, conf.device.value); return conf.devices.reduce(function (p, device) { return Q.when(p, function (c) { return install(c, device); }); }, conf); };