Sha256: d3163a931875de745810dcb42b29ec17d210844298bc7c8c53c264e47d42c75a

Contents?: true

Size: 1.67 KB

Versions: 2

Compression:

Stored size: 1.67 KB

Contents

require 'riot'

module RiotNotifier
  class Base < ::Riot::DotMatrixReporter
    def notify(color, msg)
      # overwrite me
    end

    def fail(desc, message)
      super
      say yellow("#{desc}: #{message}")
      notify(:red, "FAILURE: #{message}")
    end

    def error(desc, error)
      super
      say red("#{desc}: #{error}")
      notify(:red, "ERROR: #{error}")
    end

    def results(time_taken)
      super
      unless bad_results?
        notify(:green, "%d passes, %d failures, %d errors in %s seconds" % [passes, failures, errors, ("%0.6f" % time_taken)])
      end
    end

  private

    def bad_results?
      failures + errors > 0
    end
  end

  class Libnotify < Base
    OPTIONS = {
      :green => {
        :icon_path => "/usr/share/icons/gnome/scalable/emblems/emblem-default.svg",
        :timeout => 2.5,
        :urgency => :normal,
        :summary => ":-)"
      },
      :red => {
        :icon_path => "/usr/share/icons/gnome/scalable/emotes/face-angry.svg",
        :timeout => 2.5,
        :urgency => :critical,
        :summary => ":-("
      }
    }

    def initialize
      require 'libnotify'
      super()
    end

    def notify(color, msg)
      options = OPTIONS[color] or raise "unknown color #{color}"

      ::Libnotify.show(options.merge(:body => msg))
    end
  end

  class RedgreenNotifier < Base
    attr_reader :path
    PATH = ENV['HOME'] + "/bin/notify_redgreen"
    
    def initialize(path = PATH)
      super()
      @path = path
    end

    def notify(color, msg)
      msg.gsub!(/</, '&lt;')
      msg.gsub!(/"/, "\\\"")
      exec "#{@path} #{color} \"#{msg}\""
    end

    def exec(*args)
      Kernel.system(*args)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
riot_notifier-0.0.6 lib/riot_notifier.rb
riot_notifier-0.0.5 lib/riot_notifier.rb