class Rerun::Notification

Attributes

body[R]
options[R]
title[R]

Public Class Methods

new(title, body, options = Options::DEFAULTS.dup) click to toggle source
# File lib/rerun/notification.rb, line 9
def initialize(title, body, options = Options::DEFAULTS.dup)
  @title = title
  @body = body
  @options = options
end

Public Instance Methods

app_name() click to toggle source
# File lib/rerun/notification.rb, line 59
def app_name
  options[:name]
end
command() click to toggle source
# File lib/rerun/notification.rb, line 15
def command
  # todo: strategy or subclass

  s = nil

  if options[:notify] == true or options[:notify] == "growl"
    if (cmd = command_named("growlnotify"))
      # todo: check version of growlnotify and warn if it's too old
      icon_str = ("--image \"#{icon}\"" if icon)
      s = "#{cmd} -n \"#{app_name}\" -m \"#{body}\" \"#{app_name} #{title}\" #{icon_str}"
    end
  end

  if s.nil? and options[:notify] == true or options[:notify] == "osx"
    if (cmd = command_named("terminal-notifier"))
      icon_str = ("-appIcon \"#{icon}\"" if icon)
      s = "#{cmd} -title \"#{app_name}\" -message \"#{body}\" \"#{app_name} #{title}\" #{icon_str}"
    end
  end

  if s.nil? and options[:notify] == true or options[:notify] == "notify-send"
    if (cmd = command_named('notify-send'))
      icon_str = "--icon #{icon}" if icon
      s = "#{cmd} -t 500 --hint=int:transient:1 #{icon_str} \"#{app_name}: #{title}\" \"#{body}\""
    end
  end

  s
end
command_named(name) click to toggle source
# File lib/rerun/notification.rb, line 45
def command_named(name)
  which_command = windows? ? 'where.exe' : 'which'
  # TODO: remove 'INFO' error message
  path = `#{which_command} #{name}`.chomp
  path.empty? ? nil : path
end
icon() click to toggle source
# File lib/rerun/notification.rb, line 63
def icon
  "#{icon_dir}/rails_red_sml.png" if rails?
end
icon_dir() click to toggle source
# File lib/rerun/notification.rb, line 67
def icon_dir
  here = File.expand_path(File.dirname(__FILE__))
  File.expand_path("#{here}/../../icons")
end
send(background = true) click to toggle source
# File lib/rerun/notification.rb, line 52
def send(background = true)
  return unless command
  with_clean_env do
    `#{command}#{" &" if background}`
  end
end
with_clean_env() { || ... } click to toggle source
# File lib/rerun/notification.rb, line 72
def with_clean_env
  if defined?(Bundler)
    Bundler.with_clean_env do
      yield
    end
  else
    yield
  end
end