You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ra...@apache.org on 2020/07/03 16:54:32 UTC
[cordova-android] branch master updated: refactor: save
ProjectBuilder instance in Api instance (#1016)
This is an automated email from the ASF dual-hosted git repository.
raphinesse pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-android.git
The following commit(s) were added to refs/heads/master by this push:
new ba5781c refactor: save ProjectBuilder instance in Api instance (#1016)
ba5781c is described below
commit ba5781c3bf9890dbb5f2a897c33cf274b87b1a81
Author: Raphael von der GrĂ¼n <ra...@gmail.com>
AuthorDate: Fri Jul 3 18:54:24 2020 +0200
refactor: save ProjectBuilder instance in Api instance (#1016)
This reduces dependence on the `builders` module and reduces repitition.
This also facilitates another WIP refactoring I am working on.
---
bin/templates/cordova/Api.js | 6 ++++--
bin/templates/cordova/lib/build.js | 5 ++---
bin/templates/cordova/lib/run.js | 3 +--
spec/unit/Api.spec.js | 11 ++++-------
spec/unit/run.spec.js | 6 ++++++
5 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/bin/templates/cordova/Api.js b/bin/templates/cordova/Api.js
index 143047b..5142c7f 100644
--- a/bin/templates/cordova/Api.js
+++ b/bin/templates/cordova/Api.js
@@ -85,6 +85,8 @@ class Api {
build: path.join(this.root, 'build'),
javaSrc: path.join(appMain, 'java')
};
+
+ this._builder = require('./lib/builders/builders').getBuilder(this.root);
}
/**
@@ -161,7 +163,7 @@ class Api {
if (plugin.getFrameworks(this.platform).length === 0) return;
selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
// This should pick the correct builder, not just get gradle
- require('./lib/builders/builders').getBuilder().prepBuildFiles();
+ this._builder.prepBuildFiles();
}.bind(this))
// CB-11022 Return truthy value to prevent running prepare after
.then(() => true);
@@ -193,7 +195,7 @@ class Api {
if (plugin.getFrameworks(this.platform).length === 0) return;
selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
- require('./lib/builders/builders').getBuilder().prepBuildFiles();
+ this._builder.prepBuildFiles();
}.bind(this))
// CB-11022 Return truthy value to prevent running prepare after
.then(() => true);
diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js
index e199239..fcbd486 100644
--- a/bin/templates/cordova/lib/build.js
+++ b/bin/templates/cordova/lib/build.js
@@ -23,7 +23,6 @@ var nopt = require('nopt');
var Adb = require('./Adb');
-var builders = require('./builders/builders');
var events = require('cordova-common').events;
const execa = require('execa');
var CordovaError = require('cordova-common').CordovaError;
@@ -145,7 +144,7 @@ function parseOpts (options, resolvedTarget, projectRoot) {
*/
module.exports.runClean = function (options) {
var opts = parseOpts(options, null, this.root);
- var builder = builders.getBuilder();
+ var builder = this._builder;
return builder.prepEnv(opts).then(function () {
return builder.clean(opts);
@@ -166,7 +165,7 @@ module.exports.runClean = function (options) {
*/
module.exports.run = function (options, optResolvedTarget) {
var opts = parseOpts(options, optResolvedTarget, this.root);
- var builder = builders.getBuilder();
+ var builder = this._builder;
return builder.prepEnv(opts).then(function () {
if (opts.prepEnv) {
diff --git a/bin/templates/cordova/lib/run.js b/bin/templates/cordova/lib/run.js
index 892e9b0..c0a44d9 100644
--- a/bin/templates/cordova/lib/run.js
+++ b/bin/templates/cordova/lib/run.js
@@ -100,7 +100,6 @@ module.exports.run = function (runOptions) {
});
}).then(function (resolvedTarget) {
return new Promise((resolve) => {
- const builder = require('./builders/builders').getBuilder();
const buildOptions = require('./build').parseBuildOptions(runOptions, null, self.root);
// Android app bundles cannot be deployed directly to the device
@@ -110,7 +109,7 @@ module.exports.run = function (runOptions) {
throw packageTypeErrorMessage;
}
- resolve(builder.fetchBuildResults(buildOptions.buildType, buildOptions.arch));
+ resolve(self._builder.fetchBuildResults(buildOptions.buildType, buildOptions.arch));
}).then(function (buildResults) {
if (resolvedTarget && resolvedTarget.isEmulator) {
return emulator.wait_for_boot(resolvedTarget.target).then(function () {
diff --git a/spec/unit/Api.spec.js b/spec/unit/Api.spec.js
index b7242ce..94f4ed2 100644
--- a/spec/unit/Api.spec.js
+++ b/spec/unit/Api.spec.js
@@ -23,7 +23,6 @@ var common = require('cordova-common');
var rewire = require('rewire');
var AndroidProject = require('../../bin/templates/cordova/lib/AndroidProject');
-var builders = require('../../bin/templates/cordova/lib/builders/builders');
var PluginInfo = common.PluginInfo;
@@ -31,7 +30,7 @@ var FIXTURES = path.join(__dirname, '../e2e/fixtures');
var FAKE_PROJECT_DIR = path.join(os.tmpdir(), 'plugin-test-project');
describe('addPlugin method', function () {
- var api, Api, gradleBuilder;
+ var api, Api;
beforeEach(function () {
Api = rewire('../../bin/templates/cordova/Api');
@@ -49,22 +48,20 @@ describe('addPlugin method', function () {
Api.__set__('selfEvents.emit', jasmine.createSpy());
api = new Api('android', FAKE_PROJECT_DIR);
-
- gradleBuilder = jasmine.createSpyObj('gradleBuilder', ['prepBuildFiles']);
- spyOn(builders, 'getBuilder').and.returnValue(gradleBuilder);
+ spyOn(api._builder, 'prepBuildFiles');
});
const getPluginFixture = name => new PluginInfo(path.join(FIXTURES, name));
it('Test#001 : should call gradleBuilder.prepBuildFiles for every plugin with frameworks', () => {
return api.addPlugin(getPluginFixture('cordova-plugin-fake')).then(() => {
- expect(gradleBuilder.prepBuildFiles).toHaveBeenCalled();
+ expect(api._builder.prepBuildFiles).toHaveBeenCalled();
});
});
it('Test#002 : shouldn\'t trigger gradleBuilder.prepBuildFiles for plugins without android frameworks', () => {
return api.addPlugin(getPluginFixture('cordova-plugin-fake-ios-frameworks')).then(() => {
- expect(gradleBuilder.prepBuildFiles).not.toHaveBeenCalled();
+ expect(api._builder.prepBuildFiles).not.toHaveBeenCalled();
});
});
});
diff --git a/spec/unit/run.spec.js b/spec/unit/run.spec.js
index 2f8f8b2..78104c7 100644
--- a/spec/unit/run.spec.js
+++ b/spec/unit/run.spec.js
@@ -18,6 +18,7 @@
*/
const rewire = require('rewire');
+const builders = require('../../bin/templates/cordova/lib/builders/builders');
describe('run', () => {
let run;
@@ -59,6 +60,11 @@ describe('run', () => {
events: eventsSpyObj,
getInstallTarget: getInstallTargetSpy
});
+
+ // run needs `this` to behave like an Api instance
+ run.run = run.run.bind({
+ _builder: builders.getBuilder('FakeRootPath')
+ });
});
it('should run on default device when no target arguments are specified', () => {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org