]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/rm/rm_plugin.rb
Factor out plugin running into the Plugin module (along with the includers() handling).
[mailshears.git] / lib / rm / rm_plugin.rb
index 0c155a18f9441521d1ee3a6c9445927c19bd022a..fe938b128d200b1a10427cbff7cdde17c57bd4b8 100644 (file)
@@ -1,27 +1,36 @@
+require 'common/plugin.rb'
+
 module RmPlugin
   #
 module RmPlugin
   #
-  # Plugins for the removal of accounts.
+  # Plugins for the removal of users.
   #
 
   #
 
-  def delete_domain(domain)
-    # Delete the given domain.
-    raise NotImplementedError
+  extend Plugin::Run
+
+  def self.runner()
+    return RmRunner
   end
 
   end
 
-  def delete_account(account)
-    # Delete the given account.
-    raise NotImplementedError
+  def self.dummy_runner()
+    return RmDummyRunner
   end
 
   end
 
-  def get_leftover_domains(db_domains)
-    # Given a list of domains, determine which domains belonging to
-    # this plugin are not contained in the given list.
-    raise NotImplementedError
+  def delete_domain(domain)
+    # Delete the given domain. Some plugins don't have a concept of
+    # domains, so just delete all users with a username that looks
+    # like it's in the given domain.
+    usernames = list_domains_users([domain])
+
+    raise NonexistentDomainError.new(domain) if usernames.empty?
+
+    usernames.each do |u|
+      delete_user(u)
+    end
   end
 
   end
 
-  def get_leftover_accounts(db_accounts)
-    # Given a list of accounts, determine which accounts belonging to
-    # this plugin are not contained in the given list.
+  def delete_user(user)
+    # Delete the given user.
     raise NotImplementedError
   end
     raise NotImplementedError
   end
+
 end
 end