]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/rm/rm_runner.rb
Overhaul everything to get consistent error reports.
[mailshears.git] / lib / rm / rm_runner.rb
index 71421547e7e88e02247070680dce940f890c30f2..2df8410c5ea9d6d3d65d2565ec9cc00552d7b1f0 100644 (file)
@@ -6,37 +6,32 @@ class RmRunner
 
   def run(plugin, *targets)
     targets.each do |target|
-      # Why think too hard? An user has an @, a domain doesn't.
-      if target.include?('@') then
-        begin
-          user_description = plugin.describe_user(target)
-          plugin.delete_user(target)
-          report(plugin, "Removed user: #{target} (#{user_description})")
+      remove_target(plugin, target)
+    end
+  end
+
+  private;
+
+  def remove_target(plugin, target)
+    # Wrap the "remove this thing" operation so that it can be reused
+    # in the prine plugin.
+    target_description = plugin.describe(target)
 
-        rescue NonexistentUserError => e
-          report(plugin, "User not found: #{e.to_s}")
-        rescue StandardError => e
-          report(plugin, "There was an error removing the user: #{e.to_s}")
-          Kernel.exit(ExitCodes::DATABASE_ERROR)
-        end
-      else
-        begin
-          domain_description = plugin.describe_domain(target)
-          plugin.delete_domain(target)
-          report(plugin, "Removed domain: #{target} (#{domain_description})")
+    begin
+      plugin.delete(target)
+      msg =  "Removed #{target.class.to_s().downcase()} #{target}"
 
-        rescue NonexistentUserError => e
-          # Can happen in the usernames.each... block.
-          report(plugin, "User not found: #{e.to_s}")
-        rescue NonexistentDomainError => e
-          report(plugin, "Domain not found: #{e.to_s}")
-        rescue StandardError => e
-          report(plugin, "There was an error removing the domain: #{e.to_s}")
-          Kernel.exit(ExitCodes::DATABASE_ERROR)
-        end
+      # Only append the extra description if it's useful.
+      if not target_description.nil? and
+         not target_description.empty? and
+         not target_description == target.to_s() then
+        msg += " (#{target_description})"
       end
-    end
+      msg += '.'
 
+      report(plugin, msg)
+    rescue NonexistentDomainError, NonexistentUserError => e
+      report(plugin, "#{target.class.to_s()} #{e.to_s} not found.")
+    end
   end
-
 end