Sha256: de76c27ce8705fe71751ff11e476178157e12cc82d4c71a64e189fe2bbbe0168

Contents?: true

Size: 1.65 KB

Versions: 1

Compression:

Stored size: 1.65 KB

Contents

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

1 entries across 1 versions & 1 rubygems

Version Path
riot_notifier-0.0.3 lib/riot_notifier.rb