Github user kamrik commented on a diff in the pull request:
https://github.com/apache/cordova-windows/pull/84#discussion_r31144880
--- Diff: template/cordova/Api.js ---
@@ -0,0 +1,54 @@
+
+/*jshint node: true*/
+
+var path = require('path');
+
+var buildImpl = require('./lib/build');
+var requirementsImpl = require('./lib/check_reqs');
+
+function PlatformApi () {
+ // Set up basic properties. They probably will be overridden if this
API is used by cordova-lib
+ this.root = path.join(__dirname, '..', '..');
+ this.platform = 'windows';
+
+ if (this.constructor.super_){
+ // This should only happen if this class is being instantiated
from cordova-lib
+ // In this case the arguments is being passed from cordova-lib as
well,
+ // so we don't need to care about whether they're correct ot not
+ this.constructor.super_.apply(this, arguments);
+ }
+}
+
+PlatformApi.prototype.build = function(context) {
+ var buildOptions = context && context.options || [];
+ return buildImpl.run(buildOptions);
+};
+
+PlatformApi.prototype.requirements = function () {
+ return requirementsImpl.check_all();
+};
+
+function PlatformHandler() {
--- End diff --
The only reason I kept the parser property when switching to
PlatformProject was backwards compatibility as well, with the hope to deprecate
it once the rest of the code is changed to use methods of the PlatformProject
directly. Actually there are very few direct calls to the parser left in
cordova-lib, it's mostly used by the tests (which will have to change anyway).
The "prepare" has several sub-steps which might be interesting to the
outside user as separate steps:
* apply plugin config munges
* apply config.xml based config changes to global project files
* copy www
So I'm not sure prepare should be a single black box, but the above steps
should definitely be methods of the PlatformApi rather than of some sub-object,
and there can be a "prepare" method that executes all 3 of those steps for
convenience.
Here is an example usage of a PlatformProject from a gulp file with
separate calls to the above 3 stages.
https://github.com/kamrik/cordova-api-example/blob/master/gulpfile.js#L105
The plugin config munges are applied as part of gulp "create" task, and the
other two as part of gulp "build" task. This allows for a much faster build for
projects with many plugins. But slower for adding/removing plugins (which is a
less frequent operation).
Whichever direction you decide to take it, thanks for picking up this API
work!
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]