]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/mv/mv_runner.rb
Get the MvRunner working, at least for Postfixadmin.
[mailshears.git] / lib / mv / mv_runner.rb
index c7dbc5e7497147c90f40dbfb696474e11f5f8619..d2a7c5ba01d4664882a14b9b539f76f1f578d709 100644 (file)
@@ -1,10 +1,34 @@
+require 'common/errors'
 require 'common/runner'
 
 class MvRunner
   include Runner
 
   def run(plugin, src, dst)
-    puts "Not implemented"
+    # Why think too hard? An user has an @, a domain doesn't.
+    if not src.include?('@') then
+      # We only support moving users right now, and the destination
+      # domain must already exist.
+      raise NotImplementedError.new('Only users can be moved.')
+    end
+
+    begin
+      src_description = plugin.describe_user(src)
+      plugin.mv_user(src, dst)
+      msg  = "Moved user #{src} (#{src_description}) "
+      msg += "to #{dst}."
+      report(plugin, msg)
+    rescue InvalidUserError => e
+      report(plugin, e.message)
+    rescue NonexistentUserError => e
+      report(plugin, e.message)
+    rescue NonexistentDomainError => e
+      report(plugin, e.message)
+    rescue StandardError => e
+      msg = "There was an error (#{e.to_s}) moving the user: #{e.message}"
+      report(plugin, msg)
+      Kernel.exit(ExitCodes::DATABASE_ERROR)
+    end
   end
 
 end