This is an automated email from the ASF dual-hosted git repository. purplecabbage pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cordova-windows.git
The following commit(s) were added to refs/heads/master by this push: new bb3eae2 refactor!: drop q (#395) bb3eae2 is described below commit bb3eae29bc7ad293a623e6a1aaa7f9748224ac7b Author: Raphael von der GrĂ¼n <raphine...@gmail.com> AuthorDate: Wed Oct 20 07:54:07 2021 +0200 refactor!: drop q (#395) --- .eslintrc.yml | 8 ++++++ bin/check_all | 2 +- bin/check_reqs | 2 +- bin/create | 5 +++- bin/lib/check_reqs.js | 47 ++++++++++++++++++------------------ bin/lib/create.js | 7 +++--- bin/lib/update.js | 5 ++-- bin/update | 5 +++- package.json | 1 - spec/unit/MSBuildTools.spec.js | 13 +++++----- spec/unit/build.spec.js | 31 ++++++++++++------------ spec/unit/check_reqs.spec.js | 15 +++++------- spec/unit/deployment.spec.js | 13 +++++----- spec/unit/run.spec.js | 39 +++++++++++++++--------------- template/cordova/Api.js | 4 +-- template/cordova/build | 5 +++- template/cordova/lib/MSBuildTools.js | 7 +++--- template/cordova/lib/build.js | 9 +++---- template/cordova/lib/clean.js | 3 +-- template/cordova/lib/deployment.js | 11 ++++----- template/cordova/lib/package.js | 21 ++++++++-------- template/cordova/lib/prepare.js | 7 +++--- template/cordova/lib/run.js | 15 ++++++------ template/cordova/lib/utils.js | 9 +++---- template/cordova/log | 3 +-- template/cordova/run | 5 +++- 26 files changed, 146 insertions(+), 146 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index f2e63b6..f2c3a07 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -17,10 +17,18 @@ extends: '@cordova/eslint-config/node' +# FIXME avoid rule exceptions +rules: + prefer-promise-reject-errors: off + overrides: - files: [spec/**/*.js] extends: '@cordova/eslint-config/node-tests' + # FIXME avoid rule exceptions + rules: + prefer-promise-reject-errors: off + - files: [cordova-js-src/**/*.js] extends: '@cordova/eslint-config/browser' diff --git a/bin/check_all b/bin/check_all index 853051e..ba6a896 100644 --- a/bin/check_all +++ b/bin/check_all @@ -25,7 +25,7 @@ var check_reqs = require('./lib/check_reqs'); if (['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) > -1) { check_reqs.help(); } else { - check_reqs.check_all().done(function success (result) { + check_reqs.check_all().then(function success (result) { console.log('check_all', result); }, function (err) { console.error('Error: ' + err); diff --git a/bin/check_reqs b/bin/check_reqs index ddc2eaf..e75ea33 100755 --- a/bin/check_reqs +++ b/bin/check_reqs @@ -25,7 +25,7 @@ var check_reqs = require('./lib/check_reqs'); if (['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) > -1) { check_reqs.help(); } else { - check_reqs.run().done(function success (msbuild) { + check_reqs.run().then(function success (msbuild) { console.log('Environment is supported; found MSBuild Tools version ' + msbuild.version + ' at ' + msbuild.path); }, function (err) { console.error('Environment is not supported: ' + err); diff --git a/bin/create b/bin/create index c0b229f..d8499ed 100755 --- a/bin/create +++ b/bin/create @@ -56,4 +56,7 @@ var options = { require('../template/cordova/lib/loggingHelper').adjustLoggerLevel(options); -Api.createPlatform(argv.argv.remain[0], config, options).done(); +Api.createPlatform(argv.argv.remain[0], config, options).catch(err => { + console.error(err); + process.exit(2); +}); diff --git a/bin/lib/check_reqs.js b/bin/lib/check_reqs.js index e3d9b5e..7ef2697 100644 --- a/bin/lib/check_reqs.js +++ b/bin/lib/check_reqs.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var os = require('os'); var path = require('path'); var shell = require('shelljs'); @@ -107,7 +106,7 @@ function getWindowsVersion () { return spawn('ver').then(function (output) { var match = /\[Version (.*)\]\s*$/.exec(output); return Version.fromString(match[1]); - }).fail(function () { + }).catch(function () { return Version.fromString(os.release()); }); } @@ -122,7 +121,7 @@ function getInstalledVSVersions () { // Query all keys with Install value equal to 1, then filter out // those, which are not related to VS itself return spawn('reg', ['query', 'HKLM\\SOFTWARE\\Microsoft\\DevDiv\\vs\\Servicing', '/s', '/v', 'Install', '/f', '1', '/d', '/e', '/reg:32']) - .fail(function () { return ''; }) + .catch(function () { return ''; }) .then(function (output) { return output.split('\n') .reduce(function (installedVersions, line) { @@ -139,9 +138,9 @@ function getInstalledVSVersions () { .then(function (output) { var updateVer = Version.fromString(/PackageVersion\s+REG_SZ\s+(.*)/i.exec(output)[1]); // if update version is lover than Update2, reject the promise - if (VS2013_UPDATE2_RC.gte(updateVer)) return Q.reject(); + if (VS2013_UPDATE2_RC.gte(updateVer)) return Promise.reject(); return installedVersions; - }).fail(function () { + }).catch(function () { // if we got any errors on previous steps, we're assuming that // required VS update is not installed. installedVersions.splice(installedVersions.indexOf('12.0'), 1); @@ -164,7 +163,7 @@ function getInstalledVSVersions () { function getInstalledWindowsSdks () { var installedSdks = []; return spawn('reg', ['query', 'HKLM\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows', '/s', '/v', 'InstallationFolder', '/reg:32']) - .fail(function () { return ''; }) + .catch(function () { return ''; }) .then(function (output) { var re = /\\Microsoft SDKs\\Windows\\v(\d+\.\d+)\s*InstallationFolder\s+REG_SZ\s+(.*)/gim; var match; @@ -175,7 +174,7 @@ function getInstalledWindowsSdks () { installedSdks.push(Version.tryParse(match[1])); } } - }).thenResolve(installedSdks); + }).then(() => installedSdks); } /** @@ -188,7 +187,7 @@ function getInstalledWindowsSdks () { function getInstalledPhoneSdks () { var installedSdks = []; return spawn('reg', ['query', 'HKLM\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows Phone\\v8.1', '/v', 'InstallationFolder', '/reg:32']) - .fail(function () { return ''; }) + .catch(function () { return ''; }) .then(function (output) { var match = /\\Microsoft SDKs\\Windows Phone\\v(\d+\.\d+)\s*InstallationFolder\s+REG_SZ\s+(.*)/gim.exec(output); if (match && shell.test('-e', path.join(match[2], 'SDKManifest.xml'))) { @@ -196,14 +195,14 @@ function getInstalledPhoneSdks () { } }).then(function () { return spawn('reg', ['query', 'HKLM\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v10.0', '/v', 'InstallationFolder', '/reg:32']); - }).fail(function () { + }).catch(function () { return ''; }).then(function (output) { var match = /\\Microsoft SDKs\\Windows\\v(\d+\.\d+)\s*InstallationFolder\s+REG_SZ\s+(.*)/gim.exec(output); if (match && shell.test('-e', path.join(match[2], 'SDKManifest.xml'))) { installedSdks.push(Version.tryParse(match[1])); } - }).thenResolve(installedSdks); + }).then(() => installedSdks); } /** @@ -245,7 +244,7 @@ function mapVSVersionToName (version) { var checkOS = function (windowsTargetVersion, windowsPhoneTargetVersion) { if (process.platform !== 'win32') { // Build Universal windows apps available for windows platform only, so we reject on others platforms - return Q.reject('Cordova tooling for Windows requires Windows OS to build project'); + return Promise.reject('Cordova tooling for Windows requires Windows OS to build project'); } return getWindowsVersion().then(function (actualVersion) { @@ -256,7 +255,7 @@ var checkOS = function (windowsTargetVersion, windowsPhoneTargetVersion) { return mapWindowsVersionToName(actualVersion); } - return Q.reject('Current Windows version doesn\'t support building this project. ' + + return Promise.reject('Current Windows version doesn\'t support building this project. ' + 'Consider upgrading your OS to ' + mapWindowsVersionToName(requiredOsVersion)); }); }; @@ -281,7 +280,7 @@ var checkMSBuild = function (windowsTargetVersion, windowsPhoneTargetVersion) { // console.log('appropriateVersion', appropriateVersion); return appropriateVersion ? shortenVersion(appropriateVersion) - : Q.reject('MSBuild tools v.' + shortenVersion(msbuildRequiredVersion) + ' not found. ' + + : Promise.reject('MSBuild tools v.' + shortenVersion(msbuildRequiredVersion) + ' not found. ' + 'Please install Visual Studio ' + mapVSVersionToName(getMinimalRequiredVersionFor('visualstudio', windowsTargetVersion, windowsPhoneTargetVersion)) + ' or higher from https://www.visualstudio.com/downloads/download-visual-studio-vs'); }); @@ -291,14 +290,14 @@ var checkVS = function (windowsTargetVersion, windowsPhoneTargetVersion) { var vsRequiredVersion = getMinimalRequiredVersionFor('visualstudio', windowsTargetVersion, windowsPhoneTargetVersion); if (process.env.VSINSTALLDIR) { - return Q('(user-specified via VSINSTALLDIR)'); + return Promise.resolve('(user-specified via VSINSTALLDIR)'); } return getInstalledVSVersions() .then(function (installedVersions) { var appropriateVersion = getHighestAppropriateVersion(installedVersions, vsRequiredVersion); return appropriateVersion ? shortenVersion(appropriateVersion) - : Q.reject('Required version of Visual Studio not found. Please install Visual Studio ' + + : Promise.reject('Required version of Visual Studio not found. Please install Visual Studio ' + mapVSVersionToName(vsRequiredVersion) + ' or higher from https://www.visualstudio.com/downloads/download-visual-studio-vs'); }); @@ -312,7 +311,7 @@ var checkWinSdk = function (windowsTargetVersion, windowsPhoneTargetVersion) { return installedSdk.eq(requiredVersion); }); if (!hasSdkInstalled) { - return Q.reject('Windows SDK not found. Ensure that you have installed ' + + return Promise.reject('Windows SDK not found. Ensure that you have installed ' + 'Windows ' + shortenVersion(requiredVersion) + ' SDK along with Visual Studio or install ' + 'Windows ' + shortenVersion(requiredVersion) + ' SDK separately from ' + 'https://dev.windows.com/en-us/downloads'); @@ -332,10 +331,10 @@ var checkPhoneSdk = function (windowsTargetVersion, windowsPhoneTargetVersion) { return hasSdkInstalled ? shortenVersion(requiredVersion) - : Q.reject(); + : Promise.reject(); }) - .fail(function () { - return Q.reject('Windows Phone SDK not found. Ensure that you have installed ' + + .catch(function () { + return Promise.reject('Windows Phone SDK not found. Ensure that you have installed ' + 'Windows Phone ' + shortenVersion(requiredVersion) + ' SDK along with Visual Studio or install ' + 'Windows Phone ' + shortenVersion(requiredVersion) + ' SDK separately from ' + 'https://dev.windows.com/develop/download-phone-sdk'); @@ -390,15 +389,15 @@ var config = null; function getConfig () { try { config = config || new ConfigParser(path.join(__dirname, '../../config.xml')); - return Q(config); + return Promise.resolve(config); } catch (e) { // try again to cover case of being called from command line try { config = config || new ConfigParser(path.join(__dirname, '../../template/config.xml')); - return Q(config); + return Promise.resolve(config); } catch (e) { // yeah, really no config.xml - return Q.reject(new CordovaError('Can\'t check requirements for Windows platform.' + + return Promise.reject(new CordovaError('Can\'t check requirements for Windows platform.' + 'The config.xml file is either missing or malformed.')); } } @@ -418,7 +417,7 @@ module.exports.check_all = function () { return promise.then(function () { // If fatal requirement is failed, // we don't need to check others - if (fatalIsHit) return Q(); + if (fatalIsHit) return; var requirement = requirements[idx]; return getConfig() .then(function (config) { @@ -434,7 +433,7 @@ module.exports.check_all = function () { }); }); }); - }, Q()) + }, Promise.resolve()) .then(function () { // When chain is completed, return requirements array to upstream API return result; diff --git a/bin/lib/create.js b/bin/lib/create.js index ccbd33c..b0ee027 100644 --- a/bin/lib/create.js +++ b/bin/lib/create.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var fs = require('fs'); var path = require('path'); var shell = require('shelljs'); @@ -29,11 +28,11 @@ var pkg = require('../../package'); // Creates cordova-windows project at specified path with specified namespace, app name and GUID module.exports.create = function (destinationDir, config, options) { - if (!destinationDir) return Q.reject('No destination directory specified.'); + if (!destinationDir) return Promise.reject('No destination directory specified.'); var projectPath = path.resolve(destinationDir); if (fs.existsSync(projectPath)) { - return Q.reject(new CordovaError('Project directory already exists:\n\t' + projectPath)); + return Promise.reject(new CordovaError('Project directory already exists:\n\t' + projectPath)); } // Set parameters/defaults for create @@ -120,7 +119,7 @@ module.exports.create = function (destinationDir, config, options) { }); events.emit('log', 'Windows project created with ' + pkg.name + '@' + pkg.version); - return Q.resolve(); + return Promise.resolve(); }; function recursiveCreateDirectory (targetPath, previousPath) { diff --git a/bin/lib/update.js b/bin/lib/update.js index 2372703..4126aab 100644 --- a/bin/lib/update.js +++ b/bin/lib/update.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var fs = require('fs'); var path = require('path'); var shell = require('shelljs'); @@ -31,12 +30,12 @@ var AppxManifest = require('../../template/cordova/lib/AppxManifest'); module.exports.update = function (destinationDir, options) { if (!fs.existsSync(destinationDir)) { // if specified project path is not valid then reject promise - return Q.reject(new CordovaError('The given path to the project does not exist: ' + destinationDir)); + return Promise.reject(new CordovaError('The given path to the project does not exist: ' + destinationDir)); } var projectConfig = path.join(destinationDir, 'config.xml'); if (!fs.existsSync(projectConfig)) { - return Q.reject(new CordovaError('Can\'t update project at ' + destinationDir + + return Promise.reject(new CordovaError('Can\'t update project at ' + destinationDir + '. config.xml does not exist in destination directory')); } diff --git a/bin/update b/bin/update index 0133ce9..90a83bc 100755 --- a/bin/update +++ b/bin/update @@ -37,4 +37,7 @@ if (args.help || args.argv.remain.length === 0) { require('../template/cordova/lib/loggingHelper').adjustLoggerLevel(args); -Api.updatePlatform(args.argv.remain[0]).done(); +Api.updatePlatform(args.argv.remain[0]).catch(err => { + console.error(err); + process.exit(2); +}); diff --git a/package.json b/package.json index cc85299..9b9ccfa 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "fs-extra": "^9.0.0", "node-uuid": "^1.4.8", "nopt": "^4.0.1", - "q": "^1.5.1", "semver": "^5.5.0", "shelljs": "^0.5.3", "winjs": "^4.4.3" diff --git a/spec/unit/MSBuildTools.spec.js b/spec/unit/MSBuildTools.spec.js index 47ee796..835756c 100644 --- a/spec/unit/MSBuildTools.spec.js +++ b/spec/unit/MSBuildTools.spec.js @@ -16,7 +16,6 @@ specific language governing permissions and limitations under the License. */ -var Q = require('q'); var shell = require('shelljs'); var rewire = require('rewire'); var platformRoot = '../../template'; @@ -33,7 +32,7 @@ describe('findAvailableVersion method', function () { var checkMSBuildVersionFake = function (availableVersions, version) { var MSBuildTools = buildTools.__get__('MSBuildTools'); - return (availableVersions.indexOf(version) >= 0) ? Q.resolve(new MSBuildTools(version, fakeToolsPath(version))) : Q.resolve(null); + return (availableVersions.indexOf(version) >= 0) ? Promise.resolve(new MSBuildTools(version, fakeToolsPath(version))) : Promise.resolve(null); }; var versionTest = function (availableVersions, version) { @@ -97,7 +96,7 @@ describe('checkMSBuildVersion method', function () { it('spec.6 should return valid version and path', function () { var version = '14.0'; - spawnSpy.and.returnValue(Q.resolve( + spawnSpy.and.returnValue(Promise.resolve( '\r\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\12.0\r\n\t' + 'MSBuildToolsPath\tREG_SZ\t' + fakeToolsPath(version) + '\r\n\r\n') ); @@ -109,7 +108,7 @@ describe('checkMSBuildVersion method', function () { }); it('spec.7 should return null if no tools found for version', function () { - spawnSpy.and.returnValue(Q.resolve('ERROR: The system was unable to find the specified registry key or value.')); + spawnSpy.and.returnValue(Promise.resolve('ERROR: The system was unable to find the specified registry key or value.')); return checkMSBuildVersion('14.0').then(function (actual) { expect(actual).not.toBeDefined(); @@ -117,7 +116,7 @@ describe('checkMSBuildVersion method', function () { }); it('spec.8 should return null on internal error', function () { - spawnSpy.and.returnValue(Q.reject()); + spawnSpy.and.returnValue(Promise.reject()); return checkMSBuildVersion('14.0').then(function (actual) { expect(actual).not.toBeDefined(); @@ -208,7 +207,7 @@ describe('getMSBuildToolsAt method', function () { }); it('should return MSBuildTools instance', function () { - spawnSpy.and.returnValue(Q(fakeVersion)); + spawnSpy.and.returnValue(Promise.resolve(fakeVersion)); return buildTools.getMSBuildToolsAt(fakePath) .then(function (tools) { @@ -219,7 +218,7 @@ describe('getMSBuildToolsAt method', function () { }); it('should reject promise if no msbuild found', function () { - spawnSpy.and.returnValue(Q.reject()); + spawnSpy.and.returnValue(Promise.reject()); return buildTools.getMSBuildToolsAt(messyPath).then( () => fail('Expected promise to be rejected'), diff --git a/spec/unit/build.spec.js b/spec/unit/build.spec.js index b703c9a..36020e7 100644 --- a/spec/unit/build.spec.js +++ b/spec/unit/build.spec.js @@ -16,7 +16,6 @@ specific language governing permissions and limitations under the License. */ -var Q = require('q'); var fs = require('fs'); var path = require('path'); var rewire = require('rewire'); @@ -33,14 +32,14 @@ var MSBuildTools = require(platformRoot + '/cordova/lib/MSBuildTools'); function createFindAvailableVersionMock (version, path, buildSpy) { build.__set__('MSBuildTools.findAvailableVersion', function () { - return Q.resolve({ + return Promise.resolve({ version: version, path: path, buildProject: function (solutionFile, buildType, buildArch) { if (typeof buildSpy === 'function') { buildSpy(solutionFile, buildType, buildArch); } - return Q.reject(); // rejecting here to stop build process + return Promise.reject(); // rejecting here to stop build process } }); }); @@ -48,7 +47,7 @@ function createFindAvailableVersionMock (version, path, buildSpy) { function createFindAllAvailableVersionsMock (versionSet) { build.__set__('MSBuildTools.findAllAvailableVersions', function () { - return Q.resolve(versionSet); + return Promise.resolve(versionSet); }); } @@ -92,7 +91,7 @@ describe('run method', function () { spyOn(utils, 'isCordovaProject').and.returnValue(true); spyOn(prepare, 'applyPlatformConfig'); spyOn(prepare, 'updateBuildConfig'); - spyOn(pkg, 'getPackage').and.returnValue(Q({})); + spyOn(pkg, 'getPackage').and.returnValue(Promise.resolve({})); spyOn(AppxManifest, 'get').and.returnValue({ getIdentity: function () { @@ -215,19 +214,19 @@ describe('run method', function () { switch (buildArch) { case 'arm': armBuild(); - return Q(); + return Promise.resolve(); case 'x86': x86Build(); - return Q(); + return Promise.resolve(); case 'anycpu': case 'any cpu': anyCpuBuild(); - return Q(); + return Promise.resolve(); case 'x64': x64Build(); - return Q(); + return Promise.resolve(); default: - return Q.reject(); + return Promise.reject(); } } }]); @@ -352,10 +351,10 @@ describe('run method', function () { delete process.env.MSBUILDDIR; spyOn(MSBuildTools, 'getMSBuildToolsAt') - .and.returnValue(Q({ + .and.returnValue(Promise.resolve({ path: customMSBuildPath, version: customMSBuildVersion, - buildProject: jasmine.createSpy('buildProject').and.returnValue(Q()) + buildProject: jasmine.createSpy('buildProject').and.returnValue(Promise.resolve()) })); return build.run({}) @@ -377,10 +376,10 @@ describe('run method', function () { delete process.env.VSINSTALLDIR; spyOn(MSBuildTools, 'getMSBuildToolsAt') - .and.returnValue(Q({ + .and.returnValue(Promise.resolve({ path: msBuildBinPath, version: customMSBuildVersion, - buildProject: jasmine.createSpy('buildProject').and.returnValue(Q()) + buildProject: jasmine.createSpy('buildProject').and.returnValue(Promise.resolve()) })); return build.run({}) @@ -448,7 +447,7 @@ describe('buildFlags', function () { spyOn(utils, 'isCordovaProject').and.returnValue(true); spyOn(prepare, 'applyPlatformConfig'); spyOn(prepare, 'updateBuildConfig'); - spyOn(pkg, 'getPackage').and.returnValue(Q({})); + spyOn(pkg, 'getPackage').and.returnValue(Promise.resolve({})); spyOn(AppxManifest, 'get').and.returnValue({ getIdentity: function () { @@ -459,7 +458,7 @@ describe('buildFlags', function () { }); it('should pass buildFlags directly to MSBuild', function () { - var buildTools = { version: '14.0', buildProject: jasmine.createSpy('buildProject').and.returnValue(Q()), path: testPath }; + var buildTools = { version: '14.0', buildProject: jasmine.createSpy('buildProject').and.returnValue(Promise.resolve()), path: testPath }; var buildOptions = { argv: ['--buildFlag', 'foo=bar'] }; diff --git a/spec/unit/check_reqs.spec.js b/spec/unit/check_reqs.spec.js index e288406..5cf8914 100644 --- a/spec/unit/check_reqs.spec.js +++ b/spec/unit/check_reqs.spec.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var path = require('path'); var rewire = require('rewire'); var binPath = '../../bin'; @@ -74,9 +73,9 @@ describe('check_reqs module', function () { checkSpy = jasmine.createSpy('checkSpy'); fakeCheckFns = [ - checkSpy.and.returnValue(Q('1.0')), - checkSpy.and.returnValue(Q('2.0')), - checkSpy.and.returnValue(Q('3.0')) + checkSpy.and.returnValue(Promise.resolve('1.0')), + checkSpy.and.returnValue(Promise.resolve('2.0')), + checkSpy.and.returnValue(Promise.resolve('3.0')) ]; spyOn(xml, 'parseElementtreeSync').and.returnValue(new et.ElementTree(et.XML(TEST_XML))); fakeConfig = new ConfigParser('/some/file'); @@ -92,9 +91,7 @@ describe('check_reqs module', function () { check_reqs.__set__('requirements', fakeRequirements); check_reqs.__set__('checkFns', fakeCheckFns); check_reqs.__set__('config', fakeConfig); - var checkResult = check_reqs.check_all(); - expect(Q.isPromise(checkResult)).toBeTruthy(); - return checkResult.then(function (result) { + return check_reqs.check_all().then(function (result) { expect(result instanceof Array).toBeTruthy(); expect(result.length).toBe(3); result.forEach(function (resultItem) { @@ -106,7 +103,7 @@ describe('check_reqs module', function () { it('Test #003 : that should not reject if one of requirements is not installed', function () { check_reqs.__set__('requirements', fakeRequirements); - fakeCheckFns[0] = function () { return Q.reject('Error message'); }; + fakeCheckFns[0] = function () { return Promise.reject('Error message'); }; check_reqs.__set__('checkFns', fakeCheckFns); check_reqs.__set__('config', fakeConfig); @@ -132,7 +129,7 @@ describe('check_reqs module', function () { it('Test #005 : that should not run other requirements checks if `fatal` requirement isn\'t installed', function () { check_reqs.__set__('requirements', fakeRequirements); // The second requirement is fatal, so we're setting up second check to fail - fakeCheckFns[1] = checkSpy.and.returnValue(Q.reject('Error message')); + fakeCheckFns[1] = checkSpy.and.returnValue(Promise.reject('Error message')); check_reqs.__set__('checkFns', fakeCheckFns); check_reqs.__set__('config', fakeConfig); diff --git a/spec/unit/deployment.spec.js b/spec/unit/deployment.spec.js index 8c4517a..f613a2f 100644 --- a/spec/unit/deployment.spec.js +++ b/spec/unit/deployment.spec.js @@ -19,7 +19,6 @@ var rewire = require('rewire'); var deployment = rewire('../../template/cordova/lib/deployment'); -var Q = require('q'); var path = require('path'); var AppDeployCmdTool = deployment.__get__('AppDeployCmdTool'); var WinAppDeployCmdTool = deployment.__get__('WinAppDeployCmdTool'); @@ -59,18 +58,18 @@ describe('Windows 10 deployment interacts with the file system as expected.', fu switch (args[0]) { case 'devices': var output = 'Windows App Deployment Tool\r\nVersion 10.0.0.0\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\n\r\nDiscovering devices...\r\nIP Address GUID Model/Name\r\n127.0.0.1 00000015-b21e-0da9-0000-000000000000 Lumia 1520 (RM-940)\r\n10.120.70.172 00000000-0000-0000-0000-00155d619532 00155D619532\r\n10.120.68.150 00000000-0000-0000-0000-00155d011765 00155D011765\r\nDone.'; - return Q(output); + return Promise.resolve(output); case 'update': case 'install': expect(args[2]).toBe(TEST_APP_PACKAGE_NAME); expect(args[4]).toBe('127.0.0.1'); - return Q(''); + return Promise.resolve(''); case 'uninstall': expect(args[2]).toBe(TEST_APP_PACKAGE_ID); expect(args[4]).toBe('10.120.68.150'); - return Q(''); + return Promise.resolve(''); } } @@ -133,7 +132,7 @@ describe('Windows 8.1 deployment interacts with the file system as expected.', f switch (args[0]) { case '/EnumerateDevices': var output = '\r\nDevice Index Device Name\r\n------------ -------------------------------\r\n 0 Device\r\n 1 Mobile Emulator 10.0.10150.0 WVGA 4 inch 512MB\r\n 2 Mobile Emulator 10.0.10150.0 WVGA 4 inch 1GB\r\n 3 Mobile Emulator 10.0.10150.0 WXGA 4.5 inch 1GB\r\n 4 Mobile Emulator 10.0.10150.0 720p 5 inch 1GB\r\n 5 Mobile Emulator 10.0.10150.0 1080p 6 inch 2GB\r\n 6 Emulator 8.1 [...] - return Q(output); + return Promise.resolve(output); case '/update': case '/install': @@ -141,12 +140,12 @@ describe('Windows 8.1 deployment interacts with the file system as expected.', f case '/installlaunch': expect(args[1]).toBe(TEST_APP_PACKAGE_NAME); expect(args[2]).toBe('/targetdevice:de'); - return Q(''); + return Promise.resolve(''); case '/uninstall': expect(args[1]).toBe(TEST_APP_PACKAGE_ID); expect(args[2]).toBe('/targetdevice:5'); - return Q(''); + return Promise.resolve(''); default: throw new Error('Unrecognized AppDeployCmd parameter "' + args[0] + '"'); diff --git a/spec/unit/run.spec.js b/spec/unit/run.spec.js index c8c729f..9a886f8 100644 --- a/spec/unit/run.spec.js +++ b/spec/unit/run.spec.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var path = require('path'); var rewire = require('rewire'); var platformRoot = '../../template'; @@ -74,7 +73,7 @@ describe('run method', function () { run.__set__('utils.isCordovaProject', isCordovaProjectFalse); run.__set__('build.run', function () { buildRun(); - return Q.reject(); // rejecting to break run chain + return Promise.reject(); // rejecting to break run chain }); return run.run(['node', buildPath]).then( @@ -89,7 +88,7 @@ describe('run method', function () { run.__set__('utils.isCordovaProject', isCordovaProjectTrue); run.__set__('build.run', function () { buildRun(); - return Q.reject(); // rejecting to break run chain + return Promise.reject(); // rejecting to break run chain }); return run.run({ release: true, debug: true }).then( @@ -104,7 +103,7 @@ describe('run method', function () { run.__set__('utils.isCordovaProject', isCordovaProjectTrue); run.__set__('build.run', function () { buildRun(); - return Q.reject(); // rejecting to break run chain + return Promise.reject(); // rejecting to break run chain }); return run.run({ device: true, emulator: true }).then( @@ -119,7 +118,7 @@ describe('run method', function () { run.__set__('utils.isCordovaProject', isCordovaProjectTrue); run.__set__('build.run', function () { buildRun(); - return Q.reject(); // rejecting to break run chain + return Promise.reject(); // rejecting to break run chain }); return run.run({ device: true, target: 'sometargethere' }).then( @@ -145,21 +144,21 @@ describe('run method', function () { script: 'testfile.ps1', phoneId: 'undefined' }; - return Q(buildResult); + return Promise.resolve(buildResult); }); run.__set__('packages.getPackage', function () { - return Q({ + return Promise.resolve({ type: 'phone', file: 'testfile' }); }); run.__set__('packages.deployToPhone', function () { deployToPhone(); - return Q(); + return Promise.resolve(); }); run.__set__('packages.deployToDesktop', function () { deployToDesktop(); - return Q(); + return Promise.resolve(); }); return run.run(['node', buildPath, '--phone', '--break']) @@ -187,21 +186,21 @@ describe('run method', function () { script: 'testfile.ps1', phoneId: 'undefined' }; - return Q(buildResult); + return Promise.resolve(buildResult); }); run.__set__('packages.getPackage', function () { - return Q({ + return Promise.resolve({ type: 'windows', file: 'testfile' }); }); run.__set__('packages.deployToPhone', function () { deployToPhone(); - return Q(); + return Promise.resolve(); }); run.__set__('packages.deployToDesktop', function () { deployToDesktop(); - return Q(); + return Promise.resolve(); }); return run.run(['node', buildPath]) @@ -219,17 +218,17 @@ describe('run method', function () { run.__set__('utils.isCordovaProject', isCordovaProjectTrue); run.__set__('build.run', function () { build(); - return Q.reject(); // rejecting to break run chain + return Promise.reject(); // rejecting to break run chain }); run.__set__('packages.getPackage', function () { - return Q({ + return Promise.resolve({ type: 'windows', file: 'testfile' }); }); run.__set__('packages.deployToDesktop', function () { deployToDesktop(); - return Q(); + return Promise.resolve(); }); return run.run({ nobuild: true }) @@ -241,8 +240,8 @@ describe('run method', function () { it('spec.8 should accept --archs parameter either as cli or as platform arg', function () { spyOn(utils, 'isCordovaProject').and.returnValue(true); - spyOn(packages, 'getPackage').and.returnValue(Q({ arch: 'arm' })); - spyOn(packages, 'deployToDesktop').and.returnValue(Q()); + spyOn(packages, 'getPackage').and.returnValue(Promise.resolve({ arch: 'arm' })); + spyOn(packages, 'deployToDesktop').and.returnValue(Promise.resolve()); var anyString = jasmine.any(String); var expectedDeployOptions = jasmine.objectContaining({ arch: 'arm' }); @@ -263,8 +262,8 @@ describe('run method', function () { it('spec.9 should fall back to anycpu if --archs parameter is not specified', function () { spyOn(utils, 'isCordovaProject').and.returnValue(true); - spyOn(packages, 'getPackage').and.returnValue(Q({ arch: 'anycpu' })); - spyOn(packages, 'deployToDesktop').and.returnValue(Q()); + spyOn(packages, 'getPackage').and.returnValue(Promise.resolve({ arch: 'anycpu' })); + spyOn(packages, 'deployToDesktop').and.returnValue(Promise.resolve()); var anyString = jasmine.any(String); var expectedDeployOptions = jasmine.objectContaining({ arch: 'anycpu' }); diff --git a/template/cordova/Api.js b/template/cordova/Api.js index c316444..98d3c53 100644 --- a/template/cordova/Api.js +++ b/template/cordova/Api.js @@ -223,7 +223,7 @@ Api.prototype.addPlugin = function (plugin, installOptions) { }) // CB-11022 return non-falsy value to indicate // that there is no need to run prepare after - .thenResolve(true); + .then(() => true); }; /** @@ -260,7 +260,7 @@ Api.prototype.removePlugin = function (plugin, uninstallOptions) { }) // CB-11022 return non-falsy value to indicate // that there is no need to run prepare after - .thenResolve(true); + .then(() => true); }; /** diff --git a/template/cordova/build b/template/cordova/build index 0d5137c..2d2a508 100644 --- a/template/cordova/build +++ b/template/cordova/build @@ -82,4 +82,7 @@ buildOpts.argv = buildOpts.argv.original; require('./lib/loggingHelper').adjustLoggerLevel(buildOpts); -new Api().build(buildOpts).done(); +new Api().build(buildOpts).catch(err => { + console.error(err); + process.exit(2); +}); diff --git a/template/cordova/lib/MSBuildTools.js b/template/cordova/lib/MSBuildTools.js index 625379d..d4d9320 100644 --- a/template/cordova/lib/MSBuildTools.js +++ b/template/cordova/lib/MSBuildTools.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var path = require('path'); var fs = require('fs'); var shell = require('shelljs'); @@ -116,7 +115,7 @@ function findAllAvailableVersionsFallBack () { var versions = ['15.9', '15.5', '15.0', '14.0', '12.0', '4.0']; events.emit('verbose', 'Searching for available MSBuild versions...'); - return Q.all(versions.map(checkMSBuildVersion)).then(function (unprocessedResults) { + return Promise.all(versions.map(checkMSBuildVersion)).then(function (unprocessedResults) { return unprocessedResults.filter(function (item) { return !!item; }); @@ -128,12 +127,12 @@ function findAllAvailableVersionsFallBack () { module.exports.findAvailableVersion = function () { var versions = ['15.5', '15.0', '14.0', '12.0', '4.0']; - return Q.all(versions.map(checkMSBuildVersion)).then(function (versions) { + return Promise.all(versions.map(checkMSBuildVersion)).then(function (versions) { // console.log('findAvailableVersion', versions); // select first msbuild version available, and resolve promise with it var msbuildTools = versions[0] || versions[1] || versions[2] || versions[3] || versions[4]; - return msbuildTools ? Q.resolve(msbuildTools) : Q.reject('MSBuild tools not found'); + return msbuildTools ? Promise.resolve(msbuildTools) : Promise.reject('MSBuild tools not found'); }); }; diff --git a/template/cordova/lib/build.js b/template/cordova/lib/build.js index e40deda..22c89b9 100644 --- a/template/cordova/lib/build.js +++ b/template/cordova/lib/build.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var path = require('path'); var nopt = require('nopt'); var shell = require('shelljs'); @@ -51,7 +50,7 @@ module.exports.run = function run (buildOptions) { ROOT = this.root || ROOT; if (!utils.isCordovaProject(this.root)) { - return Q.reject(new CordovaError('Could not find project at ' + this.root)); + return Promise.reject(new CordovaError('Could not find project at ' + this.root)); } var buildConfig = parseAndValidateArgs(buildOptions); @@ -78,7 +77,7 @@ module.exports.run = function run (buildOptions) { events.emit('verbose', ' BUILD OUTPUT: ' + pkg.appx); return pkg; }).catch(function (error) { - return Q.reject(new CordovaError('Build failed', error)); + return Promise.reject(new CordovaError('Build failed', error)); }); }; @@ -385,7 +384,7 @@ function buildTargets (config, myBuildTargets, msbuild) { return msbuild.buildProject(path.join(ROOT, build.target), config.buildType, build.arch, otherProperties); }); - }, Q()); + }, Promise.resolve()); if (shouldBundle) { return buildsCompleted.then(function () { @@ -453,5 +452,5 @@ module.exports.clean = function () { .forEach(function (dir) { shell.rm('-rf', path.join(projectPath, dir)); }); - return Q.resolve(); + return Promise.resolve(); }; diff --git a/template/cordova/lib/clean.js b/template/cordova/lib/clean.js index 12fa06d..ee9fc0e 100644 --- a/template/cordova/lib/clean.js +++ b/template/cordova/lib/clean.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var path = require('path'); var shell = require('shelljs'); @@ -29,5 +28,5 @@ module.exports.run = function (argv) { ['AppPackages', 'build'].forEach(function (dir) { shell.rm('-rf', path.join(projectPath, dir)); }); - return Q.resolve(); + return Promise.resolve(); }; diff --git a/template/cordova/lib/deployment.js b/template/cordova/lib/deployment.js index ba9ace0..8f4b989 100644 --- a/template/cordova/lib/deployment.js +++ b/template/cordova/lib/deployment.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var fs = require('fs'); var path = require('path'); var spawn = require('cordova-common').superspawn.spawn; @@ -44,7 +43,7 @@ DeploymentTool.prototype.isAvailable = function () { * specific to the deployment tool which created them and are likely used internally. */ DeploymentTool.prototype.enumerateDevices = function () { - return Q.reject('May not use DeploymentTool directly, instead get an instance from DeploymentTool.getDeploymentTool()'); + return Promise.reject('May not use DeploymentTool directly, instead get an instance from DeploymentTool.getDeploymentTool()'); }; /** @@ -57,7 +56,7 @@ DeploymentTool.prototype.enumerateDevices = function () { * @pin Optionally provided if the device requires pairing for deployment. */ DeploymentTool.prototype.installAppPackage = function (pathToAppxPackage, targetDevice, shouldLaunch, shouldUpdate, pin) { - return Q.reject('May not use DeploymentTool directly, instead get an instance from DeploymentTool.getDeploymentTool()'); + return Promise.reject('May not use DeploymentTool directly, instead get an instance from DeploymentTool.getDeploymentTool()'); }; /** @@ -67,7 +66,7 @@ DeploymentTool.prototype.installAppPackage = function (pathToAppxPackage, target * @param targetDevice An object returned from a successful call to enumerateDevices. */ DeploymentTool.prototype.uninstallAppPackage = function (packageInfo, targetDevice) { - return Q.reject('Unable to uninstall any app packages because that feature is not supported.'); + return Promise.reject('Unable to uninstall any app packages because that feature is not supported.'); }; /** @@ -77,7 +76,7 @@ DeploymentTool.prototype.uninstallAppPackage = function (packageInfo, targetDevi * @returns A Promise for an array of app names. */ DeploymentTool.prototype.getInstalledApps = function (targetDevice) { - return Q.reject('Unable to get installed apps because that feature is not supported.'); + return Promise.reject('Unable to get installed apps because that feature is not supported.'); }; /** @@ -87,7 +86,7 @@ DeploymentTool.prototype.getInstalledApps = function (targetDevice) { * @returns A Promise for when the app is launched. */ DeploymentTool.prototype.launchApp = function (packageInfo, targetDevice) { - return Q.reject('Unable to launch an app because that feature is not supported.'); + return Promise.reject('Unable to launch an app because that feature is not supported.'); }; /** diff --git a/template/cordova/lib/package.js b/template/cordova/lib/package.js index a097884..fd3306e 100644 --- a/template/cordova/lib/package.js +++ b/template/cordova/lib/package.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var fs = require('fs'); var path = require('path'); var utils = require('./utils'); @@ -32,7 +31,7 @@ module.exports.getPackage = function (projectType, buildtype, buildArch) { var appPackages = path.resolve(path.join(__dirname, '..', '..', 'AppPackages')); // reject promise if AppPackages folder doesn't exist if (!fs.existsSync(appPackages)) { - return Q.reject('AppPackages folder doesn\'t exist'); + return Promise.reject('AppPackages folder doesn\'t exist'); } // find out and resolve paths for all folders inside AppPackages var pkgDirs = fs.readdirSync(appPackages).map(function (relative) { @@ -62,13 +61,13 @@ module.exports.getPackage = function (projectType, buildtype, buildArch) { (pkgInfo.archs && pkgInfo.archs.indexOf(buildArch) > -1))) { // if package's properties match properties provided // resolve the promise with this package's info - return Q.resolve(pkgInfo); + return Promise.resolve(pkgInfo); } } } // reject because seems that no corresponding packages found - return Q.reject('Package with specified parameters not found in AppPackages folder'); + return Promise.reject('Package with specified parameters not found in AppPackages folder'); }; function getPackagePhoneProductId (packageFile) { @@ -117,10 +116,10 @@ function getPackageName (platformPath) { // because the function is only used for desktop deployment, which always has the same // package name when uninstalling / reinstalling try { - return Q.when(AppxManifest.get(path.join(platformPath, 'package.windows.appxmanifest')) + return Promise.resolve(AppxManifest.get(path.join(platformPath, 'package.windows.appxmanifest')) .getIdentity().getName()); } catch (e) { - return Q.reject('Can\'t read package name from manifest ' + e); + return Promise.reject('Can\'t read package name from manifest ' + e); } } @@ -140,11 +139,11 @@ module.exports.findDevice = function (deploymentTool, target) { for (var idx in sortedList) { if (sortedList[idx].toString().toLowerCase().indexOf(target) > -1) { // we should return index based on original list - return Q.resolve(sortedList[idx]); + return Promise.resolve(sortedList[idx]); } } } else if (target === 'device') { - return Q.resolve(deviceList[0]); + return Promise.resolve(deviceList[0]); } else { var candidateList = deviceList.filter(function (device) { if (device.index === parseInt(target, 10)) { @@ -160,7 +159,7 @@ module.exports.findDevice = function (deploymentTool, target) { return candidateList[0]; } } - return Q.reject('Specified device not found'); + return Promise.reject('Specified device not found'); }); }; @@ -184,7 +183,7 @@ function uninstallAppFromPhone (appDeployUtils, pkg, target) { module.exports.deployToPhone = function (pkg, deployTarget, targetWindows10, deploymentTool) { var deployment; if (deploymentTool) { - deployment = Q(deploymentTool); + deployment = Promise.resolve(deploymentTool); } else { deployment = utils.getAppDeployUtils(targetWindows10); } @@ -216,7 +215,7 @@ module.exports.deployToPhone = function (pkg, deployTarget, targetWindows10, dep // deploys specified package to desktop module.exports.deployToDesktop = function (pkg, deployTarget) { if (deployTarget !== 'device' && deployTarget !== 'emulator') { - return Q.reject('Deploying desktop apps to specific target not supported'); + return Promise.reject('Deploying desktop apps to specific target not supported'); } return utils.getAppStoreUtils().then(function (appStoreUtils) { diff --git a/template/cordova/lib/prepare.js b/template/cordova/lib/prepare.js index 1538848..5dca0c4 100644 --- a/template/cordova/lib/prepare.js +++ b/template/cordova/lib/prepare.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var fs = require('fs'); var path = require('path'); var shell = require('shelljs'); @@ -606,7 +605,7 @@ module.exports.prepare = function (cordovaProject, options) { AppxManifest.purgeCache(); // Update own www dir with project's www assets and plugins' assets and js-files - return Q.when(updateWww(cordovaProject, this.locations)) + return Promise.resolve(updateWww(cordovaProject, this.locations)) .then(function () { // update project according to config.xml changes. return updateProjectAccordingTo(self._config, self.locations); @@ -636,13 +635,13 @@ module.exports.clean = function (options) { var projectConfigFile = path.join(projectRoot, 'config.xml'); if ((options && options.noPrepare) || !fs.existsSync(projectConfigFile) || !fs.existsSync(this.locations.configXml)) { - return Q(); + return Promise.resolve(); } var projectConfig = new ConfigParser(this.locations.configXml); var self = this; - return Q().then(function () { + return Promise.resolve().then(function () { cleanWww(projectRoot, self.locations); cleanImages(projectRoot, projectConfig, self.locations); }); diff --git a/template/cordova/lib/run.js b/template/cordova/lib/run.js index 5e7f148..4859420 100644 --- a/template/cordova/lib/run.js +++ b/template/cordova/lib/run.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var nopt = require('nopt'); var build = require('./build'); var utils = require('./utils'); @@ -28,13 +27,13 @@ var events = require('cordova-common').events; module.exports.run = function (options) { if (!utils.isCordovaProject(this.root)) { - return Q.reject(new CordovaError('Could not find project at ' + this.root)); + return Promise.reject(new CordovaError('Could not find project at ' + this.root)); } // Check if ran from admin prompt and fail quickly if CLI has administrative permissions // http://stackoverflow.com/a/11995662/64949 if (ranWithElevatedPermissions()) { - return Q.reject(new CordovaError('Can not run this platform with administrative ' + + return Promise.reject(new CordovaError('Can not run this platform with administrative ' + 'permissions. Must be run from a non-admin prompt.')); } @@ -49,13 +48,13 @@ module.exports.run = function (options) { // Validate args if (options.debug && options.release) { - return Q.reject(new CordovaError('Only one of "debug"/"release" options should be specified')); + return Promise.reject(new CordovaError('Only one of "debug"/"release" options should be specified')); } if ((options.device && options.emulator) || ((options.device || options.emulator) && options.target)) { - return Q.reject(new CordovaError('Only one of "device"/"emulator"/"target" options should be specified')); + return Promise.reject(new CordovaError('Only one of "device"/"emulator"/"target" options should be specified')); } if (args.phone && args.win) { - return Q.reject(new CordovaError('Only one of "phone"/"win" options should be specified')); + return Promise.reject(new CordovaError('Only one of "phone"/"win" options should be specified')); } // Get build/deploy options @@ -71,7 +70,7 @@ module.exports.run = function (options) { var buildTargets = build.getBuildTargets(args.win, args.phone, args.appx); if (!buildTargets || buildTargets.length <= 0) { - return Q.reject(new CordovaError('Unable to determine deploy target.')); + return Promise.reject(new CordovaError('Unable to determine deploy target.')); } // we deploy the first build target so we use buildTargets[0] to determine @@ -90,7 +89,7 @@ module.exports.run = function (options) { return packages.deployToPhone(pkg, deployTarget, args.win10tools) .catch(function (e) { if (options.target || options.emulator || options.device) { - return Q.reject(e); // Explicit target, carry on + return Promise.reject(e); // Explicit target, carry on } // 'device' was inferred initially, because no target was specified return packages.deployToPhone(pkg, 'emulator', args.win10tools); diff --git a/template/cordova/lib/utils.js b/template/cordova/lib/utils.js index 8c9b400..20d144e 100644 --- a/template/cordova/lib/utils.js +++ b/template/cordova/lib/utils.js @@ -17,7 +17,6 @@ under the License. */ -var Q = require('q'); var fs = require('fs'); var path = require('path'); var spawn = require('cordova-common').superspawn.spawn; @@ -28,10 +27,10 @@ var DeploymentTool = require('./deployment'); module.exports.getAppStoreUtils = function () { var appStoreUtils = path.join(__dirname, 'WindowsStoreAppUtils.ps1'); if (!fs.existsSync(appStoreUtils)) { - return Q.reject('Can\'t unblock AppStoreUtils script'); + return Promise.reject('Can\'t unblock AppStoreUtils script'); } return spawn('powershell', ['Unblock-File', module.exports.quote(appStoreUtils)], { stdio: 'ignore' }) - .thenResolve(appStoreUtils); + .then(() => appStoreUtils); }; // returns path to AppDeploy util from Windows Phone 8.1 SDK @@ -40,10 +39,10 @@ module.exports.getAppDeployUtils = function (targetWin10) { var tool = DeploymentTool.getDeploymentTool(version); if (!tool.isAvailable()) { - return Q.reject('App deployment utilities: "' + tool.path + '", not found. Ensure the Windows SDK is installed.'); + return Promise.reject('App deployment utilities: "' + tool.path + '", not found. Ensure the Windows SDK is installed.'); } - return Q.resolve(tool); + return Promise.resolve(tool); }; // checks to see if a .jsproj file exists in the project root diff --git a/template/cordova/log b/template/cordova/log index 9eefa2d..07f9877 100644 --- a/template/cordova/log +++ b/template/cordova/log @@ -20,11 +20,10 @@ */ var log = require('./lib/log'); -var Q = require('q'); var args = process.argv; // Usage support for when args are given -Q().then(function () { +Promise.resolve().then(function () { var argsToPass = []; if (args.length > 2) { argsToPass = args.slice(2); diff --git a/template/cordova/run b/template/cordova/run index 52cdcd5..308ec8d 100644 --- a/template/cordova/run +++ b/template/cordova/run @@ -79,4 +79,7 @@ runOpts.argv = runOpts.argv.original; require('./lib/loggingHelper').adjustLoggerLevel(runOpts); -new Api().run(runOpts).done(); +new Api().run(runOpts).catch(err => { + console.error(err); + process.exit(2); +}); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org For additional commands, e-mail: commits-h...@cordova.apache.org