[ 
https://issues.apache.org/jira/browse/CB-13055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16539378#comment-16539378
 ] 

ASF GitHub Bot commented on CB-13055:
-------------------------------------

raphinesse closed pull request #624: CB-13055 Fold all fetch options to `true`
URL: https://github.com/apache/cordova-lib/pull/624
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/integration-tests/HooksRunner.spec.js 
b/integration-tests/HooksRunner.spec.js
index 37220909b..a039a4119 100644
--- a/integration-tests/HooksRunner.spec.js
+++ b/integration-tests/HooksRunner.spec.js
@@ -228,7 +228,7 @@ describe('HooksRunner', function () {
 
                 return Promise.resolve()
                     .then(_ => cordova.plugin('rm', testPlugin))
-                    .then(_ => cordova.plugin('add', testPluginFixture, 
{fetch: true}))
+                    .then(_ => cordova.plugin('add', testPluginFixture))
                     .then(_ => {
                         fire.calls.all()
                             .filter(call => hooksToTest.includes(call.args[0]))
diff --git a/integration-tests/fetch.spec.js b/integration-tests/fetch.spec.js
index 35300787d..3cd3b7f87 100644
--- a/integration-tests/fetch.spec.js
+++ b/integration-tests/fetch.spec.js
@@ -51,12 +51,12 @@ describe('end-to-end plugin dependency tests', function () {
         return cordova.create('hello3')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             }).then(function () {
-                return cordova.plugin('add', 'cordova-plugin-file', {'fetch': 
true});
+                return cordova.plugin('add', 'cordova-plugin-file');
             }).then(function () {
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
-                return cordova.plugin('add', plugins['Test1'], {'fetch': 
true});
+                return cordova.plugin('add', plugins['Test1']);
             }).fail(function (err) {
                 expect(err.message).toContain('does not satisfy dependency 
plugin requirement');
             });
@@ -66,14 +66,14 @@ describe('end-to-end plugin dependency tests', function () {
         return cordova.create('hello3')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             })
             .then(function () {
-                return cordova.plugin('add', 'cordova-plugin-file', {'fetch': 
true});
+                return cordova.plugin('add', 'cordova-plugin-file');
             })
             .then(function () {
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
-                return cordova.plugin('add', plugins['Test1'], {'fetch': true, 
'force': true});
+                return cordova.plugin('add', plugins['Test1'], {'force': 
true});
             })
             .then(function () {
                 expect(path.join(pluginsDir, 'Test1')).toExist();
@@ -85,14 +85,14 @@ describe('end-to-end plugin dependency tests', function () {
         return cordova.create('hello3')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             })
             .then(function () {
-                return cordova.plugin('add', 'cordova-plugin-file@2.1.0', 
{'fetch': true});
+                return cordova.plugin('add', 'cordova-plugin-file@2.1.0');
             })
             .then(function () {
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
-                return cordova.plugin('add', plugins['Test1'], {'fetch': 
true});
+                return cordova.plugin('add', plugins['Test1']);
             })
             .then(function () {
                 expect(path.join(pluginsDir, 'Test1')).toExist();
@@ -105,18 +105,18 @@ describe('end-to-end plugin dependency tests', function 
() {
         return cordova.create('hello3')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             })
             .then(function () {
-                return cordova.plugin('add', plugins['Test1'], {'fetch': 
true});
+                return cordova.plugin('add', plugins['Test1']);
             })
             .then(function () {
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
                 expect(path.join(pluginsDir, 'Test1')).toExist();
-                return cordova.plugin('add', plugins['Test2'], {'fetch': 
true});
+                return cordova.plugin('add', plugins['Test2']);
             })
             .then(function () {
-                return cordova.plugin('add', plugins['Test3'], {'fetch': 
true});
+                return cordova.plugin('add', plugins['Test3']);
             })
             .fail(function (err) {
                 expect(path.join(pluginsDir, 'Test2')).toExist();
@@ -131,13 +131,13 @@ describe('end-to-end plugin dependency tests', function 
() {
         return cordova.create('hello3')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             })
             .then(function () {
-                return cordova.plugin('add', 
'https://github.com/apache/cordova-plugin-file', {'fetch': true});
+                return cordova.plugin('add', 
'https://github.com/apache/cordova-plugin-file');
             })
             .then(function () {
-                return cordova.plugin('add', plugins['Test4'], {'fetch': 
true});
+                return cordova.plugin('add', plugins['Test4']);
             })
             .then(function () {
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
diff --git a/integration-tests/pkgJson-restore.spec.js 
b/integration-tests/pkgJson-restore.spec.js
index 69e90ed0f..f8e428dd6 100644
--- a/integration-tests/pkgJson-restore.spec.js
+++ b/integration-tests/pkgJson-restore.spec.js
@@ -83,7 +83,7 @@ describe('tests platform/spec restore with --save', function 
() {
 
         return emptyPlatformList().then(function () {
             // Add platform with save, fetch
-            return cordovaPlatform('add', androidPlatform, {'save': true, 
'fetch': true});
+            return cordovaPlatform('add', androidPlatform, {'save': true});
         }).then(function () {
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
             // Added platform properly to pkg.json
@@ -149,7 +149,7 @@ describe('tests platform/spec restore with --save', 
function () {
 
         return emptyPlatformList().then(function () {
             // Add platform with save and fetch
-            return cordovaPlatform('add', 
'https://github.com/apache/cordova-browser', {'save': true, 'fetch': true});
+            return cordovaPlatform('add', 
'https://github.com/apache/cordova-browser', {'save': true});
         }).then(function () {
             // Check that platform was added to config.xml successfully.
             var cfg = new ConfigParser(configXmlPath);
@@ -168,7 +168,7 @@ describe('tests platform/spec restore with --save', 
function () {
             
expect(pkgJson.dependencies['cordova-browser']).toEqual('git+https://github.com/apache/cordova-browser.git');
         }).then(function () {
             // Remove platform without --save.
-            return cordovaPlatform('rm', bPlatform, {'fetch': true});
+            return cordovaPlatform('rm', bPlatform);
         }).then(function () {
             // Platform in pkg.json should still be there.
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -176,7 +176,7 @@ describe('tests platform/spec restore with --save', 
function () {
             
expect(pkgJson.dependencies['cordova-browser']).toEqual('git+https://github.com/apache/cordova-browser.git');
         }).then(function () {
             // Run cordova prepare
-            return prepare({'fetch': true});
+            return prepare();
         }).then(function () {
             // Check config.xml for spec modification.
             var cfg3 = new ConfigParser(configXmlPath);
@@ -212,7 +212,7 @@ describe('tests platform/spec restore with --save', 
function () {
         var configPlugin;
         return emptyPlatformList().then(function () {
             // Add plugin with save and fetch.
-            return cordovaPlugin('add', 
['https://github.com/apache/cordova-plugin-splashscreen'], {'save': true, 
'fetch': true});
+            return cordovaPlugin('add', 
['https://github.com/apache/cordova-plugin-splashscreen'], {'save': true});
         }).then(function () {
             // Plugin id and spec were added to config.xml successfully.
             var cfg = new ConfigParser(configXmlPath);
@@ -228,7 +228,7 @@ describe('tests platform/spec restore with --save', 
function () {
             expect(path.join(pluginsFolderPath, 
'cordova-plugin-splashscreen')).toExist();
         }).then(function () {
             // Remove plugin without --save.
-            return cordovaPlugin('rm', 'cordova-plugin-splashscreen', 
{'fetch': true});
+            return cordovaPlugin('rm', 'cordova-plugin-splashscreen');
         }).then(function () {
             // Plugin id and spec are still in config.xml.
             var cfg2 = new ConfigParser(configXmlPath);
@@ -244,10 +244,10 @@ describe('tests platform/spec restore with --save', 
function () {
             expect(path.join(pluginsFolderPath, 
'cordova-plugin-splashscreen')).not.toExist();
         }).then(function () {
             // Add platform (so that prepare can run).
-            return cordovaPlatform('add', 'browser', {'save': true, 'fetch': 
true});
+            return cordovaPlatform('add', 'browser', {'save': true});
         }).then(function () {
             // Run cordova prepare with fetch.
-            return prepare({'save': true, 'fetch': true});
+            return prepare({'save': true});
         }).then(function () {
             // Config.xml spec is modified.
             var cfg3 = new ConfigParser(configXmlPath);
@@ -320,10 +320,10 @@ describe('tests platform/spec restore with --save', 
function () {
 
         return emptyPlatformList().then(function () {
             // Add 'browser' platform to project without --save
-            return cordovaPlatform('add', secondPlatformAdded, {'fetch': 
true});
+            return cordovaPlatform('add', secondPlatformAdded);
         }).then(function () {
             // Add helpers.testPlatform to project with --save
-            return cordovaPlatform('add', ['browser'], {'save': true, 'fetch': 
true});
+            return cordovaPlatform('add', ['browser'], {'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json) and 
(platformsJson)
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -345,7 +345,7 @@ describe('tests platform/spec restore with --save', 
function () {
                 
expect(pkgJson.cordova.platforms.indexOf('browser')).toBeGreaterThan(-1);
             }).then(function () {
                 // Run cordova prepare
-                return prepare({'fetch': true});
+                return prepare();
             });
     // Cordova prepare needs extra wait time to complete.
     }, TIMEOUT);
@@ -402,7 +402,7 @@ describe('files should not be modified if their platforms 
are identical', functi
         // Pkg.json and config.xml contain only android at this point 
(basePkgJson6).
         return emptyPlatformList().then(function () {
             // Run cordova prepare.
-            return prepare({'fetch': true});
+            return prepare();
         }).then(function () {
             var cfg2 = new ConfigParser(configXmlPath);
             engines = cfg2.getEngines();
@@ -485,7 +485,7 @@ describe('update pkg.json to include platforms in 
config.xml', function () {
         expect(pkgJson.dependencies[browserPlatform]).toBeUndefined();
         expect(pkgJson.dependencies[androidPlatform]).toBeUndefined();
         return emptyPlatformList().then(function () {
-            return prepare({'fetch': true});
+            return prepare();
         }).then(function () {
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
             // Expect 'browser' to be added to pkg.json.
@@ -563,7 +563,7 @@ describe('update empty package.json to match config.xml', 
function () {
         expect(configEngArray.length === 1);
 
         return emptyPlatformList().then(function () {
-            return prepare({ fetch: true });
+            return prepare();
         }).then(function () {
             var cfg2 = new ConfigParser(configXmlPath);
             engines = cfg2.getEngines();
@@ -643,7 +643,7 @@ describe('update config.xml to include platforms in 
pkg.json', function () {
         expect(pkgJson.dependencies).toEqual({ 'cordova-ios': '^4.5.4', 
'cordova-browser': '^5.0.3' });
         return emptyPlatformList().then(function () {
             // Run cordova prepare.
-            return prepare({ 'fetch': true });
+            return prepare();
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -732,7 +732,7 @@ describe('update config.xml to use the variable found in 
pkg.json', function ()
 
         return emptyPlatformList().then(function () {
             // Run cordova prepare.
-            return prepare({'fetch': true, 'save': true});
+            return prepare({'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -817,7 +817,7 @@ describe('update pkg.json to include plugin and variable 
found in config.xml', f
 
         return emptyPlatformList().then(function () {
             // Run cordova prepare.
-            return prepare({'fetch': true, 'save': true});
+            return prepare({'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -919,7 +919,7 @@ describe('update pkg.json AND config.xml to include all 
plugins and merge unique
 
         return emptyPlatformList().then(function () {
             // Run cordova prepare.
-            return prepare({'fetch': true, 'save': true});
+            return prepare({'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -1049,7 +1049,7 @@ describe('update pkg.json AND config.xml to include all 
plugins/merge variables
 
         return emptyPlatformList().then(function () {
             // Run cordova prepare
-            return prepare({'save': true, 'fetch': true});
+            return prepare({'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json)
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -1169,7 +1169,7 @@ describe('update config.xml to include the plugin that is 
in pkg.json', function
 
         return emptyPlatformList().then(function () {
             // Run cordova prepare.
-            return prepare({'fetch': true, 'save': true});
+            return prepare({'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -1264,7 +1264,7 @@ describe('platforms and plugins should be restored with 
config.xml even without
 
         return emptyPlatformList().then(function () {
             // Run platform add.
-            return cordovaPlatform('add', browserPlatform, {'save': true, 
'fetch': true});
+            return cordovaPlatform('add', browserPlatform, {'save': true});
         }).then(function () {
             // Android and browser are in config.xml.
             var cfg3 = new ConfigParser(configXmlPath);
@@ -1288,7 +1288,7 @@ describe('platforms and plugins should be restored with 
config.xml even without
             return cordovaPlatform('rm', [browserPlatform]);
         }).then(function () {
             // Run cordova prepare.
-            return prepare({'fetch': true});
+            return prepare();
         }).then(function () {
             var cfg2 = new ConfigParser(configXmlPath);
             engines = cfg2.getEngines();
@@ -1330,7 +1330,7 @@ describe('platforms and plugins should be restored with 
config.xml even without
             expect(path.join(pluginsFolderPath16, 
'cordova-plugin-device')).not.toExist();
         }).then(function () {
             // Run cordova prepare.
-            return prepare({'fetch': true});
+            return prepare();
         }).then(function () {
             // Plugin should be restored and returned to the installed list.
             expect(path.join(pluginsFolderPath16, 
'cordova-plugin-device')).toExist();
@@ -1394,7 +1394,7 @@ describe('tests platform/spec restore with --save', 
function () {
 
         return emptyPlatformList().then(function () {
             // Add the testing platform with --save.
-            return cordovaPlatform('add', 'android', {'save': true, 'fetch': 
true});
+            return cordovaPlatform('add', 'android', {'save': true});
         }).then(function () {
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
             // Check the platform add was successful in package.json.
@@ -1411,7 +1411,7 @@ describe('tests platform/spec restore with --save', 
function () {
                 
expect(pkgJson.cordova.platforms.indexOf(helpers.testPlatform)).toBeGreaterThan(-1);
             }).then(function () {
                 // Run cordova prepare.
-                return prepare({'fetch': true});
+                return prepare();
             });
     // Cordova prepare needs extra wait time to complete.
     }, TIMEOUT);
@@ -1429,10 +1429,10 @@ describe('tests platform/spec restore with --save', 
function () {
 
         return emptyPlatformList().then(function () {
             // Add the testing platform with --save.
-            return cordovaPlatform('add', [helpers.testPlatform], {'save': 
true, 'fetch': true});
+            return cordovaPlatform('add', [helpers.testPlatform], {'save': 
true});
         }).then(function () {
             // Add the 'browser' platform with --save
-            return cordovaPlatform('add', secondPlatformAdded, {'save': true, 
'fetch': true});
+            return cordovaPlatform('add', secondPlatformAdded, {'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json) and 
(platforms.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -1455,7 +1455,7 @@ describe('tests platform/spec restore with --save', 
function () {
                 
expect(pkgJson.cordova.platforms.indexOf(helpers.testPlatform)).toEqual(-1);
             }).then(function () {
                 // Run cordova prepare.
-                return prepare({'fetch': true});
+                return prepare();
             });
     // Cordova prepare needs extra wait time to complete.
     }, TIMEOUT);
diff --git a/integration-tests/pkgJson.spec.js 
b/integration-tests/pkgJson.spec.js
index 2839fe6dd..db8195e50 100644
--- a/integration-tests/pkgJson.spec.js
+++ b/integration-tests/pkgJson.spec.js
@@ -78,7 +78,7 @@ describe('plugin end-to-end', function () {
         expect(pkgJsonPath).toExist();
 
         // Add the plugin with --save.
-        return cordova.plugin('add', pluginId + '@1.1.2', {'save': true, 
'fetch': true})
+        return cordova.plugin('add', pluginId + '@1.1.2', {'save': true})
             .then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -95,7 +95,7 @@ describe('plugin end-to-end', function () {
                 expect(configPlugin).toEqual({ name: 'cordova-plugin-device', 
spec: '^1.1.2', variables: {} });
             }).then(function () {
                 // And now remove it with --save.
-                return cordova.plugin('rm', pluginId, {'save': true, 'fetch': 
true});
+                return cordova.plugin('rm', pluginId, {'save': true});
             }).then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -112,10 +112,10 @@ describe('plugin end-to-end', function () {
         expect(pkgJsonPath).toExist();
 
         // Add the geolocation plugin with --save.
-        return cordova.plugin('add', 'cordova-plugin-geolocation', {'save': 
true, 'fetch': true})
+        return cordova.plugin('add', 'cordova-plugin-geolocation', {'save': 
true})
             .then(function () {
                 // Add a second plugin without save.
-                return cordova.plugin('add', pluginId, {'fetch': true});
+                return cordova.plugin('add', pluginId);
             }).then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -134,7 +134,7 @@ describe('plugin end-to-end', function () {
         expect(pkgJsonPath).toExist();
 
         // Add the plugin with --save.
-        return cordova.plugin('add', pluginId, {'save': true, 'fetch': true})
+        return cordova.plugin('add', pluginId, {'save': true})
             .then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -161,7 +161,7 @@ describe('plugin end-to-end', function () {
         expect(pkgJsonPath).toExist();
 
         // Add the plugin with --save.
-        return cordova.plugin('add', pluginId, {'fetch': true, 'save': true, 
'cli_variables': {'someKey': 'someValue'}})
+        return cordova.plugin('add', pluginId, {'save': true, 'cli_variables': 
{'someKey': 'someValue'}})
             .then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -190,7 +190,7 @@ describe('plugin end-to-end', function () {
         expect(pkgJsonPath).toExist();
 
         // Add the plugin with --save.
-        return cordova.plugin('add', [pluginId, 
'cordova-plugin-device-motion'], {'save': true, 'fetch': true})
+        return cordova.plugin('add', [pluginId, 
'cordova-plugin-device-motion'], {'save': true})
             .then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -203,7 +203,7 @@ describe('plugin end-to-end', function () {
                 
expect(pkgJson.dependencies['cordova-plugin-device-motion']).toBeDefined();
             }).then(function () {
                 // And now remove it with --save.
-                return cordova.plugin('rm', [pluginId, 
'cordova-plugin-device-motion'], {'save': true, 'fetch': true});
+                return cordova.plugin('rm', [pluginId, 
'cordova-plugin-device-motion'], {'save': true});
             }).then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -240,7 +240,7 @@ describe('plugin end-to-end', function () {
         // Config.xml has no platform or plugin or specs.
         expect(engines.length).toEqual(0);
         // Add ios without version.
-        return cordova.platform('add', ['ios'], {'save': true, 'fetch': true})
+        return cordova.platform('add', ['ios'], {'save': true})
             .then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -264,7 +264,7 @@ describe('plugin end-to-end', function () {
                 });
             }).then(function () {
                 // Add geolocation plugin with --save --fetch.
-                return cordova.plugin('add', 'cordova-plugin-geolocation', 
{'save': true, 'fetch': true});
+                return cordova.plugin('add', 'cordova-plugin-geolocation', 
{'save': true});
             }).then(function () {
                 var iosJson = cordova_util.requireNoCache(iosJsonPath);
                 
expect(iosJson.installed_plugins['cordova-plugin-geolocation']).toBeDefined();
@@ -300,7 +300,7 @@ describe('plugin end-to-end', function () {
 
         cordova_util.requireNoCache(pkgJsonPath);
         // Run cordova platform add local path --save --fetch.
-        return cordova.platform('add', platformPath, {'save': true, 'fetch': 
true})
+        return cordova.platform('add', platformPath, {'save': true})
             .then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -324,7 +324,7 @@ describe('plugin end-to-end', function () {
                 });
             }).then(function () {
                 // Run cordova plugin add local path --save --fetch.
-                return cordova.plugin('add', pluginPath, {'save': true, 
'fetch': true});
+                return cordova.plugin('add', pluginPath, {'save': true});
             }).then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -399,7 +399,7 @@ describe('platform end-to-end with --save', function () {
         // Check there are no platforms yet.
         return emptyPlatformList().then(function () {
             // Add the testing platform with --save.
-            return cordova.platform('add', [helpers.testPlatform], {'save': 
true, 'fetch': true});
+            return cordova.platform('add', [helpers.testPlatform], {'save': 
true});
         }).then(function () {
             // Check the platform add was successful.
             pkgJson = require(pkgJsonPath);
@@ -424,7 +424,7 @@ describe('platform end-to-end with --save', function () {
 
         return emptyPlatformList().then(function () {
             // Add the testing platform with --save.
-            return cordova.platform('add', [helpers.testPlatform], {'save': 
true, 'fetch': true});
+            return cordova.platform('add', [helpers.testPlatform], {'save': 
true});
         }).then(function () {
             // Check the platform add was successful.
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -450,7 +450,7 @@ describe('platform end-to-end with --save', function () {
         // Pkg.json "platforms" should be empty and helpers.testPlatform 
should not exist in pkg.json.
         expect(pkgJson.cordova).toBeUndefined();
         // Add platform without --save.
-        return cordova.platform('add', [helpers.testPlatform], {'fetch': true})
+        return cordova.platform('add', [helpers.testPlatform])
             .then(function () {
                 // Check the platform add was successful, reload, skipping 
cache.
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -466,10 +466,10 @@ describe('platform end-to-end with --save', function () {
         expect(pkgJsonPath).toExist();
 
         // Add a platform without --save.
-        return cordova.platform('add', platformNotToAdd, {'fetch': true})
+        return cordova.platform('add', platformNotToAdd)
             .then(function () {
                 // And now add another platform with --save.
-                return cordova.platform('add', [helpers.testPlatform], 
{'save': true, 'fetch': true});
+                return cordova.platform('add', [helpers.testPlatform], 
{'save': true});
             }).then(function () {
                 // Check the platform add was successful, reload, skipping 
cache.
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -502,7 +502,7 @@ describe('platform end-to-end with --save', function () {
         // Check there are no platforms yet.
         return emptyPlatformList().then(function () {
             // Add the testing platform with --save and add specific version 
to android platform.
-            return cordova.platform('add', ['android@7.0.0', 'browser@5.0.1'], 
{'save': true, 'fetch': true});
+            return cordova.platform('add', ['android@7.0.0', 'browser@5.0.1'], 
{'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -529,7 +529,7 @@ describe('platform end-to-end with --save', function () {
         }).then(fullPlatformList) // Platform should still be in platform ls.
             .then(function () {
                 // And now remove it with --save.
-                return cordova.platform('rm', ['android', 'browser'], {'save': 
true, 'fetch': true});
+                return cordova.platform('rm', ['android', 'browser'], {'save': 
true});
             }).then(function () {
                 // Delete any previous caches of require(package.json).
                 pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -614,7 +614,7 @@ describe('During add, if pkg.json has a platform/plugin 
spec, use that one.', fu
 
         return emptyPlatformList().then(function () {
             // Add ios with --save and --fetch.
-            return cordova.platform('add', [iosPlatform], {'save': true, 
'fetch': true});
+            return cordova.platform('add', [iosPlatform], {'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             // ios has been added.
@@ -642,7 +642,7 @@ describe('During add, if pkg.json has a platform/plugin 
spec, use that one.', fu
             expect(semver.satisfies(iosVersion.version, 
pkgJson.dependencies['cordova-ios'])).toEqual(true);
         }).then(function () {
             // Add splashscreen plugin with --save --fetch.
-            return cordova.plugin('add', 'cordova-plugin-splashscreen', 
{'save': true, 'fetch': true});
+            return cordova.plugin('add', 'cordova-plugin-splashscreen', 
{'save': true});
         }).then(function () {
             pluginPkgJsonVersion = 
cordova_util.requireNoCache(pluginPkgJsonDir);
             // Check that pkg.json version and plugin pkg.json version 
"satisfy" each other.
@@ -711,7 +711,7 @@ describe('During add, if config.xml has a platform/plugin 
spec and pkg.json does
         cordova.platform('rm', [iosPlatform], {'save': true});
         return emptyPlatformList().then(function () {
             // Add ios with --save and --fetch.
-            return cordova.platform('add', [iosPlatform], {'save': true, 
'fetch': true});
+            return cordova.platform('add', [iosPlatform], {'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -734,7 +734,7 @@ describe('During add, if config.xml has a platform/plugin 
spec and pkg.json does
             });
         }).then(function () {
             // Add splashscreen with --save --fetch.
-            return cordova.plugin('add', 'cordova-plugin-splashscreen', 
{'save': true, 'fetch': true});
+            return cordova.plugin('add', 'cordova-plugin-splashscreen', 
{'save': true});
         }).then(function () {
             var cfg3 = new ConfigParser(configXmlPath);
             // Check config.xml for plugins and spec.
@@ -811,7 +811,7 @@ describe('During add, if add specifies a platform spec, use 
that one regardless
         expect(engines).toEqual([ { name: 'ios', spec: '~4.2.1' } ]);
         return emptyPlatformList().then(function () {
             // Add ios with --save and --fetch.
-            return cordova.platform('add', ['ios@4.5.4'], {'save': true, 
'fetch': true});
+            return cordova.platform('add', ['ios@4.5.4'], {'save': true});
         }).then(function () {
             // Delete any previous caches of require(package.json).
             pkgJson = cordova_util.requireNoCache(pkgJsonPath);
@@ -833,7 +833,7 @@ describe('During add, if add specifies a platform spec, use 
that one regardless
             expect(semver.satisfies(iosVersion.version, 
pkgJson.dependencies['cordova-ios'])).toEqual(true);
         }).then(function () {
             // Add splashscreen with --save --fetch.
-            return cordova.plugin('add', 'cordova-plugin-splashscreen@4.0.0', 
{'save': true, 'fetch': true});
+            return cordova.plugin('add', 'cordova-plugin-splashscreen@4.0.0', 
{'save': true});
         }).then(function () {
             var cfg3 = new ConfigParser(configXmlPath);
             // Check config.xml for plugins and spec.
@@ -888,7 +888,7 @@ describe('local path is added to config.xml without 
pkg.json', function () {
         var platformPath = path.join(testRunRoot, 'spec', 
'cordova/fixtures/platforms/cordova-browser');
 
         // Run cordova platform add local path --save --fetch.
-        return cordova.platform('add', platformPath, {'save': true, 'fetch': 
true})
+        return cordova.platform('add', platformPath, {'save': true})
             .then(function () {
                 var cfg2 = new ConfigParser(configXmlPath);
                 engines = cfg2.getEngines();
@@ -914,7 +914,7 @@ describe('local path is added to config.xml without 
pkg.json', function () {
         var configPlugins = cfg.getPluginIdList();
         var configPlugin = cfg.getPlugin(configPlugins);
         // Run platform add with local path.
-        return cordova.plugin('add', pluginPath, {'save': true, 'fetch': true})
+        return cordova.plugin('add', pluginPath, {'save': true})
             .then(function () {
                 var cfg2 = new ConfigParser(configXmlPath);
                 // Check config.xml for plugins and spec.
diff --git a/integration-tests/platform.spec.js 
b/integration-tests/platform.spec.js
index ac35e78c2..216e666a9 100644
--- a/integration-tests/platform.spec.js
+++ b/integration-tests/platform.spec.js
@@ -127,9 +127,9 @@ describe('platform end-to-end', function () {
     });
 
     xit('Test 002 : should install plugins correctly while adding platform', 
function () {
-        return cordova.plugin('add', path.join(pluginsDir, 'test'), {'fetch': 
true})
+        return cordova.plugin('add', path.join(pluginsDir, 'test'))
             .then(function () {
-                return cordova.platform('add', [helpers.testPlatform], 
{'fetch': true});
+                return cordova.platform('add', [helpers.testPlatform]);
             })
             .then(function () {
                 // Check the platform add was successful.
@@ -176,20 +176,20 @@ describe('platform add plugin rm end-to-end', function () 
{
         return cordova.create('hello')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'browser@latest', {'fetch': 
true});
+                return cordova.platform('add', 'browser@latest');
             })
             .then(function () {
-                return cordova.plugin('add', 'cordova-plugin-media', {'fetch': 
true});
+                return cordova.plugin('add', 'cordova-plugin-media');
             })
             .then(function () {
                 expect(path.join(pluginsDir, 
'cordova-plugin-media')).toExist();
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             })
             .then(function () {
                 expect(path.join(pluginsDir, 
'cordova-plugin-media')).toExist();
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
-                return cordova.plugin('rm', 'cordova-plugin-media', {'fetch': 
true});
+                return cordova.plugin('rm', 'cordova-plugin-media');
             })
             .then(function () {
                 expect(path.join(pluginsDir, 
'cordova-plugin-media')).not.toExist();
@@ -219,24 +219,24 @@ describe('platform add and remove --fetch', function () {
         return cordova.create('helloFetch')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'browser', {'fetch': true, 
'save': true});
+                return cordova.platform('add', 'browser', {'save': true});
             })
             .then(function () {
                 expect(path.join(nodeModulesDir, 'cordova-browser')).toExist();
                 expect(path.join(platformsDir, 'browser')).toExist();
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             })
             .then(function () {
                 expect(path.join(nodeModulesDir, 'cordova-browser')).toExist();
                 expect(path.join(platformsDir, 'android')).toExist();
                 // Tests finish before this command finishes resolving
-                // return cordova.platform('rm', 'ios', {'fetch':true});
+                // return cordova.platform('rm', 'ios');
             })
             .then(function () {
                 // expect(path.join(nodeModulesDir, 
'cordova-ios')).not.toExist();
                 // expect(path.join(platformsDir, 'ios')).not.toExist();
                 // Tests finish before this command finishes resolving
-                // return cordova.platform('rm', 'android', {'fetch':true});
+                // return cordova.platform('rm', 'android');
             })
             .then(function () {
                 // expect(path.join(nodeModulesDir, 
'cordova-android')).not.toExist();
@@ -265,17 +265,17 @@ describe('plugin add and rm end-to-end --fetch', function 
() {
         return cordova.create('hello3')
             .then(function () {
                 process.chdir(project);
-                return cordova.platform('add', 'browser', {'fetch': true});
+                return cordova.platform('add', 'browser');
             })
             .then(function () {
-                return cordova.plugin('add', 'cordova-plugin-media', {'fetch': 
true, 'save': true});
+                return cordova.plugin('add', 'cordova-plugin-media', {'save': 
true});
             })
             .then(function () {
                 expect(path.join(pluginsDir, 
'cordova-plugin-media')).toExist();
                 expect(path.join(pluginsDir, 'cordova-plugin-file')).toExist();
                 expect(path.join(project, 'node_modules', 
'cordova-plugin-media')).toExist();
                 expect(path.join(project, 'node_modules', 
'cordova-plugin-file')).toExist();
-                return cordova.platform('add', 'android', {'fetch': true});
+                return cordova.platform('add', 'android');
             })
             .then(function () {
                 expect(path.join(pluginsDir, 
'cordova-plugin-media')).toExist();
@@ -315,10 +315,10 @@ describe('non-core platform add and rm end-to-end 
--fetch', function () {
             .then(function () {
                 process.chdir(project);
                 // add cordova-android instead of android
-                return cordova.platform('add', 'cordova-android', {'fetch': 
true});
+                return cordova.platform('add', 'cordova-android');
             }).then(function () {
                 // 3rd party platform from npm
-                return cordova.platform('add', 'cordova-platform-test', 
{'fetch': true});
+                return cordova.platform('add', 'cordova-platform-test');
             }).then(function () {
                 expect(path.join(project, 'platforms', 'android')).toExist();
                 expect(path.join(project, 'platforms', 
'cordova-platform-test')).toExist();
diff --git a/integration-tests/plugin.spec.js b/integration-tests/plugin.spec.js
index 833261732..ef783cab6 100644
--- a/integration-tests/plugin.spec.js
+++ b/integration-tests/plugin.spec.js
@@ -132,7 +132,7 @@ describe('plugin end-to-end', function () {
     });
 
     it('Test 001 : should successfully add and remove a plugin with no 
options', function () {
-        return addPlugin(path.join(pluginsDir, 'fake1'), pluginId, {'fetch': 
true})
+        return addPlugin(path.join(pluginsDir, 'fake1'), pluginId)
             .then(function () {
                 expect(install.runInstall).toHaveBeenCalled();
                 expect(platforms.getPlatformApi.calls.count()).toEqual(1);
@@ -155,7 +155,7 @@ describe('plugin end-to-end', function () {
         shell.cd(subdir);
 
         // Add plugin using relative path
-        return addPlugin(path.relative(subdir, plugindir), pluginId, {'fetch': 
true})
+        return addPlugin(path.relative(subdir, plugindir), pluginId)
             .then(function () {
                 return removePlugin(pluginId);
             });
@@ -164,7 +164,7 @@ describe('plugin end-to-end', function () {
     it('Test 005 : should respect preference default values', function () {
         var plugin_util = require('../src/cordova/plugin/util');
         spyOn(plugin_util, 'mergeVariables').and.returnValue({ REQUIRED: 'NO', 
REQUIRED_ANDROID: 'NO' });
-        return addPlugin(path.join(pluginsDir, org_test_defaultvariables), 
org_test_defaultvariables, { cli_variables: { REQUIRED: 'NO', REQUIRED_ANDROID: 
'NO' }, 'fetch': true })
+        return addPlugin(path.join(pluginsDir, org_test_defaultvariables), 
org_test_defaultvariables, { cli_variables: { REQUIRED: 'NO', REQUIRED_ANDROID: 
'NO' } })
             .then(function () {
                 var platformJsonPath = path.join(project, 'plugins', 
helpers.testPlatform + '.json');
                 var installed_plugins = 
require(platformJsonPath).installed_plugins;
@@ -179,7 +179,7 @@ describe('plugin end-to-end', function () {
     }, 30000);
 
     it('Test 006 : should successfully add a plugin when specifying CLI 
variables', function () {
-        return addPlugin(path.join(pluginsDir, org_test_defaultvariables), 
org_test_defaultvariables, {cli_variables: { REQUIRED: 'yes', REQUIRED_ANDROID: 
'yes' }, 'fetch': true});
+        return addPlugin(path.join(pluginsDir, org_test_defaultvariables), 
org_test_defaultvariables, {cli_variables: { REQUIRED: 'yes', REQUIRED_ANDROID: 
'yes' }});
     }, 30000);
 
     it('Test 007 : should not check npm info when using the searchpath flag', 
function () {
@@ -208,7 +208,7 @@ describe('plugin end-to-end', function () {
 
     it('Test 009 : should not check npm info when fetching from a Git 
repository', function () {
         spyOn(plugin_util, 'info');
-        return addPlugin(testGitPluginRepository, testGitPluginId, {'fetch': 
true})
+        return addPlugin(testGitPluginRepository, testGitPluginId)
             .then(function () {
                 expect(plugin_util.info).not.toHaveBeenCalled();
             });
@@ -218,7 +218,7 @@ describe('plugin end-to-end', function () {
         mockPluginFetch(npmInfoTestPlugin, path.join(pluginsDir, 
npmInfoTestPlugin));
 
         spyOn(plugin_util, 'info').and.callThrough();
-        return addPlugin(npmInfoTestPlugin, npmInfoTestPlugin, {'fetch': true})
+        return addPlugin(npmInfoTestPlugin, npmInfoTestPlugin)
             .then(function () {
                 expect(plugin_util.info).toHaveBeenCalled();
 
diff --git a/integration-tests/plugman_fetch.spec.js 
b/integration-tests/plugman_fetch.spec.js
index e5ea1160e..4895bee07 100644
--- a/integration-tests/plugman_fetch.spec.js
+++ b/integration-tests/plugman_fetch.spec.js
@@ -83,7 +83,7 @@ describe('fetch', function () {
         });
 
         it('Test 001 : should copy locally-available plugin to plugins 
directory', function () {
-            return fetch(test_plugin, temp, { fetch: true }).then(function () {
+            return fetch(test_plugin, temp).then(function () {
                 expect(cp).toHaveBeenCalledWith('-R', path.join(test_plugin, 
'*'), path.join(temp, test_plugin_id));
             });
         });
@@ -93,13 +93,13 @@ describe('fetch', function () {
             });
         });
         it('Test 003 : should create a symlink if used with `link` param', 
function () {
-            return fetch(test_plugin, temp, { fetch: true, link: true 
}).then(function () {
+            return fetch(test_plugin, temp, { link: true }).then(function () {
                 expect(sym).toHaveBeenCalledWith(test_plugin, path.join(temp, 
test_plugin_id), 'dir');
             });
         });
 
         it('Test 004 : should fail when the expected ID doesn\'t match', 
function () {
-            return fetch(test_plugin, temp, { expected_id: 'wrongID', fetch: 
true })
+            return fetch(test_plugin, temp, { expected_id: 'wrongID' })
                 .then(function () {
                     expect('this call').toBe('fail');
                 }, function (err) {
@@ -108,12 +108,12 @@ describe('fetch', function () {
         });
 
         it('Test 005 : should succeed when the expected ID is correct', 
function () {
-            return fetch(test_plugin, temp, { expected_id: test_plugin_id, 
fetch: true }).then(function () {
+            return fetch(test_plugin, temp, { expected_id: test_plugin_id 
}).then(function () {
                 expect().nothing();
             });
         });
         it('Test 006 : should fail when the expected ID with version specified 
doesn\'t match', function () {
-            return fetch(test_plugin, temp, { expected_id: test_plugin_id + 
'@wrongVersion', fetch: true })
+            return fetch(test_plugin, temp, { expected_id: test_plugin_id + 
'@wrongVersion' })
                 .then(function () {
                     expect('this call').toBe('fail');
                 }, function (err) {
@@ -122,19 +122,19 @@ describe('fetch', function () {
         });
         it('Test 007 : should succeed when the plugin version specified is 
correct', function () {
             var exp_id = test_plugin_id + '@' + test_plugin_version;
-            return fetch(test_plugin, temp, { expected_id: exp_id, fetch: true 
}).then(function () {
+            return fetch(test_plugin, temp, { expected_id: exp_id 
}).then(function () {
                 expect().nothing();
             });
         });
         it('Test 027 : should copy locally-available plugin to plugins 
directory', function () {
-            return fetch(test_pkgjson_plugin, temp, {fetch: 
true}).then(function () {
+            return fetch(test_pkgjson_plugin, temp).then(function () {
                 expect(cp).toHaveBeenCalledWith('-R', 
path.join(test_pkgjson_plugin, '*'), path.join(temp, 'pkgjson-test-plugin'));
                 expect(fetchCalls).toBe(1);
             });
         });
         it('Test 028 : should fail when locally-available plugin is missing 
pacakge.json', function () {
             test_plugin = path.join(plugins_dir, 'org.test.androidonly');
-            return fetch(test_plugin, temp, {fetch: true})
+            return fetch(test_plugin, temp)
                 .then(function () {
                     fail();
                 }, function (err) {
@@ -155,7 +155,7 @@ describe('fetch', function () {
         if (/^win/.test(process.platform)) {
             it('Test 020 : should copy all but the /demo/ folder', function () 
{
                 var cp = spyOn(shell, 'cp');
-                return fetch(srcDir, appDir, {fetch: true}).then(function () {
+                return fetch(srcDir, appDir).then(function () {
                     expect(cp).toHaveBeenCalledWith('-R', path.join(srcDir, 
'asset.txt'), path.join(appDir, 'test-recursive'));
                     expect(cp).not.toHaveBeenCalledWith('-R', srcDir, 
path.join(appDir, 'test-recursive'));
                 });
@@ -165,7 +165,7 @@ describe('fetch', function () {
 
                 var cp = spyOn(shell, 'cp').and.callFake(function () {});
 
-                return fetch(srcDir, appDir, {fetch: true}).then(function () {
+                return fetch(srcDir, appDir).then(function () {
                     expect(cp).not.toHaveBeenCalled();
                 });
             });
diff --git a/integration-tests/plugman_uninstall.spec.js 
b/integration-tests/plugman_uninstall.spec.js
index 5faa8a792..6f4465160 100644
--- a/integration-tests/plugman_uninstall.spec.js
+++ b/integration-tests/plugman_uninstall.spec.js
@@ -17,7 +17,6 @@
     under the License.
 */
 
-var uninstall = require('../src/plugman/uninstall');
 var install = require('../src/plugman/install');
 var actions = require('cordova-common').ActionStack;
 var PluginInfo = require('cordova-common').PluginInfo;
@@ -30,6 +29,7 @@ var fs = require('fs');
 var path = require('path');
 var shell = require('shelljs');
 var Q = require('q');
+var rewire = require('rewire');
 var spec = path.join(__dirname, '..', 'spec', 'plugman');
 var srcProject = path.join(spec, 'projects', 'android');
 var project = path.join(spec, 'projects', 'android_uninstall.test');
@@ -66,6 +66,13 @@ var TEST_XML = '<?xml version="1.0" encoding="UTF-8"?>\n' +
     '    <access origin="*" />\n' +
     '</widget>\n';
 
+var uninstall;
+
+beforeEach(() => {
+    uninstall = rewire('../src/plugman/uninstall');
+    uninstall.__set__('npmUninstall', jasmine.createSpy());
+});
+
 describe('plugman uninstall start', function () {
     beforeEach(function () {
         var origParseElementtreeSync = 
xmlHelpers.parseElementtreeSync.bind(xmlHelpers);
@@ -159,11 +166,8 @@ describe('uninstallPlatform', function () {
                 });
         });
 
-        describe('with dependencies', function () {
-            var emit;
-            beforeEach(function () {
-                emit = spyOn(events, 'emit');
-            });
+        it('Test 014 : should uninstall dependent plugins', function () {
+            var emit = spyOn(events, 'emit');
             return uninstall.uninstallPlatform('android', project, 'A')
                 .then(function (result) {
                     expect(emit).toHaveBeenCalledWith('log', 'Uninstalling 2 
dependent plugins.');
diff --git a/spec/cordova/platform/addHelper.spec.js 
b/spec/cordova/platform/addHelper.spec.js
index 2fc88cc0f..44330f7b3 100644
--- a/spec/cordova/platform/addHelper.spec.js
+++ b/spec/cordova/platform/addHelper.spec.js
@@ -138,8 +138,9 @@ describe('cordova/platform/addHelper', function () {
 
         describe('platform spec inference', function () {
             it('should retrieve platform details from 
directories-specified-as-platforms using getPlatformDetailsFromDir', function 
() {
-                cordova_util.isDirectory.and.returnValue(true);
                 var directory_to_platform = '/path/to/cordova-atari';
+                cordova_util.isDirectory.and.returnValue(true);
+                
fetch_mock.and.returnValue(Promise.resolve(directory_to_platform));
                 return platform_addHelper('add', hooks_mock, projectRoot, 
[directory_to_platform], {restoring: true}).then(function () {
                     
expect(platform_module.getPlatformDetailsFromDir).toHaveBeenCalledWith(directory_to_platform,
 null);
                     
expect(platform_addHelper.downloadPlatform).not.toHaveBeenCalled();
@@ -182,7 +183,7 @@ describe('cordova/platform/addHelper', function () {
                 cordova_util.isDirectory.and.returnValue(projectRoot);
                 cordova_util.fixRelativePath.and.returnValue(projectRoot);
                 spyOn(path, 'resolve').and.callThrough();
-                return platform_addHelper('add', hooks_mock, projectRoot, 
['ios'], {save: true, fetch: true, restoring: true}).then(function () {
+                return platform_addHelper('add', hooks_mock, projectRoot, 
['ios'], {save: true, restoring: true}).then(function () {
                     expect(fetch_mock).toHaveBeenCalled();
                 });
             });
@@ -191,7 +192,7 @@ describe('cordova/platform/addHelper', function () {
         describe('platform api invocation', function () {
 
             it('should invoke the createPlatform platform API method when 
adding a platform, providing destination location, parsed config file and 
platform detail options as arguments', function () {
-                return platform_addHelper('add', hooks_mock, projectRoot, 
['ios'], {save: true, fetch: true, restoring: true}).then(function (result) {
+                return platform_addHelper('add', hooks_mock, projectRoot, 
['ios'], {save: true, restoring: true}).then(function (result) {
                     
expect(platform_api_mock.createPlatform).toHaveBeenCalled();
                 });
             });
@@ -210,14 +211,14 @@ describe('cordova/platform/addHelper', function () {
             describe('when the restoring option is not provided', function () {
                 // test is commented out b/c preparePlatforms can't be spied 
on as it is dynamically required due to circular references.
                 xit('should invoke preparePlatforms twice (?!?), once before 
installPluginsForNewPlatforms and once after... ?!', function () {
-                    return platform_addHelper('add', hooks_mock, projectRoot, 
['atari'], {save: true, fetch: true}).then(function (result) {
+                    return platform_addHelper('add', hooks_mock, projectRoot, 
['atari'], {save: true}).then(function (result) {
                         
expect(prepare.preparePlatforms).toHaveBeenCalledWith([ 'atari' ], 
'/some/path', Object({ searchpath: undefined }));
                     });
                 });
             });
 
             it('should invoke the installPluginsForNewPlatforms method in the 
platform-add case', function () {
-                return platform_addHelper('add', hooks_mock, projectRoot, 
['atari'], {save: true, fetch: true, restoring: true}).then(function (result) {
+                return platform_addHelper('add', hooks_mock, projectRoot, 
['atari'], {save: true, restoring: true}).then(function (result) {
                     
expect(platform_addHelper.installPluginsForNewPlatform).toHaveBeenCalled();
                 });
             });
@@ -286,7 +287,7 @@ describe('cordova/platform/addHelper', function () {
         describe('errors', function () {
             it('should reject the promise should fetch fail', function () {
                 fetch_mock.and.returnValue(Q.reject('fetch has failed, 
rejecting promise'));
-                return platform_addHelper.downloadPlatform(projectRoot, 
'android', '67', {fetch: true}).then(function () {
+                return platform_addHelper.downloadPlatform(projectRoot, 
'android', '67').then(function () {
                     fail('success handler unexpectedly invoked');
                 }, function (e) {
                     expect(e.message).toContain('fetch has failed, rejecting 
promise');
@@ -296,8 +297,8 @@ describe('cordova/platform/addHelper', function () {
         describe('happy path', function () {
             it('should invoke cordova-fetch if fetch was provided as an 
option', function () {
                 fetch_mock.and.returnValue(true);
-                return platform_addHelper.downloadPlatform(projectRoot, 
'android', '6.0.0', {fetch: true}).then(function () {
-                    
expect(fetch_mock).toHaveBeenCalledWith('cordova-android@6.0.0', projectRoot, 
Object({ fetch: true }));
+                return platform_addHelper.downloadPlatform(projectRoot, 
'android', '6.0.0').then(function () {
+                    
expect(fetch_mock).toHaveBeenCalledWith('cordova-android@6.0.0', projectRoot, 
undefined);
                 });
             });
             it('should pass along a libDir argument to 
getPlatformDetailsFromDir on a successful platform download', function () {
@@ -324,7 +325,7 @@ describe('cordova/platform/addHelper', function () {
         it('should invoke plugman.install, giving correct platform, plugin and 
other arguments', function () {
             spyOn(cordova_util, 
'findPlugins').and.returnValue(['cordova-plugin-whitelist']);
             fetch_metadata.get_fetch_metadata.and.returnValue({ });
-            return platform_addHelper.installPluginsForNewPlatform('browser', 
projectRoot, {save: true, fetch: true}).then(function () {
+            return platform_addHelper.installPluginsForNewPlatform('browser', 
projectRoot, {save: true}).then(function () {
                 expect(plugman.install).toHaveBeenCalled();
                 expect(events.emit).toHaveBeenCalledWith('verbose', 
'Installing plugin "cordova-plugin-whitelist" following successful platform add 
of browser');
             });
@@ -333,7 +334,7 @@ describe('cordova/platform/addHelper', function () {
         it('should include any plugin variables as options when invoking 
plugman install', function () {
             spyOn(cordova_util, 
'findPlugins').and.returnValue(['cordova-plugin-camera']);
             fetch_metadata.get_fetch_metadata.and.returnValue({ source: {}, 
variables: {} });
-            return platform_addHelper.installPluginsForNewPlatform('browser', 
projectRoot, {save: true, fetch: true}).then(function () {
+            return platform_addHelper.installPluginsForNewPlatform('browser', 
projectRoot, {save: true}).then(function () {
                 expect(plugman.install).toHaveBeenCalled();
                 expect(events.emit).toHaveBeenCalledWith('verbose', 'Found 
variables for "cordova-plugin-camera". Processing as cli_variables.');
             });
diff --git a/spec/cordova/platform/check.spec.js 
b/spec/cordova/platform/check.spec.js
index 51e844f62..b60ce6d1b 100644
--- a/spec/cordova/platform/check.spec.js
+++ b/spec/cordova/platform/check.spec.js
@@ -21,6 +21,7 @@ var events = require('cordova-common').events;
 var superspawn = require('cordova-common').superspawn;
 var rewire = require('rewire');
 var platform_check = rewire('../../../src/cordova/platform/check');
+var platform = require('../../../src/cordova/platform');
 var cordova_util = require('../../../src/cordova/util');
 
 describe('cordova/platform/check', function () {
@@ -32,9 +33,11 @@ describe('cordova/platform/check', function () {
         spyOn(superspawn, 'spawn').and.callThrough();
         spyOn(shell, 'rm');
         spyOn(cordova_util, 'listPlatforms');
+        spyOn(platform, 'add').and.returnValue(Q());
     });
 
     it('If no results, platforms cannot be updated', function () {
+        platform.add.and.returnValue(Q.reject());
         cordova_util.listPlatforms.and.callThrough();
         return platform_check(hooks_mock, projectRoot).then(function () {
             expect(events.emit).toHaveBeenCalledWith('results', 
jasmine.stringMatching(/No platforms can be updated/));
@@ -44,6 +47,7 @@ describe('cordova/platform/check', function () {
     });
 
     it('Should warn if install failed', function () {
+        platform.add.and.returnValue(Q.reject());
         cordova_util.listPlatforms.and.returnValue(['ios']);
         return platform_check(hooks_mock, projectRoot).then(function () {
             expect(events.emit).toHaveBeenCalledWith('results', 
jasmine.stringMatching(/current did not install/));
@@ -52,7 +56,6 @@ describe('cordova/platform/check', function () {
 
     it('Should warn if version-empty', function () {
         cordova_util.listPlatforms.and.returnValue(['ios']);
-        spyOn(require('../../../src/cordova/platform/index'), 
'add').and.returnValue(Q());
         superspawn.spawn.and.returnValue(Q());
         return platform_check(hooks_mock, projectRoot).then(function () {
             expect(events.emit).toHaveBeenCalledWith('results', 
jasmine.stringMatching(/current version script failed to return a version/));
@@ -61,7 +64,6 @@ describe('cordova/platform/check', function () {
 
     it('Should warn if version-failed', function () {
         cordova_util.listPlatforms.and.returnValue(['ios']);
-        spyOn(require('../../../src/cordova/platform/index'), 
'add').and.returnValue(Q());
         spyOn(superspawn, 'maybeSpawn').and.returnValue(Q('version-failed'));
         spyOn(Q.defer(), 'resolve').and.returnValue('version-failed');
         return platform_check(hooks_mock, projectRoot).then(function () {
diff --git a/spec/cordova/platform/remove.spec.js 
b/spec/cordova/platform/remove.spec.js
index d55508576..4f0ca8146 100644
--- a/spec/cordova/platform/remove.spec.js
+++ b/spec/cordova/platform/remove.spec.js
@@ -20,7 +20,6 @@ var fs = require('fs');
 var Q = require('q');
 var events = require('cordova-common').events;
 var rewire = require('rewire');
-var platform_remove = rewire('../../../src/cordova/platform/remove');
 var cordova_util = require('../../../src/cordova/util');
 var promiseutil = require('../../../src/util/promise-util');
 var fail;
@@ -28,31 +27,33 @@ var fail;
 describe('cordova/platform/remove', function () {
     var projectRoot = '/some/path';
     var cfg_parser_mock = function () {};
-    var cfg_parser_revert_mock;
     var hooks_mock;
     var package_json_mock;
     package_json_mock = jasmine.createSpyObj('package json mock', ['cordova', 
'dependencies']);
     package_json_mock.dependencies = {};
     package_json_mock.cordova = {};
 
-    var hooksRunnerRevert;
+    var platform_remove;
 
     beforeEach(function () {
         hooks_mock = jasmine.createSpyObj('hooksRunner mock', ['fire']);
         hooks_mock.fire.and.returnValue(Q());
-        hooksRunnerRevert = platform_remove.__set__('HooksRunner', function () 
{});
         cfg_parser_mock.prototype = jasmine.createSpyObj('config parser mock', 
['write', 'removeEngine']);
-        cfg_parser_revert_mock = platform_remove.__set__('ConfigParser', 
cfg_parser_mock);
+
+        platform_remove = rewire('../../../src/cordova/platform/remove');
+        platform_remove.__set__({
+            HooksRunner: _ => _,
+            npmUninstall: _ => Promise.resolve(''),
+            ConfigParser: cfg_parser_mock
+        });
+
         spyOn(fs, 'existsSync').and.returnValue(false);
         spyOn(fs, 'writeFileSync');
         spyOn(cordova_util, 'removePlatformPluginsJson');
         spyOn(events, 'emit');
         spyOn(cordova_util, 'requireNoCache').and.returnValue({});
     });
-    afterEach(function () {
-        cfg_parser_revert_mock();
-        hooksRunnerRevert();
-    });
+
     describe('error/warning conditions', function () {
         it('should require specifying at least one platform', function () {
             return platform_remove('remove', hooks_mock).then(function () {
@@ -105,10 +106,10 @@ describe('cordova/platform/remove', function () {
 
         it('fetch should be called', function () {
             spyOn(promiseutil, 'Q_chainmap').and.returnValue(true);
-            return platform_remove(hooks_mock, projectRoot, ['atari'], {fetch: 
true})
+            return platform_remove(hooks_mock, projectRoot, ['atari'], {})
                 .then(function () {
                     expect(promiseutil.Q_chainmap).toHaveBeenCalled();
-                    
expect(hooks_mock.fire).toHaveBeenCalledWith('after_platform_rm', Object({ 
fetch: true }));
+                    
expect(hooks_mock.fire).toHaveBeenCalledWith('after_platform_rm', {});
                 });
         });
 
diff --git a/src/cordova/platform/addHelper.js 
b/src/cordova/platform/addHelper.js
index 87ff75282..aaf457af2 100644
--- a/src/cordova/platform/addHelper.js
+++ b/src/cordova/platform/addHelper.js
@@ -127,14 +127,10 @@ function addHelper (cmd, hooksRunner, projectRoot, 
targets, opts) {
                     if (spec) {
                         var maybeDir = cordova_util.fixRelativePath(spec);
                         if (cordova_util.isDirectory(maybeDir)) {
-                            if (opts.fetch) {
-                                return fetch(path.resolve(maybeDir), 
projectRoot, opts)
-                                    .then(function (directory) {
-                                        return 
require('./index').getPlatformDetailsFromDir(directory, platform);
-                                    });
-                            } else {
-                                return 
require('./index').getPlatformDetailsFromDir(maybeDir, platform);
-                            }
+                            return fetch(path.resolve(maybeDir), projectRoot, 
opts)
+                                .then(function (directory) {
+                                    return 
require('./index').getPlatformDetailsFromDir(directory, platform);
+                                });
                         }
                     }
                     return module.exports.downloadPlatform(projectRoot, 
platform, spec, opts);
@@ -207,7 +203,6 @@ function addHelper (cmd, hooksRunner, projectRoot, targets, 
opts) {
                                 var prepOpts = {
                                     platforms: [platform],
                                     searchpath: opts.searchpath,
-                                    fetch: opts.fetch || false,
                                     save: opts.save || false
                                 };
                                 // delete 
require.cache[require.resolve('../cordova')]
@@ -291,19 +286,17 @@ function getVersionFromConfigFile (platform, cfg) {
 function downloadPlatform (projectRoot, platform, version, opts) {
     var target = version ? (platform + '@' + version) : platform;
     return Q().then(function () {
-        if (opts.fetch) {
-            // append cordova to platform
-            if (platform in platforms) {
-                target = 'cordova-' + target;
-            }
+        // append cordova to platform
+        if (platform in platforms) {
+            target = 'cordova-' + target;
+        }
 
-            // gitURLs don't supply a platform, it equals null
-            if (!platform) {
-                target = version;
-            }
-            events.emit('log', 'Using cordova-fetch for ' + target);
-            return fetch(target, projectRoot, opts);
+        // gitURLs don't supply a platform, it equals null
+        if (!platform) {
+            target = version;
         }
+        events.emit('log', 'Using cordova-fetch for ' + target);
+        return fetch(target, projectRoot, opts);
     }).fail(function (error) {
         var message = 'Failed to fetch platform ' + target +
             '\nProbably this is either a connection problem, or platform spec 
is incorrect.' +
@@ -355,7 +348,6 @@ function installPluginsForNewPlatform (platform, 
projectRoot, opts) {
                 usePlatformWww: true,
                 is_top_level: pluginMetadata.is_top_level,
                 force: opts.force,
-                fetch: opts.fetch || false,
                 save: opts.save || false
             };
 
diff --git a/src/cordova/platform/remove.js b/src/cordova/platform/remove.js
index 1fa5cb400..e094a39fc 100644
--- a/src/cordova/platform/remove.js
+++ b/src/cordova/platform/remove.js
@@ -83,16 +83,14 @@ function remove (hooksRunner, projectRoot, targets, opts) {
                 events.emit('verbose', 'Removing platform ' + target + ' from 
platforms.json file...');
             });
         }).then(function () {
-            // Remove from node_modules if it exists and --fetch was used.
-            if (opts.fetch) {
-                return promiseutil.Q_chainmap(targets, function (target) {
-                    if (target in platforms) {
-                        target = 'cordova-' + target;
-                    }
-                    // Edits package.json.
-                    return npmUninstall(target, projectRoot, opts);
-                });
-            }
+            // Remove from node_modules if it exists
+            return promiseutil.Q_chainmap(targets, function (target) {
+                if (target in platforms) {
+                    target = 'cordova-' + target;
+                }
+                // Edits package.json.
+                return npmUninstall(target, projectRoot, opts);
+            });
         }).then(function () {
             return hooksRunner.fire('after_platform_rm', opts);
         });
diff --git a/src/cordova/plugin/add.js b/src/cordova/plugin/add.js
index 8aea7f0a7..8850e3659 100644
--- a/src/cordova/plugin/add.js
+++ b/src/cordova/plugin/add.js
@@ -81,7 +81,6 @@ function add (projectRoot, hooksRunner, opts) {
                     var fetchOptions = {
                         searchpath: searchPath,
                         noregistry: opts.noregistry,
-                        fetch: opts.fetch || false,
                         save: opts.save,
                         nohooks: opts.nohooks,
                         link: opts.link,
@@ -111,7 +110,6 @@ function add (projectRoot, hooksRunner, opts) {
                         var options = {
                             cli_variables: opts.cli_variables || {},
                             browserify: opts.browserify || false,
-                            fetch: opts.fetch || false,
                             save: opts.save,
                             searchpath: searchPath,
                             noregistry: opts.noregistry,
diff --git a/src/cordova/prepare.js b/src/cordova/prepare.js
index 7353a03fd..ba154268d 100644
--- a/src/cordova/prepare.js
+++ b/src/cordova/prepare.js
@@ -41,11 +41,10 @@ function prepare (options) {
         var config_json = config.read(projectRoot);
         options = options || { verbose: false, platforms: [], options: {} };
         options.save = options.save || false;
-        options.fetch = options.fetch || false;
         var hooksRunner = new HooksRunner(projectRoot);
         return hooksRunner.fire('before_prepare', options)
             .then(function () {
-                return 
restore.installPlatformsFromConfigXML(options.platforms, { searchpath: 
options.searchpath, fetch: options.fetch, restoring: true });
+                return 
restore.installPlatformsFromConfigXML(options.platforms, { searchpath: 
options.searchpath, restoring: true });
             })
             .then(function () {
                 options = cordova_util.preProcessOptions(options);
diff --git a/src/cordova/restore-util.js b/src/cordova/restore-util.js
index 2c3f8c998..2a79dd706 100644
--- a/src/cordova/restore-util.js
+++ b/src/cordova/restore-util.js
@@ -408,7 +408,6 @@ function installPluginsFromConfigXML (args) {
         var options = {
             cli_variables: pluginEntry.variables,
             searchpath: args.searchpath,
-            fetch: args.fetch || false,
             save: args.save || false
         };
         var plugin = require('./plugin');
diff --git a/src/plugman/fetch.js b/src/plugman/fetch.js
index 4d83f69c1..221e21ccb 100644
--- a/src/plugman/fetch.js
+++ b/src/plugman/fetch.js
@@ -63,22 +63,10 @@ function fetchPlugin (plugin_src, plugins_dir, options) {
         if (result) {
             if (result[1]) { options.git_ref = result[1]; }
             if (result[2]) { options.subdir = result[2]; }
-            // if --fetch was used, throw error for subdirectories
 
+            // throw error for subdirectories
             if (options.subdir && options.subdir !== '.') {
-                events.emit('warn', 'support for subdirectories is deprecated 
and will be removed in Cordova@7');
-                if (options.fetch) {
-                    return Q.reject(new CordovaError('--fetch does not support 
subdirectories'));
-                }
-            }
-
-            // Recurse and exit with the new options and truncated URL.
-            var new_dir = plugin_src.substring(0, plugin_src.indexOf('#'));
-
-            // skip the return if user asked for --fetch
-            // cordova-fetch doesn't need to strip out git-ref
-            if (!options.fetch) {
-                return fetchPlugin(new_dir, plugins_dir, options);
+                return Q.reject(new CordovaError('Cordova does not support 
subdirectories'));
             }
         }
     }
@@ -87,31 +75,29 @@ function fetchPlugin (plugin_src, plugins_dir, options) {
         return Q.when().then(function () {
             // check if it is a local path
             if (fs.existsSync(plugin_dir)) {
-                if (options.fetch) {
-                    if (!fs.existsSync(path.join(plugin_dir, 'package.json'))) 
{
-                        return Q.reject(new CordovaError('Invalid Plugin! ' + 
plugin_dir + ' needs a valid package.json'));
-                    }
+                if (!fs.existsSync(path.join(plugin_dir, 'package.json'))) {
+                    return Q.reject(new CordovaError('Invalid Plugin! ' + 
plugin_dir + ' needs a valid package.json'));
+                }
 
-                    projectRoot = path.join(plugins_dir, '..');
-                    // Plugman projects need to go up two directories to reach 
project root.
-                    // Plugman projects have an options.projectRoot variable
-                    if (options.projectRoot) {
-                        projectRoot = options.projectRoot;
-                    }
-                    return fetch(path.resolve(plugin_dir), projectRoot, 
options)
-                        .then(function (directory) {
-                            return {
-                                pinfo: pluginInfoProvider.get(directory),
-                                fetchJsonSource: {
-                                    type: 'local',
-                                    path: directory
-                                }
-                            };
-                        }).fail(function (error) {
-                            // something went wrong with cordova-fetch
-                            return Q.reject(new CordovaError(error.message));
-                        });
+                projectRoot = path.join(plugins_dir, '..');
+                // Plugman projects need to go up two directories to reach 
project root.
+                // Plugman projects have an options.projectRoot variable
+                if (options.projectRoot) {
+                    projectRoot = options.projectRoot;
                 }
+                return fetch(path.resolve(plugin_dir), projectRoot, options)
+                    .then(function (directory) {
+                        return {
+                            pinfo: pluginInfoProvider.get(directory),
+                            fetchJsonSource: {
+                                type: 'local',
+                                path: directory
+                            }
+                        };
+                    }).fail(function (error) {
+                        // something went wrong with cordova-fetch
+                        return Q.reject(new CordovaError(error.message));
+                    });
             }
             // If there is no such local path or it's a git URL, it's a plugin 
id or id@versionspec.
             // First look for it in the local search path (if provided).
@@ -142,26 +128,24 @@ function fetchPlugin (plugin_src, plugins_dir, options) {
                 P = Q(plugin_dir);
                 skipCopyingPlugin = true;
             } else {
-                // use cordova-fetch if --fetch was passed in
-                if (options.fetch) {
-                    projectRoot = path.join(plugins_dir, '..');
-                    // Plugman projects need to go up two directories to reach 
project root.
-                    // Plugman projects have an options.projectRoot variable
-                    if (options.projectRoot) {
-                        projectRoot = options.projectRoot;
-                    }
-
-                    if (process.platform === 'win32' && parsedSpec.version) {
-                        var windowsShellSpecialCharacters = ['&', '\\', '<', 
'>', '^', '|'];
-                        specContainsSpecialCharacters = 
windowsShellSpecialCharacters.some(function (character) {
-                            return parsedSpec.version.indexOf(character);
-                        });
-                    }
+                // use cordova-fetch
+                projectRoot = path.join(plugins_dir, '..');
+                // Plugman projects need to go up two directories to reach 
project root.
+                // Plugman projects have an options.projectRoot variable
+                if (options.projectRoot) {
+                    projectRoot = options.projectRoot;
+                }
 
-                    var fetchPluginSrc = specContainsSpecialCharacters ?
-                        parsedSpec.package + '@"' + parsedSpec.version + '"' : 
plugin_src;
-                    P = fetch(fetchPluginSrc, projectRoot, options);
+                if (process.platform === 'win32' && parsedSpec.version) {
+                    var windowsShellSpecialCharacters = ['&', '\\', '<', '>', 
'^', '|'];
+                    specContainsSpecialCharacters = 
windowsShellSpecialCharacters.some(function (character) {
+                        return parsedSpec.version.indexOf(character);
+                    });
                 }
+
+                var fetchPluginSrc = specContainsSpecialCharacters ?
+                    parsedSpec.package + '@"' + parsedSpec.version + '"' : 
plugin_src;
+                P = fetch(fetchPluginSrc, projectRoot, options);
                 skipCopyingPlugin = false;
             }
             return P
diff --git a/src/plugman/plugman.js b/src/plugman/plugman.js
index 0501a2b82..60a866b97 100644
--- a/src/plugman/plugman.js
+++ b/src/plugman/plugman.js
@@ -79,7 +79,6 @@ plugman.commands = {
         var opts = {
             subdir: '.',
             cli_variables: cli_variables,
-            fetch: true,
             save: cli_opts.save || false,
             www_dir: cli_opts.www,
             searchpath: cli_opts.searchpath,
@@ -111,7 +110,6 @@ plugman.commands = {
             var opts = {
                 www_dir: cli_opts.www,
                 save: cli_opts.save || false,
-                fetch: cli_opts.fetch || false,
                 projectRoot: cli_opts.project
             };
             p = p.then(function () {
diff --git a/src/plugman/uninstall.js b/src/plugman/uninstall.js
index c15b1afa1..0a0099c0f 100644
--- a/src/plugman/uninstall.js
+++ b/src/plugman/uninstall.js
@@ -114,8 +114,7 @@ module.exports.uninstallPlugin = function (id, plugins_dir, 
options) {
     }
 
     /*
-     * Deletes plugin from plugins directory and
-     * node_modules directory if --fetch was supplied.
+     * Deletes plugin from plugins directory and node_modules directory.
      *
      * @param {String} id   the id of the plugin being removed
      *
@@ -131,13 +130,8 @@ module.exports.uninstallPlugin = function (id, 
plugins_dir, options) {
         shell.rm('-rf', plugin_dir);
         events.emit('verbose', 'Deleted "' + id + '"');
 
-        if (options.fetch) {
-            // remove plugin from node_modules directory
-            return npmUninstall(id, options.projectRoot, options);
-        }
-
-        return Q();
-
+        // remove plugin from node_modules directory
+        return npmUninstall(id, options.projectRoot, options);
     };
 
     // We've now lost the metadata for the plugins that have been uninstalled, 
so we can't use that info.


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> remove --nofetch option and all old fetching code
> -------------------------------------------------
>
>                 Key: CB-13055
>                 URL: https://issues.apache.org/jira/browse/CB-13055
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-lib
>            Reporter: Steve Gill
>            Assignee: Raphael
>            Priority: Major
>              Labels: backlog, tools-next
>             Fix For: cordova@8
>
>
> Cordova uses cordova-fetch for fetching modules by default now. In the next 
> major version, lets drop the older methods. This is great for reducing 
> maintenance in cordova. Original fetch proposal is at 
> https://github.com/cordova/cordova-discuss/pull/33
> remove --nofetch option
> remove lazy_load
> remove gitclone.js
> remove npm dependency
> remove remoteload.js
> update anywhere that these files are used
> Proposal: https://github.com/apache/cordova-discuss/pull/76



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to