diff --git a/bin/templates/cordova/lib/run.js b/bin/templates/cordova/lib/run.js index 89de076ee..75465e950 100644 --- a/bin/templates/cordova/lib/run.js +++ b/bin/templates/cordova/lib/run.js @@ -19,8 +19,9 @@ var emulator = require('./emulator'); const target = require('./target'); -var PackageType = require('./PackageType'); -const { events } = require('cordova-common'); +const build = require('./build'); +const PackageType = require('./PackageType'); +const { CordovaError, events } = require('cordova-common'); /** * Builds a target spec from a runOptions object @@ -54,32 +55,22 @@ function formatResolvedTarget ({ id, type }) { * * @return {Promise} */ -module.exports.run = function (runOptions) { - runOptions = runOptions || {}; - - var self = this; +module.exports.run = async function (runOptions = {}) { const spec = buildTargetSpec(runOptions); + const resolvedTarget = await target.resolve(spec); + events.emit('log', `Deploying to ${formatResolvedTarget(resolvedTarget)}`); - return target.resolve(spec).then(function (resolvedTarget) { - events.emit('log', `Deploying to ${formatResolvedTarget(resolvedTarget)}`); - - return new Promise((resolve) => { - const buildOptions = require('./build').parseBuildOptions(runOptions, null, self.root); + const { packageType, buildType } = build.parseBuildOptions(runOptions, null, this.root); - // Android app bundles cannot be deployed directly to the device - if (buildOptions.packageType === PackageType.BUNDLE) { - const packageTypeErrorMessage = 'Package type "bundle" is not supported during cordova run.'; - events.emit('error', packageTypeErrorMessage); - throw packageTypeErrorMessage; - } + // Android app bundles cannot be deployed directly to the device + if (packageType === PackageType.BUNDLE) { + throw new CordovaError('Package type "bundle" is not supported during cordova run.'); + } - resolve(self._builder.fetchBuildResults(buildOptions.buildType, buildOptions.arch)); - }).then(async function (buildResults) { - if (resolvedTarget.type === 'emulator') { - await emulator.wait_for_boot(resolvedTarget.id); - } + const buildResults = this._builder.fetchBuildResults(buildType); - return target.install(resolvedTarget, buildResults); - }); - }); + if (resolvedTarget.type === 'emulator') { + await emulator.wait_for_boot(resolvedTarget.id); + } + return target.install(resolvedTarget, buildResults); }; diff --git a/spec/unit/run.spec.js b/spec/unit/run.spec.js index 5bd4e0176..544554400 100644 --- a/spec/unit/run.spec.js +++ b/spec/unit/run.spec.js @@ -77,7 +77,7 @@ describe('run', () => { it('should fail with the error message if --packageType=bundle setting is used', () => { targetSpyObj.resolve.and.resolveTo(resolvedTarget); return expectAsync(run.run({ argv: ['--packageType=bundle'] })) - .toBeRejectedWith(jasmine.stringMatching(/Package type "bundle" is not supported/)); + .toBeRejectedWithError(/Package type "bundle" is not supported/); }); }); });