]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - bin/mailshears
Get the domain/account descriptions before deleting them.
[mailshears.git] / bin / mailshears
index 6e84751161ae0566387a8a5e34b0f4876fdb9bfb..9d870d04e245c4a6fef34c07b85ff9453694cd94 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.
 
@@ -110,13 +111,18 @@ Configuration::PLUGINS.each do |plugin_name|
 
     if Configuration::I_MEAN_BUSINESS
       leftover_domains.each do |domain|
+        # Get the description before we delete the domain.
+        domain_description = plugin.describe_domain(domain)
         plugin.delete_domain(domain)
-        puts "Removed: #{domain} (#{plugin.describe_domain(domain)})"
+        puts "Removed: #{domain} (#{domain_description})"
       end
 
       leftover_accounts.each do |account|
+        # Get the description before we delete the domain.
+        # This can still fail if the account's domain is gone.
+        account_description = plugin.describe_account(account)
         plugin.delete_account(account)
-        puts "Removed: #{account} (#{plugin.describe_account(account)})"
+        puts "Removed: #{account} (#{account_description})"
       end
     end