]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - bin/mailshears
Handle the case where an account's domain has already been deleted (and thus the...
[mailshears.git] / bin / mailshears
index 6e84751161ae0566387a8a5e34b0f4876fdb9bfb..5a156f9dce691be8f5e8d0b2e676bec840f2c7a2 100755 (executable)
@@ -34,9 +34,12 @@ require 'bin/configuration'
 # And the necessary classes.
 require 'src/errors.rb'
 require 'src/exit_codes.rb'
-require 'src/dovecot_mailstore'
 require 'src/postfixadmin_db'
 
+Configuration::PLUGINS.each do |plugin_file|
+  require "src/plugins/#{plugin_file}"
+end
+
 pgadb = PostfixadminDb.new(Configuration::DBHOST,
                            Configuration::DBPORT,
                            Configuration::DBOPTS,
@@ -63,9 +66,7 @@ rescue DatabaseError => e
 end
 
 
-Configuration::PLUGINS.each do |plugin_name|
-  # Convert a string into a class.
-  plugin_class = Kernel.const_get(plugin_name)
+Plugin.includers.each do |plugin_class|
   plugin = plugin_class.new()
 
   begin
@@ -96,7 +97,7 @@ Configuration::PLUGINS.each do |plugin_name|
       header += current_time.to_s + "\n"
     end
 
-    header += 'Plugin: ' + plugin_name + "\n"
+    header += 'Plugin: ' + plugin_class.to_s + "\n"
     puts header
     puts '-' * header.size # Underline the header.
 
@@ -115,8 +116,14 @@ Configuration::PLUGINS.each do |plugin_name|
       end
 
       leftover_accounts.each do |account|
-        plugin.delete_account(account)
-        puts "Removed: #{account} (#{plugin.describe_account(account)})"
+        begin
+          plugin.delete_account(account)
+          puts "Removed: #{account} (#{plugin.describe_account(account)})"
+        rescue NonexistentAccountError => e
+          # This usually happens after an account's domain is deleted.
+          # When we try to delete the account, it's already gone.
+          puts "Gone: #{account} (#{plugin.describe_account(account)})"
+        end
       end
     end