X-Git-Url: http://gitweb.michael.orlitzky.com/?p=mailshears.git;a=blobdiff_plain;f=lib%2Fmv%2Fmv_runner.rb;h=0e5e909e268944c25f2003e82eceb84bcc5b7bda;hp=a0fa8e7ae6089e9899a7910b0355b3b12c7a14df;hb=a731b98f97194b8882c42d3c2b27de75f60d6b05;hpb=e3826d8926e11763837a591986d453e9ef5d9dec diff --git a/lib/mv/mv_runner.rb b/lib/mv/mv_runner.rb index a0fa8e7..0e5e909 100644 --- a/lib/mv/mv_runner.rb +++ b/lib/mv/mv_runner.rb @@ -1,8 +1,56 @@ +require 'common/domain' +require 'common/errors' +require 'common/runner' + class MvRunner include Runner - def run(plugin, src, dst) - puts "Not implemented" + def run(cfg, plugin, src, dst) + + if src.is_a?(Domain) or dst.is_a?(Domain) then + msg = 'only users can be moved' + raise NotImplementedError.new(msg) + end + + begin + src_description = plugin.describe(src) + plugin.mv_user(src, dst) + dst_description = plugin.describe(dst) + + msg = "Moved user #{src} " + + # Only append the extra description if it's useful. + if not src_description.nil? and + not src_description.empty? and + not src_description == src.to_s() then + msg += "(#{src_description}) " + end + + msg += "to #{dst}" + + # Only append the extra description if it's useful. + if not dst_description.nil? and + not dst_description.empty? and + not dst_description == dst.to_s() then + msg += " (#{dst_description})" + end + + msg += "." + report(plugin, msg) + + rescue NonexistentUserError => e + # This means that the SOURCE user didn't exist, since a + # nonexistent destination user is perfectly expected. + report(plugin, "Source user #{src.to_s()} not found.") + rescue NonexistentDomainError => e + # This could mean that the source domain doesn't exist, but in + # that case, we just report that the source user doesn't + # exist. So a nonexistent domain refers to a nonexistent + # DESTINATION domain. + report(plugin, "Destination domain #{dst.domainpart()} not found.") + rescue UserAlreadyExistsError => e + report(plugin, "Destination user #{dst.to_s()} already exists.") + end end end