Factor out the description-message-building in the runners.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 8 Nov 2015 18:55:08 +0000 (13:55 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 8 Nov 2015 18:55:08 +0000 (13:55 -0500)
doc/TODO
lib/common/runner.rb
lib/mv/mv_dummy_runner.rb
lib/mv/mv_runner.rb
lib/rm/rm_dummy_runner.rb
lib/rm/rm_runner.rb

index bd750c9caa4658b02848d082a08443afe115eeef..b809204bb904381770a9c2457621c02033107b31 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -22,6 +22,4 @@
 
 * Make sure removing a domain updates the aliases table correctly.
 
 
 * Make sure removing a domain updates the aliases table correctly.
 
-* Factor out all of the msg-building in e.g. MvRunner.
-
 * Implement moving of domains.
 * Implement moving of domains.
index 2bb66e03aebe2145f1eaf34c246eef08e363c49f..b6fa2e86cafb0d5131bcc687f9edd7e387063814 100644 (file)
@@ -17,6 +17,46 @@ module Runner
   end
 
 
   end
 
 
+  # When we're describing a user or domain, we often want to output
+  # some additional description of it. But then, sometimes that
+  # additional description is pointless, like when it's exactly the
+  # same as the username that we're already outputting. This function
+  # determines whether or not *desc* is pointless for *target*.
+  #
+  # @param target [User,Domain] the user or domain described by *desc*.
+  #
+  # @param desc [String] a string description of *target*.
+  #
+  # @return [Boolean] true if *desc* is a pointless description of
+  #   *target* and false otherwise.
+  #
+  def pointless?(target, desc)
+    return (desc.nil? or desc.empty? or desc == target.to_s())
+  end
+
+
+  # If *desc* is not a pointless description of *target*, return the
+  # string representation of *target* followed by *desc* in
+  # parentheses. If *desc* is pointless, we return only the string
+  # representation of *target*
+  #
+  # @param target [User,Domain] the user or domain we want to describe
+  #   as a string.
+  #
+  # @param desc [String] a string description of *target*.
+  #
+  # @return [String] the string representation of *target*, possibly
+  #   followed by the non-pointless description *desc*.
+  #
+  def add_description(target, desc)
+    if pointless?(target, desc)
+      return target.to_s()
+    else
+      return target.to_s() + " (#{desc})"
+    end
+  end
+
+
   # Report a message from the given *plugin*. All this does is prefix
   # the message with the plugin name and then print it to stdout.
   #
   # Report a message from the given *plugin*. All this does is prefix
   # the message with the plugin name and then print it to stdout.
   #
index 9ed655a4719ad30785b9a917624bc3dadfd7c768..f73066967d3f42d41e6c3921b48a0b960ce1de8c 100644 (file)
@@ -34,24 +34,10 @@ class MvDummyRunner
     src_description = plugin.describe(src)
     dst_description = plugin.describe(dst)
 
     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  = "Would move user "
+    msg += add_description(src, src_description)
+    msg += " to "
+    add_description(dst, dst_description)
     msg += "."
     report(plugin, msg)
   end
     msg += "."
     report(plugin, msg)
   end
index fe44e5c244d3fe4cff66f140bb4d684ca903364a..1fac09ef8c062026ee1bb6aaac49dd0e9386c26c 100644 (file)
@@ -31,24 +31,10 @@ class MvRunner
       plugin.mv_user(src, dst)
       dst_description = plugin.describe(dst)
 
       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  = "Moved user "
+      msg += add_description(src, src_description)
+      msg += " to "
+      msg += add_description(dst, dst_description)
       msg += "."
       report(plugin, msg)
 
       msg += "."
       report(plugin, msg)
 
index 54a8969bcc6925d5c55590b0a537e2367a66846d..2b1f14d66af40e91514aad00fb21a0f6d87596d2 100644 (file)
@@ -27,14 +27,8 @@ class RmDummyRunner
   def run(cfg, plugin, *targets)
     targets.each do |target|
       target_description = plugin.describe(target)
   def run(cfg, plugin, *targets)
     targets.each do |target|
       target_description = plugin.describe(target)
-      msg =  "Would remove #{target.class.to_s().downcase()} #{target}"
-
-      # Only append the extra description if it's useful.
-      if not target_description.nil? and
-         not target_description.empty? and
-         not target_description == target.to_s() then
-        msg += " (#{target_description})"
-      end
+      msg =  "Would remove #{target.class.to_s().downcase()} "
+      msg += add_description(target, target_description)
       msg += '.'
 
       report(plugin, msg)
       msg += '.'
 
       report(plugin, msg)
index 4162ddf531192e549b48eaf10a7760271e402f78..1c2d344475e27d3f763553d15dfbbfb37fbe4d40 100644 (file)
@@ -39,14 +39,8 @@ class RmRunner
 
     begin
       plugin.remove(target)
 
     begin
       plugin.remove(target)
-      msg =  "Removed #{target.class.to_s().downcase()} #{target}"
-
-      # Only append the extra description if it's useful.
-      if not target_description.nil? and
-         not target_description.empty? and
-         not target_description == target.to_s() then
-        msg += " (#{target_description})"
-      end
+      msg =  "Removed #{target.class.to_s().downcase()} "
+      msg += add_description(target, target_description)
       msg += '.'
 
       report(plugin, msg)
       msg += '.'
 
       report(plugin, msg)