class Enviera::Utils

Public Class Methods

camelcase(string) click to toggle source
# File lib/enviera/utils.rb, line 18
def self.camelcase string
  return string if string !~ /_/ && string =~ /[A-Z]+.*/
  string.split('_').map{|e| e.capitalize}.join
end
colorize(message, color) click to toggle source
# File lib/enviera/utils.rb, line 108
def self.colorize message, color
  suffix = "\e[0m"
  prefix = case color
  when :red
    "\e[31m"
  when :green
    "\e[32m"
  when :blue
    "\e[34m"
  else #:white
    "\e[0m"
  end
  "#{prefix}#{message}#{suffix}"
end
confirm?(message) click to toggle source
# File lib/enviera/utils.rb, line 9
def self.confirm? message
  result = ask("#{message} (y/N): ")
  if result.downcase == "y" or result.downcase == "yes"
    true
  else
    false
  end
end
debug(messageinfo) click to toggle source
# File lib/enviera/utils.rb, line 91
def self.debug messageinfo
  self.print_message({ :message => self.structure_message( messageinfo ), :enviera_loglevel => :debug, :cli_color => :green, :threshold => 1 })
end
find_all_subclasses_of(args) click to toggle source
# File lib/enviera/utils.rb, line 53
def self.find_all_subclasses_of args
  parent_class = args[ :parent_class ]
  constants = parent_class.constants
  candidates = []
  constants.each do | candidate |
    candidates << candidate.to_s.split('::').last if parent_class.const_get(candidate).class.to_s == "Class"
  end
  candidates
end
find_closest_class(args) click to toggle source
# File lib/enviera/utils.rb, line 28
def self.find_closest_class args
  parent_class = args[ :parent_class ]
  class_name = args[ :class_name ]
  constants = parent_class.constants
  candidates = []
  constants.each do | candidate |
    candidates << candidate.to_s if candidate.to_s.downcase == class_name.downcase
  end
  if candidates.count > 0
    parent_class.const_get candidates.first
  else
    nil
  end
end
info(messageinfo) click to toggle source
# File lib/enviera/utils.rb, line 87
def self.info messageinfo
  self.print_message({ :message => self.structure_message( messageinfo ), :enviera_loglevel => :debug, :cli_color => :white, :threshold => 0 })
end
print_message( args ) click to toggle source
read_password() click to toggle source
# File lib/enviera/utils.rb, line 5
def self.read_password
  ask("Enter password: ") {|q| q.echo = "*" }
end
require_dir(classdir) click to toggle source
# File lib/enviera/utils.rb, line 43
def self.require_dir classdir
  num_class_hierarchy_levels = self.to_s.split("::").count - 1
  root_folder = File.dirname(__FILE__) + "/" + Array.new(num_class_hierarchy_levels).fill("..").join("/")
  class_folder = root_folder + "/" + classdir
  Dir[File.expand_path("#{class_folder}/*.rb")].uniq.each do |file|
    self.trace "Requiring file: #{file}"
    require file
  end
end
snakecase(string) click to toggle source
# File lib/enviera/utils.rb, line 23
def self.snakecase string
  return string if string !~ /[A-Z]/
  string.split(/(?=[A-Z])/).collect {|x| x.downcase}.join("_")
end
structure_message(messageinfo) click to toggle source
# File lib/enviera/utils.rb, line 63
def self.structure_message messageinfo
  message = {:from => "enviera-core"}
  case messageinfo.class.to_s
  when 'Hash'
    message.merge!(messageinfo)
  else
    message.merge!({:msg => messageinfo.to_s})
  end
  message[:prefix] = "[#{message[:from]}]"
  message[:spacer] = " #{' ' * message[:from].length} "
  formatted_output = message[:msg].split("\n").each_with_index.map do |line, index|
    if index == 0
      "#{message[:prefix]} #{line}"
    else
      "#{message[:spacer]} #{line}"
    end
  end
  formatted_output.join "\n"
end
trace(messageinfo) click to toggle source
# File lib/enviera/utils.rb, line 95
def self.trace messageinfo
  self.print_message({ :message => self.structure_message( messageinfo ), :enviera_loglevel => :debug, :cli_color => :blue, :threshold => 2 })
end
warn(messageinfo) click to toggle source
# File lib/enviera/utils.rb, line 83
def self.warn messageinfo
  self.print_message({ :message => self.structure_message( messageinfo ), :enviera_loglevel => :warn, :cli_color => :red })
end