]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - bin/mailshears
Add the GPL3 'LICENSE' file.
[mailshears.git] / bin / mailshears
index 5a156f9dce691be8f5e8d0b2e676bec840f2c7a2..5a8ee0a6752064292274d585e16dc38c4bb39d51 100755 (executable)
 # filesystem, but not the database.
 #
 
-# We need Pathname to get the real filesystem path
-# of this script (and not, for example, the path of
-# a symlink which points to it).
-require 'pathname'
-
-# This bit of magic adds the parent directory (the
-# project root) to the list of ruby load paths.
-# Thus, our require statements will work regardless of
-# how or from where the script was run.
-executable = Pathname.new(__FILE__).realpath.to_s
-$: << File.dirname(executable) + '/../'
-
 # Needed for rm_rf.
 require 'fileutils'
 
 # Load our config file.
-require 'bin/configuration'
+require 'configuration'
 
 # And the necessary classes.
-require 'src/errors.rb'
-require 'src/exit_codes.rb'
-require 'src/postfixadmin_db'
+require 'errors.rb'
+require 'exit_codes.rb'
+require 'postfixadmin_db'
 
 Configuration::PLUGINS.each do |plugin_file|
-  require "src/plugins/#{plugin_file}"
+  require "plugins/#{plugin_file}"
 end
 
 pgadb = PostfixadminDb.new(Configuration::DBHOST,
@@ -110,20 +98,21 @@ Plugin.includers.each do |plugin_class|
     end
 
     if Configuration::I_MEAN_BUSINESS
+      # We have to delete the accounts before the domain,
+      # otherwise they'd already be gone.
+      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} (#{account_description})"
+      end
+      
       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)})"
-      end
-
-      leftover_accounts.each do |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
+        puts "Removed: #{domain} (#{domain_description})"
       end
     end