UNPKG

cordova-wp8

Version:

cordova-wp8 release

100 lines (88 loc) 4.43 kB
/* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ var Q = require('q'), nopt = require('nopt'), path = require('path'), build = require('./build'), utils = require('./utils'), packages = require('./package'); var ROOT = path.join(__dirname, '..', '..'); module.exports.run = function (argv) { if (!utils.isCordovaProject(ROOT)) { return Q.reject('Could not find project at ' + ROOT); } // parse args var args = nopt({'debug': Boolean, 'release': Boolean, 'nobuild': Boolean, 'device': Boolean, 'emulator': Boolean, 'target': String, 'archs': String}, {'r' : '--release'}, argv); // Validate args if (args.debug && args.release) { return Q.reject('Only one of "debug"/"release" options should be specified'); } if ((args.device && args.emulator) || ((args.device || args.emulator) && args.target)) { return Q.reject('Only one of "device"/"emulator"/"target" options should be specified'); } // Get build/deploy options var buildType = args.release ? 'release' : 'debug', buildArchs = args.archs ? args.archs.split(' ') : ['anycpu']; // if --nobuild isn't specified then build app first var buildPackages = args.nobuild ? Q() : build.run(argv); return buildPackages .then(function () { return packages.getPackage(buildType, buildArchs[0]); }) .then(function (builtPackage) { // Get deploy options var deployTarget = args.target ? args.target : args.device ? 'device' : args.emulator ? 'emulator' : null; if (deployTarget) { console.log('\nDeploying package to ' + deployTarget); return builtPackage.deployTo(deployTarget); } // no deploy target specified - try device first & then emulator console.log('\nTrying to deploy to device'); return builtPackage.deployTo('device').catch(function (error) { console.log(error); console.log('\nFalling back to deploy to emulator instead'); return builtPackage.deployTo('emulator'); }); }); }; module.exports.help = function () { console.log(''); console.log('Usage:'); console.log(' run [ --device || --emulator || --target=<id> ] '); console.log(' [ --debug || --release || --nobuild ]'); console.log(' [--archs=\"<list of architectures...>\"]'); console.log(' --device : Deploys and runs the project on the connected device.'); console.log(' --emulator : [DEFAULT] Deploys and runs the project on an emulator.'); console.log(' --target=<id> : Deploys and runs the project on the specified target.'); console.log(' --debug : [DEFAULT] Builds project in debug mode.'); console.log(' --release : Builds project in release mode.'); console.log(' --nobuild : Ueses pre-built xap, or errors if project is not built.'); console.log(' --archs : Builds project binaries for specific chip architectures.'); console.log(' Deploys and runs package with first architecture specified.'); console.log(' arm` and `x86` are supported for wp8'); console.log('Examples:'); console.log(' run'); console.log(' run --emulator'); console.log(' run --device'); console.log(' run --target=7988B8C3-3ADE-488d-BA3E-D052AC9DC710'); console.log(' run --device --release'); console.log(' run --emulator --debug'); console.log(''); };