require 'common/errors'
require 'common/runner'
+# Perform the removal of users/domains using {RmPlugin}s.
+#
class RmRunner
include Runner
+ # Run *plugin* to remove the users/domains in *targets*. The method
+ # signature includes the unused *cfg* for consistency with the
+ # runners that do need a {Configuration}.
+ #
+ # @param cfg [Configuration] unused.
+ #
+ # @param plugin [Class] plugin class that will perform the removal.
+ #
+ # @param targets [Array<User,Domain>] the users and domains to be
+ # removed.
+ #
def run(cfg, plugin, *targets)
targets.each do |target|
remove_target(plugin, target)
end
end
- private;
+ protected;
+
+ # Remove *target* using *plugin*. This operation is separate from
+ # the <tt>run()</tt> method so that it can be accessed by the prune
+ # runner.
+ #
+ # @param plugin [RmPlugin] the plugin that will remove the *target*.
+ #
+ # @param target [User,Domain] the user or domain to remove.
+ #
def remove_target(plugin, target)
- # Wrap the "remove this thing" operation so that it can be reused
- # in the prine plugin.
target_description = plugin.describe(target)
begin
- plugin.delete(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
+ plugin.remove(target)
+ msg = "Removed #{target.class.to_s().downcase()} "
+ msg += add_description(target, target_description)
msg += '.'
report(plugin, msg)