Sha256: 61897157bd8952ff96f72b332cc25ddcc366acc10fe8561fb9e7354d24150627

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

module Locomotive::Wagon

  class PushLogger

    def initialize
      subscribe 'site_created' do |event|
        log "We created your site with the following handle: #{event.payload[:site].handle}", { mode: :bold }
      end

      subscribe :start do |event|
        log "\n"
        log "Pushing #{event.payload[:name].camelcase}", { color: :black, background: :white }
      end

      subscribe :persist do |event|
        log "persisting #{event.payload[:label]}", :white, 2, true
      end

      subscribe :skip_persisting do |event|
        log ' [' + 'skip'.colorize(:yellow) + ']'
      end

      subscribe :persist_with_success do |event|
        log ' [' + 'done'.colorize(:green) + ']'
      end

      subscribe :persist_with_error do |event|
        log ' [' + 'failed'.colorize(:red) + ']'
        log event.payload[:message], :red, 4
      end
    end

    private

    def log(message, color = nil, ident = nil, print = false)
      ident = ' ' * (ident || 0)

      message = "#{ident}#{message.gsub("\n", "\n" + ident)}"
      message = message.colorize(color) if color

      if print
        print message
      else
        puts message
      end
    end

    def subscribe(action = nil, &block)
      name = ['wagon', 'push', [*action]].flatten.compact.join('.')

      ActiveSupport::Notifications.subscribe(name) do |*args|
        event = ActiveSupport::Notifications::Event.new *args
        yield(event)
      end
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
locomotivecms_wagon-2.0.0.pre.alpha.3 lib/locomotive/wagon/commands/loggers/push_logger.rb
locomotivecms_wagon-2.0.0.pre.alpha.2 lib/locomotive/wagon/commands/loggers/push_logger.rb
locomotivecms_wagon-2.0.0.pre.alpha.1 lib/locomotive/wagon/commands/loggers/push_logger.rb
locomotivecms_wagon-2.0.0.pre.alpha lib/locomotive/wagon/commands/loggers/push_logger.rb