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 +