Factor out plugin running into the Plugin module (along with the includers() handling).
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 4 Jan 2014 19:41:08 +0000 (14:41 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 4 Jan 2014 19:41:08 +0000 (14:41 -0500)
bin/mailshears
lib/common/plugin.rb
lib/mv/mv_plugin.rb
lib/prune/prune_plugin.rb
lib/rm/rm_plugin.rb

index 215bd6ba1f7bf046a71f0df9bbfaa7b34f384101..f7d5afa5b10c75264e92f275f4bfeb24724bb74e 100755 (executable)
@@ -101,20 +101,7 @@ require 'stringio'
 output_buffer = StringIO.new()
 $stdout = output_buffer
 
 output_buffer = StringIO.new()
 $stdout = output_buffer
 
-plugin_module.includers.each do |plugin_module_includer|
-  plugin = plugin_module_includer.new(cfg)
-
-  if cfg.i_mean_business then
-    runner = plugin.runner().new()
-  else
-    runner = plugin.dummy_runner().new()
-  end
-
-  # The splat passes the correct (we hope) number of arguments to the
-  # appropriate runner. The Rm(Dummy)Runner have splats on their
-  # *target arguments as well, to turn ARGV back into an array.
-  runner.run(plugin, *ARGV)
-end
+plugin_module.run(cfg, *ARGV)
 
 # Restore stdout, and print the header plus whatever the plugins
 # produced if they produced anything. If they didn't, we avoid
 
 # Restore stdout, and print the header plus whatever the plugins
 # produced if they produced anything. If they didn't, we avoid
index ed4ea004041a8986a151783707ffec1ff939815f..81e1fbb6248e323f315c0108f7c9e11f5bb72b8c 100644 (file)
@@ -2,26 +2,49 @@
 # operations that all plugins are supposed to support.
 module Plugin
 
 # operations that all plugins are supposed to support.
 module Plugin
 
-  def Plugin.included(c)
-    # Callback, called whenever another class or module includes this
-    # one. The parameter given is the name of the class or module
-    # that included us.
-    @includers ||= []
-    @includers << c
-  end
+  module Run
+    # Module methods, meant to be extended. Includers can explicitly
+    # extend this to get a run() method defined in terms of their own
+    # runner() and dummy_runner() methods.
 
 
-  def Plugin.includers
-    return @includers
-  end
+    def included(c)
+      # Callback, called whenever another class or module includes this
+      # one. The parameter given is the name of the class or module
+      # that included us.
+      @includers ||= []
+      @includers << c
+    end
 
 
-  def runner()
-    # The Runner associated with this plugin.
-    raise NotImplementedError
-  end
+    def includers
+      return @includers
+    end
 
 
-  def dummy_runner()
-    # The RummyRunner associated with this plugin.
-    raise NotImplementedError
+    def runner()
+      # The Runner associated with this plugin.
+      raise NotImplementedError
+    end
+
+    def dummy_runner()
+      # The RummyRunner associated with this plugin.
+      raise NotImplementedError
+    end
+
+    def run(cfg, *args)
+      includers().each do |includer|
+        plugin = includer.new(cfg)
+
+        if cfg.i_mean_business then
+          runner = runner().new()
+        else
+          runner = dummy_runner().new()
+        end
+
+        # The splat passes the correct (we hope) number of arguments to the
+        # appropriate runner. The Rm(Dummy)Runner have splats on their
+        # *target arguments as well, to turn ARGV back into an array.
+        runner.run(plugin, *args)
+      end
+    end
   end
 
   def describe_domain(domain)
   end
 
   def describe_domain(domain)
index 958f6d40f98d0fd3d3cfdb76d24000c6fcd7b844..4b616032b5cfc312c74e790d685bf70ff167f15b 100644 (file)
@@ -3,23 +3,13 @@ module MvPlugin
   # Plugins for moving (renaming) users.
   #
 
   # Plugins for moving (renaming) users.
   #
 
-  def MvPlugin.included(c)
-    # Callback, called whenever another class or module includes this
-    # one. The parameter given is the name of the class or module
-    # that included us.
-    @includers ||= []
-    @includers << c
-  end
-
-  def MvPlugin.includers
-    return @includers
-  end
+  extend Plugin::Run
 
 
-  def runner()
+  def self.runner()
     return MvRunner
   end
 
     return MvRunner
   end
 
-  def dummy_runner()
+  def self.dummy_runner()
     return MvDummyRunner
   end
 
     return MvDummyRunner
   end
 
index 0fbe69d12f403f7ed12ce8954b425b72b107d6f1..44fd636f20888e56c255a765aa1a354d464c7f2c 100644 (file)
@@ -1,31 +1,19 @@
 require 'rm/rm_plugin'
 
 module PrunePlugin
 require 'rm/rm_plugin'
 
 module PrunePlugin
-  include RmPlugin
-
   #
   # Plugins for the removal of leftover non-PostfixAdmin users,
   # i.e. after an user has been removed from the PostfixAdmin
   # database.
   #
   #
   # Plugins for the removal of leftover non-PostfixAdmin users,
   # i.e. after an user has been removed from the PostfixAdmin
   # database.
   #
+  include RmPlugin
+  extend Plugin::Run
 
 
-  def PrunePlugin.included(c)
-    # Callback, called whenever another class or module includes this
-    # one. The parameter given is the name of the class or module
-    # that included us.
-    @includers ||= []
-    @includers << c
-  end
-
-  def PrunePlugin.includers
-    return @includers
-  end
-
-  def runner()
+  def self.runner()
     return PruneRunner
   end
 
     return PruneRunner
   end
 
-  def dummy_runner
+  def self.dummy_runner
     return PruneDummyRunner
   end
 
     return PruneDummyRunner
   end
 
index 95c595aa2afc94c881007c8984c7fb4b276aa521..fe938b128d200b1a10427cbff7cdde17c57bd4b8 100644 (file)
@@ -1,25 +1,17 @@
+require 'common/plugin.rb'
+
 module RmPlugin
   #
   # Plugins for the removal of users.
   #
 
 module RmPlugin
   #
   # Plugins for the removal of users.
   #
 
-  def RmPlugin.included(c)
-    # Callback, called whenever another class or module includes this
-    # one. The parameter given is the name of the class or module
-    # that included us.
-    @includers ||= []
-    @includers << c
-  end
-
-  def RmPlugin.includers
-    return @includers
-  end
+  extend Plugin::Run
 
 
-  def runner()
+  def self.runner()
     return RmRunner
   end
 
     return RmRunner
   end
 
-  def dummy_runner()
+  def self.dummy_runner()
     return RmDummyRunner
   end
 
     return RmDummyRunner
   end