UNPKG

tarifa

Version:

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

157 lines (136 loc) 6.13 kB
var Q = require('q'), path = require('path'), format = require('util').format, tarifaFile = require('../../lib/tarifa-file'), pathHelper = require('../../lib/helper/path'), collsHelper = require('../../lib/helper/collections'), hockeyapp = require('../../lib/hockeyapp/hockeyapp'), log = require('../../lib/helper/log'); var mergeParams = function (localSettings, argv) { // check for hockeyapp options in conf var params = collsHelper.mapKeys(collsHelper.filterKeys(localSettings.hockeyapp, function (e) { return [ 'versions_notify', 'versions_status', 'versions_tags', 'versions_teams', 'versions_users', 'versions_commit_sha', 'versions_build_server_url', 'versions_repository_url' ].indexOf(e) > -1; }), function (e) { return e.replace(/^versions_/, ''); }), // get relevant options in cmd args opts = collsHelper.filterKeys(argv, function(e) { return ['notes', 'notify', 'status', 'tags', 'teams', 'users', 'commit_sha', 'build_server_url', 'repository_url'].indexOf(e) > -1; }); return { localSettings: localSettings, uploadParams: collsHelper.mergeObject(params, opts) }; }; var upload = function (msg) { var config = msg.config, platform = msg.platform, localSettings = msg.localSettings, envSettings = localSettings.configurations[platform][config], hockeyapp_id = envSettings.hockeyapp_id; if (!localSettings.hockeyapp || !localSettings.hockeyapp.api_url || !localSettings.hockeyapp.token) return Q.reject('No hockeyapp informations are available in the current tarifa.json file.'); // check for hockeyapp options in conf var conf = mergeParams(localSettings, msg.argv), type = msg.platform === 'windows' ? localSettings.configurations.windows[config].type : null, productFileName = pathHelper.productFile( platform, envSettings.product_file_name, localSettings.plugins['cordova-plugin-crosswalk-webview'] ? envSettings.arch || 'armv7' : null, type ); return hockeyapp.uploadVersion(productFileName, conf, hockeyapp_id).then(function (data) { log.send( 'success', 'Uploaded new package "%s" successfully.\nSee new version at %s', path.basename(productFileName), data.public_url ); // in case of app creation, add 'hockeyapp_id' to configuration if (data.public_identifier) { return tarifaFile.addHockeyappId(pathHelper.root(), platform, config, data.public_identifier).then(function() { log.send('success', 'Created hockeyapp application successfully.'); }); } }); }; var clean = function (msg, nbToKeep) { var localSettings = msg.localSettings, appIds = collsHelper.findByKey(localSettings, 'hockeyapp_id'); if(!localSettings.hockeyapp) return Q.reject('no `hockeyapp` attribute in tarifa.json'); if(!localSettings.hockeyapp.token) return Q.reject('no `token` on `hockeyapp` attribute in tarifa.json'); if(!localSettings.hockeyapp.api_url) return Q.reject('no `api_url` on `hockeyapp` attribute in tarifa.json'); return hockeyapp.clean( appIds, localSettings.hockeyapp.token, localSettings.hockeyapp.api_url, nbToKeep ).then(function (total) { log.send( 'success', 'Successfully deleted %s version(s). Notice: deletion is asynchronous and version may still appear in listings for a while.', total ); }); }; var updateLast = function (msg) { var config = msg.config, platform = msg.platform, argv = msg.argv; return tarifaFile.parse(pathHelper.root(), platform, config).then(function (localSettings) { var envSettings = localSettings.configurations[platform][config], hockeyapp_id = envSettings.hockeyapp_id; if (!hockeyapp_id) return Q.reject(format('No hockeyapp_id key is available in %s for platform %s', config, platform)); if (!localSettings.hockeyapp || !localSettings.hockeyapp.api_url || !localSettings.hockeyapp.token) return Q.reject('No hockeyapp informations are available in the current tarifa.json file.'); var conf = { localSettings: localSettings, hockeyapp_id: hockeyapp_id, // get relevant options in cmd args uploadParams: collsHelper.filterKeys(argv, function(e) { return ['notes', 'notify', 'status', 'tags', 'teams', 'users'].indexOf(e) > -1; }) }; return hockeyapp.listVersions(conf, false).then(function (list) { return hockeyapp.updateVersion(list.app_versions[0].id, conf).then(function () { log.send('success', 'Updated version successfully.'); }); }); }); }; var list = function(msg) { var config = msg.config, platform = msg.platform; return tarifaFile.parse(pathHelper.root(), platform, config).then(function (localSettings) { var envSettings = localSettings.configurations[platform][config], hockeyConf = localSettings.hockeyapp, hockeyapp_id = envSettings.hockeyapp_id; if (!hockeyapp_id) return Q.reject(format('No hockeyapp_id key is available in %s for platform %s', config, platform)); if (!hockeyConf || !hockeyConf.api_url || !hockeyConf.token) return Q.reject('Incomplete or no `hockeyapp` attribute on tarifa.json file.'); return hockeyapp.listVersions({ localSettings: localSettings, hockeyapp_id: hockeyapp_id }, true); }); }; module.exports.list = list; module.exports.upload = upload; module.exports.clean = clean; module.exports.updateLast = updateLast;