Class: EY::Serverside::Shell

Inherits:
Object
  • Object
show all
Defined in:
lib/engineyard-serverside/shell.rb,
lib/engineyard-serverside/shell/helpers.rb,
lib/engineyard-serverside/shell/yieldio.rb,
lib/engineyard-serverside/shell/formatter.rb

Defined Under Namespace

Modules: Helpers Classes: Formatter, YieldIO

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Shell

Returns a new instance of Shell.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/engineyard-serverside/shell.rb', line 12

def initialize(options)
  @start_time = options[:start_time]
  @verbose    = options[:verbose]


  @stdout = options[:stdout] || $stdout
  @stderr = options[:stderr] || $stderr

  log_pathname = Pathname.new(options[:log_path])
  log_pathname.unlink if log_pathname.exist? # start fresh
  @logger = Logger.new(log_pathname.to_s)
  @logger.level = Logger::DEBUG # Always log to the file at debug, formatter hides debug for non-verbose
  @logger.formatter = EY::Serverside::Shell::Formatter.new(@stdout, @stderr, start_time, @verbose)
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



10
11
12
# File 'lib/engineyard-serverside/shell.rb', line 10

def logger
  @logger
end

Instance Method Details

#command_err(msg) ⇒ Object



63
# File 'lib/engineyard-serverside/shell.rb', line 63

def command_err(msg)  unknown msg.gsub(/^/,'     ') end

#command_out(msg) ⇒ Object



62
# File 'lib/engineyard-serverside/shell.rb', line 62

def command_out(msg)  debug   msg.gsub(/^/,'     ') end

#command_show(cmd) ⇒ Object

a debug outputter that displays a command being run Formatis like this:

$ cmd blah do \
> something more
> end


61
# File 'lib/engineyard-serverside/shell.rb', line 61

def command_show(cmd) debug   cmd.gsub(/^/,'   > ').sub(/>/, '$') end

#debug(msg) ⇒ Object



52
# File 'lib/engineyard-serverside/shell.rb', line 52

def debug(msg)   logger.debug   msg end

#error(msg) ⇒ Object



48
# File 'lib/engineyard-serverside/shell.rb', line 48

def error(msg)   logger.error   "ERROR: #{msg}"   end

#exception(msg) ⇒ Object



55
# File 'lib/engineyard-serverside/shell.rb', line 55

def exception(msg) error msg end

#fatal(msg) ⇒ Object



47
# File 'lib/engineyard-serverside/shell.rb', line 47

def fatal(msg)   logger.fatal   "FATAL: #{msg}"   end

#info(msg) ⇒ Object



51
# File 'lib/engineyard-serverside/shell.rb', line 51

def info(msg)    logger.info    msg end

#logged_system(cmd, server = nil) ⇒ Object



65
66
67
# File 'lib/engineyard-serverside/shell.rb', line 65

def logged_system(cmd, server = nil)
  EY::Serverside::Spawner.run(cmd, self, server)
end

#notice(msg) ⇒ Object



50
# File 'lib/engineyard-serverside/shell.rb', line 50

def notice(msg)  logger.warn    msg end

#start_timeObject



31
32
33
# File 'lib/engineyard-serverside/shell.rb', line 31

def start_time
  @start_time ||= Time.now
end

#status(msg) ⇒ Object

a nice info outputter that prepends spermy operators for some reason.



36
37
38
39
40
41
# File 'lib/engineyard-serverside/shell.rb', line 36

def status(msg)
  if msg.respond_to?(:force_encoding)
    msg.force_encoding("UTF-8")
  end
  info msg.gsub(/^/, '~> ')
end

#substatus(msg) ⇒ Object



43
44
45
# File 'lib/engineyard-serverside/shell.rb', line 43

def substatus(msg)
  debug msg.gsub(/^/, ' ~ ')
end

#unknown(msg) ⇒ Object



53
# File 'lib/engineyard-serverside/shell.rb', line 53

def unknown(msg) logger.unknown msg end

#verbose?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/engineyard-serverside/shell.rb', line 27

def verbose?
  @verbose
end

#warning(msg) ⇒ Object



49
# File 'lib/engineyard-serverside/shell.rb', line 49

def warning(msg) logger.warn    "WARNING: #{msg}" end