]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/mv/mv_dummy_runner.rb
Document everything with YARD and fix some bugs along the way.
[mailshears.git] / lib / mv / mv_dummy_runner.rb
index ff612ffeb175e7bc4b663c0f18214055f5946890..9ed655a4719ad30785b9a917624bc3dadfd7c768 100644 (file)
@@ -1,14 +1,59 @@
 require 'common/runner'
 
+# Dummy implementation of a {MvRunner}. Its <tt>run()</tt> method will
+# tell you what would have been moved, but will not actually perform
+# the operation.
+#
 class MvDummyRunner
   include Runner
 
-  def run(plugin, src, dst)
-    if src.include?('@') then
-      puts "Would move user: #{src} to #{dst}"
-    else
-      puts "Would move domain: #{src} to #{dst}"
+  # Pretend to move *src* to *dst* with *plugin*. Some "what if"
+  # information will be output to stdout. This is useful to see if
+  # there would be (for example) a username collision at *dst* before
+  # attempting the move in earnest.
+  #
+  # @param cfg [Configuration] the configuration options to pass to
+  #   the *plugin* we're runnning.
+  #
+  # @param plugin [Class] plugin class that will perform the move.
+  #
+  # @param src [User] the source user to be moved.
+  #
+  # @param dst [User] the destination user, to which we will move *src*.
+  #
+  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
+
+    # Since we're not actually moving anything, the destination
+    # description is really only useful for seeing whether or not we'd
+    # be trying to move in on top of an existing account.
+    src_description = plugin.describe(src)
+    dst_description = plugin.describe(dst)
+
+    msg  = "Would move 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)
   end
 
 end