lib/reap/utilities.rb in reap-9.3.5 vs lib/reap/utilities.rb in reap-9.4.0
- old
+ new
@@ -1,23 +1,38 @@
require 'fileutils'
require 'reap/extensions'
require 'facets/ziputils'
+require 'facets/net/smtp_tls'
module Reap
+ # = Utilities
+ #
+ # Gerenal methods useful to project and tools.
+
module Utilities
- attr_accessor :dryrun
- attr_accessor :trace
- attr_accessor :force
- attr_accessor :verbose
+ #attr_accessor :dryrun
+ #attr_accessor :trace
+ #attr_accessor :force
+ #attr_accessor :verbose
- def dryrun? ; @dryrun ; end
- def trace? ; @trace ; end
- def force? ; @force ; end
- def verbose? ; @verbose ; end
+ #def dryrun? ; @dryrun ; end
+ #def trace? ; @trace ; end
+ #def force? ; @force ; end
+ #def verbose? ; @verbose ; end
+ # Helper method for cleaning list options.
+ # This will split the option on ':' or ';'
+ # if it is a string, rather than an array.
+ # And it will make sure there are no nil elements.
+
+ def list_option(option)
+ option = option.to_s.split(/[:;,]/) unless Array===option
+ [option].compact.flatten
+ end
+
# Internal status report.
# Only output if dryrun or trace mode.
def status(message)
if dryrun? or trace?
@@ -287,10 +302,26 @@
def ziputils
dryrun? ? ::ZipUtils::DryRun : ::ZipUtils
end
+ #
+
+ def compress(format, folder, file=nil, options={})
+ case format.to_s.downcase
+ when 'zip'
+ ziputils.zip(folder, file, options)
+ when 'tgz'
+ ziputils.tgz(folder, file, options)
+ when 'tbz', 'bzip'
+ ziputils.tar_bzip(folder, file, options)
+ else
+ raise ArguementError, "unsupported compression format -- #{format}"
+ end
+ end
+
+=begin
# Zip folder into file.
def zip(folder, file=nil, options={})
ziputils.zip(folder, file, options)
end
@@ -304,89 +335,15 @@
# GZip and tarball folder into file. Shortcut for ziputils.tgz.
def tgz(folder, file=nil, options={})
ziputils.tgz(folder, file, options)
end
+=end
-
- # Email function to easily send out an email.
- #
- # Settings:
- #
- # subject Subject of email message.
- # from Message FROM address [email].
- # to Email address to send announcemnt.
- # server Email server to route message.
- # port Email server's port.
- # port_secure Email server's port.
- # domain Email server's domain name.
- # account Email account name if needed.
- # password Password for login..
- # login Login type: plain, cram_md5 or login [plain].
- # secure Uses TLS security, true or false? [false]
- # message Mesage to send -or-
- # file File that contains message.
-
- def email(message, settings)
- settings ||= {}
- settings.rekey
-
- server = settings[:server]
- account = settings[:account] || ENV['EMAIL_ACCOUNT']
- passwd = settings[:password] || ENV['EMAIL_PASSWORD']
- login = settings[:login]
- subject = settings[:subject]
- mail_to = settings[:to] || settings[:mail_to]
- mail_from = settings[:from] || settings[:mail_from]
- secure = settings[:secure]
- domain = settings[:domain] || server
-
- port = (settings[:port_secure] || 465) if secure
- port = (settings[:port] || 25) unless secure
-
- account ||= mail_from
- login ||= :plain
-
- login = login.to_sym
-
- #mail_to = nil if mail_to.empty?
-
- raise ArgumentError, "missing email field -- server" unless server
- raise ArgumentError, "missing email field -- account" unless account
- raise ArgumentError, "missing email field -- subject" unless subject
- raise ArgumentError, "missing email field -- to" unless mail_to
- raise ArgumentError, "missing email field -- from" unless mail_from
-
- passwd ||= password("#{account} password:")
-
- mail_to = [mail_to].flatten.compact
-
- msg = ""
- msg << "From: #{mail_from}\n"
- msg << "To: #{mail_to.join(';')}\n"
- msg << "Subject: #{subject}\n"
- msg << ""
- msg << message
-
- if secure
- Net::SMTP.send(:include, Net::SMTP::TLS)
- Net::SMTP.enable_tls #if secure #if Net::SMTP.respond_to?(:enable_tls) and secure
- end
-
- begin
- Net::SMTP.start(server, port, domain, account, passwd, login) do |smtp|
- smtp.send_message(msg, mail_from, mail_to)
- end
- puts "Email sent successfully to #{mail_to.join(';')}."
- return true
- rescue => e
- if trace?
- raise e
- else
- abort "Email delivery failed."
- end
- end
+ def email(message, options)
+ Emailer.new(options).email(message)
end
end
end
+