class RmRunner
include Runner
- def run(plugin, *targets)
+ def run(cfg, plugin, *targets)
targets.each do |target|
- # Why think too hard? An user has an @, a domain doesn't.
- if target.include?('@') then
- begin
- user_description = plugin.describe_user(target)
- plugin.delete_user(target)
- report(plugin, "Removed user: #{target} (#{user_description})")
+ remove_target(plugin, target)
+ end
+ end
+
+ private;
+
+ 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)
- rescue NonexistentUserError => e
- report(plugin, "User not found: #{e.to_s}")
- rescue StandardError => e
- report(plugin, "There was an error removing the user: #{e.to_s}")
- Kernel.exit(ExitCodes::DATABASE_ERROR)
- end
- else
- begin
- domain_description = plugin.describe_domain(target)
- plugin.delete_domain(target)
- report(plugin, "Removed domain: #{target} (#{domain_description})")
+ begin
+ plugin.delete(target)
+ msg = "Removed #{target.class.to_s().downcase()} #{target}"
- rescue NonexistentUserError => e
- # Can happen in the usernames.each... block.
- report(plugin, "User not found: #{e.to_s}")
- rescue NonexistentDomainError => e
- report(plugin, "Domain not found: #{e.to_s}")
- rescue StandardError => e
- report(plugin, "There was an error removing the domain: #{e.to_s}")
- Kernel.exit(ExitCodes::DATABASE_ERROR)
- end
+ # 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
- end
+ msg += '.'
+ report(plugin, msg)
+ rescue NonexistentDomainError, NonexistentUserError => e
+ report(plugin, "#{target.class.to_s()} #{e.to_s} not found.")
+ end
end
-
end