Sha256: 774dd061a96740f429fcd918647e680eb6f832e9d60ba5e0c7066d8b549f74c6

Contents?: true

Size: 1.7 KB

Versions: 2

Compression:

Stored size: 1.7 KB

Contents

require 'capistrano'

module Capistrano
  class LogWithAwesome < Capistrano::Logger
    #replaces the built in Capistrano logger with awesome
    def self.init(config)
      @config = config
      level = @config.logger.level
      @config.logger = new
      @config.logger.level = level
    end

    def self.log_with_awesome(message)
      @buffer ||= []
      @buffer << message
      @config.set :message, message
      @config.set :full_log, @buffer.join("\n")
      @config.silently_trigger(:log_message)
    end

    # Log and do awesome things
    # I wish there was a nicer way to do this. Hax on device.puts, maybe?
    def log(level, message, line_prefix=nil)
      if level <= self.level
        indent = "%*s" % [Capistrano::Logger::MAX_LEVEL, "*" * (Capistrano::Logger::MAX_LEVEL - level)]
        (RUBY_VERSION >= "1.9" ? message.lines : message).each do |line|
          if line_prefix
            self.class.log_with_awesome "#{indent} [#{line_prefix}] #{line.strip}"
          else
            self.class.log_with_awesome "#{indent} #{line.strip}"
          end
        end
      end
      super(level, message, line_prefix)
    end
  end
end

module Capistrano
  class Configuration
    module Callbacks
      # Trigger the named event without logging.it
      def silently_trigger(event, task=nil)
        pending = Array(callbacks[event]).select { |c| c.applies_to?(task) }
        if pending.any?
          pending.each { |callback| callback.call }
        end
      end
    end
  end
end

# load last in order to repoen rather than define
require 'capistrano/log_with_awesome/version'

if Capistrano::Configuration.instance
  Capistrano::Configuration.instance.load do
    Capistrano::LogWithAwesome.init(self)
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
HeSYINUvSBZfxqA-capistrano_log-0.0.2 lib/capistrano/log_with_awesome.rb
capistrano-log_with_awesome-0.0.2 lib/capistrano/log_with_awesome.rb