I've only looked at this briefly but it is sooooo welcome! Thanks Mark!
On Wed, Feb 19, 2014 at 12:33 PM, <agri...@apache.org> wrote: > config-changes.js: Add reapply_global_munge(). > > Load and apply the full munge from platform json. > To be used by cordova prepare. > > > Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo > Commit: > http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/8ba299e5 > Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/8ba299e5 > Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/8ba299e5 > > Branch: refs/heads/master > Commit: 8ba299e50661681db786c2341ea88e1924234f0e > Parents: 5fbf558 > Author: Mark Koudritsky <kam...@chromium.org> > Authored: Thu Feb 13 16:56:52 2014 -0500 > Committer: Andrew Grieve <agri...@chromium.org> > Committed: Wed Feb 19 15:32:26 2014 -0500 > > ---------------------------------------------------------------------- > src/util/config-changes.js | 43 +++++++++++++++++++++++++++++++++++------ > 1 file changed, 37 insertions(+), 6 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/8ba299e5/src/util/config-changes.js > ---------------------------------------------------------------------- > diff --git a/src/util/config-changes.js b/src/util/config-changes.js > index cc96b57..8e1796b 100644 > --- a/src/util/config-changes.js > +++ b/src/util/config-changes.js > @@ -30,7 +30,7 @@ > * reference counts. > */ > > -/* jshint node:true, sub:true, indent:4 */ > +/* jshint node:true, sub:true, unused:true, indent:4 */ > > var fs = require('fs'), > path = require('path'), > @@ -41,7 +41,6 @@ var fs = require('fs'), > et = require('elementtree'), > underscore = require('underscore'), > xml_helpers = require('./../util/xml-helpers'), > - ios_parser = require('./../platforms/ios'), > platforms = require('./../platforms'), > events = require('./../events'), > plist_helpers = require('./../util/plist-helpers'); > @@ -66,20 +65,20 @@ Adapters to keep the current refactoring effort to > within this file > package.add_plugin_changes = function(platform, project_dir, plugins_dir, > plugin_id, plugin_vars, is_top_level, should_increment, cache) { > var munger = new PlatformMunger(platform, project_dir, plugins_dir); > munger.add_plugin_changes(plugin_id, plugin_vars, is_top_level, > should_increment, cache); > - munger.config_keeper.save_all(); > + munger.save_all(); > }; > > package.remove_plugin_changes = function(platform, project_dir, > plugins_dir, plugin_name, plugin_id, is_top_level, should_decrement) { > // TODO: should_decrement paramenter is never used, remove it here > and wherever called > var munger = new PlatformMunger(platform, project_dir, plugins_dir); > munger.remove_plugin_changes(plugin_name, plugin_id, is_top_level); > - munger.config_keeper.save_all(); > + munger.save_all(); > }; > > package.process = function(plugins_dir, project_dir, platform) { > var munger = new PlatformMunger(platform, project_dir, plugins_dir); > munger.process(); > - munger.config_keeper.save_all(); > + munger.save_all(); > }; > > > > /******************************************************************************/ > @@ -119,6 +118,12 @@ function PlatformMunger(platform, project_dir, > plugins_dir) { > this.config_keeper = new ConfigKeeper(); > } > > +// Write out all unsaved files. > +PlatformMunger.prototype.save_all = PlatformMunger_save_all; > +function PlatformMunger_save_all() { > + this.config_keeper.save_all(); > +} > + > // Deal with a single file munge. > // Theoretically, since files are independent several of those can run in > parallel. > PlatformMunger.prototype.apply_file_munge = > PlatformMunger_apply_file_munge; > @@ -231,7 +236,6 @@ function add_plugin_changes(plugin_id, plugin_vars, > is_top_level, should_increme > ); > continue; > } > - // TODO: This is mostly file IO and can run in parallel since > each file is independent. > self.apply_file_munge(file, munge[file]); > } > > @@ -246,6 +250,32 @@ function add_plugin_changes(plugin_id, plugin_vars, > is_top_level, should_increme > module.exports.save_platform_json(platform_config, self.plugins_dir, > self.platform); > } > > + > +// Load the global munge from platform json and apply all of it. > +// Used by cordova prepare to re-generate some config file from platform > +// defaults and the global munge. > +PlatformMunger.prototype.reapply_global_munge = reapply_global_munge ; > +function reapply_global_munge () { > + var self = this; > + > + var platform_config = > module.exports.get_platform_json(self.plugins_dir, self.platform); > + var global_munge = platform_config.config_munge; > + for (var file in global_munge) { > + // TODO: remove this warning some time after 3.4 is out. > + if (file == 'plugins-plist' && self.platform == 'ios') { > + events.emit( > + 'warn', > + 'WARNING: One of your plugins uses <plugins-plist> > element(s), ' + > + 'which are no longer supported. Support has been removed > as of Cordova 3.4.' > + ); > + continue; > + } > + // TODO: This is mostly file IO and can run in parallel since > each file is independent. > + self.apply_file_munge(file, global_munge[file]); > + } > +} > + > + > // generate_plugin_config_munge > PlatformMunger.prototype.generate_plugin_config_munge = > generate_plugin_config_munge; > function generate_plugin_config_munge(plugin_dir, vars) { > @@ -320,6 +350,7 @@ function generate_plugin_config_munge(plugin_dir, > vars) { > return munge; > } > > + > // Go over the prepare queue an apply the config munges for all plugins > // that have been (un)installed. > PlatformMunger.prototype.process = PlatformMunger_process; > >