Explicitly require 'common/errors' in RmRunner.
[mailshears.git] / lib / rm / rm_runner.rb
index 039ae61f7d489c9a0a7807608b959fd912f3c99c..71421547e7e88e02247070680dce940f890c30f2 100644 (file)
@@ -1,32 +1,42 @@
+require 'common/errors'
+require 'common/runner'
+
 class RmRunner
   include Runner
 
-  def run(plugin, targets)
+  def run(plugin, *targets)
     targets.each do |target|
-      # Why think too hard? An account has an @, a domain doesn't.
+      # Why think too hard? An user has an @, a domain doesn't.
       if target.include?('@') then
         begin
-          account_description = plugin.describe_account(target)
-          plugin.delete_account(target)
-          puts "Removed account: #{target} (#{account_description})"
+          user_description = plugin.describe_user(target)
+          plugin.delete_user(target)
+          report(plugin, "Removed user: #{target} (#{user_description})")
+
+        rescue NonexistentUserError => e
+          report(plugin, "User not found: #{e.to_s}")
         rescue StandardError => e
-          puts "There was an error removing the account: #{e.to_s}"
+          report(plugin, "There was an error removing the user: #{e.to_s}")
           Kernel.exit(ExitCodes::DATABASE_ERROR)
         end
       else
         begin
-          # TODO: Delete all accounts first.
           domain_description = plugin.describe_domain(target)
           plugin.delete_domain(target)
-          puts "Removed domain: #{target} (#{domain_description})"
+          report(plugin, "Removed domain: #{target} (#{domain_description})")
+
+        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
-          puts "There was an error removing the domain: #{e.to_s}"
+          report(plugin, "There was an error removing the domain: #{e.to_s}")
           Kernel.exit(ExitCodes::DATABASE_ERROR)
         end
       end
     end
 
-    # TODO: remove from postfixadmin as well.
   end
 
 end