]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/prune/prune_runner.rb
Document everything with YARD and fix some bugs along the way.
[mailshears.git] / lib / prune / prune_runner.rb
index 0f1dfeb3832a70c7baf77b59d3b8d0bfbd493e07..a9e2282857fc3be027a14d0410ae75436c25f934 100644 (file)
@@ -1,8 +1,34 @@
+require 'common/runner'
+require 'prune/plugins/postfixadmin'
+require 'rm/rm_runner'
+
+# Perform the pruning of users/domains using {PrunePlugin}s.
+#
 class PruneRunner
   include Runner
 
-  def run(plugin)
-    puts "Not implemented"
+  # Run *plugin* to prune leftover users and directories.
+  #
+  # @param cfg [Configuration] configuration options passed to
+  # {PostfixadminPrune}.
+  #
+  # @param plugin [Class] plugin class that will perform the pruning.
+  #
+  def run(cfg, plugin)
+    # We don't want to check the PostfixAdmin database against itself.
+    return if plugin.class == PostfixadminPrune
+
+    pfa = PostfixadminPrune.new(cfg)
+
+    db_users = pfa.list_users()
+    db_domains = pfa.list_domains()
+
+    leftovers  = plugin.get_leftover_users(db_users)
+    leftovers += plugin.get_leftover_domains(db_domains)
+
+    # We're counting on our PrunePlugin also being an RmPlugin here.
+    rm_runner = RmRunner.new()
+    rm_runner.run(cfg, plugin, *leftovers)
   end
 
 end