From e39c5ef84554e7879dfab25c5c70abeba1e21d98 Mon Sep 17 00:00:00 2001 From: Wouter de Vos Date: Tue, 14 Aug 2012 14:07:04 +0200 Subject: [PATCH] The updated Gem supporting the different notifiers and their binaries. --- .gitignore | 1 + Failed.icns | Bin 123026 -> 0 bytes Ruby/Gemfile.lock | 10 +- Ruby/README.markdown | 23 +++- Ruby/Rakefile | 40 ++++-- ...inal-notifier => terminal-notifier-failed} | 4 +- Ruby/bin/terminal-notifier-notify | 9 ++ Ruby/bin/terminal-notifier-pending | 9 ++ Ruby/bin/terminal-notifier-success | 9 ++ Ruby/lib/terminal-notifier-guard.rb | 127 ++++++++++++++++++ Ruby/lib/terminal-notifier.rb | 88 ------------ Ruby/lib/terminal_notifier/guard/failed.rb | 7 + Ruby/lib/terminal_notifier/guard/notify.rb | 7 + Ruby/lib/terminal_notifier/guard/pending.rb | 7 + Ruby/lib/terminal_notifier/guard/success.rb | 7 + Ruby/spec/terminal-notifier-guard_spec.rb | 123 +++++++++++++++++ Ruby/spec/terminal-notifier_spec.rb | 75 ----------- Ruby/terminal-notifier-guard.gemspec | 23 ++++ Ruby/terminal-notifier.gemspec | 22 --- .../pending/pending/pending/pending/.DS_Stor | Bin 6148 -> 0 bytes 20 files changed, 379 insertions(+), 212 deletions(-) delete mode 100644 Failed.icns rename Ruby/bin/{terminal-notifier => terminal-notifier-failed} (52%) create mode 100755 Ruby/bin/terminal-notifier-notify create mode 100755 Ruby/bin/terminal-notifier-pending create mode 100755 Ruby/bin/terminal-notifier-success create mode 100644 Ruby/lib/terminal-notifier-guard.rb delete mode 100644 Ruby/lib/terminal-notifier.rb create mode 100644 Ruby/lib/terminal_notifier/guard/failed.rb create mode 100644 Ruby/lib/terminal_notifier/guard/notify.rb create mode 100644 Ruby/lib/terminal_notifier/guard/pending.rb create mode 100644 Ruby/lib/terminal_notifier/guard/success.rb create mode 100644 Ruby/spec/terminal-notifier-guard_spec.rb delete mode 100644 Ruby/spec/terminal-notifier_spec.rb create mode 100644 Ruby/terminal-notifier-guard.gemspec delete mode 100644 Ruby/terminal-notifier.gemspec delete mode 100644 Terminal Notifiers/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/.DS_Stor diff --git a/.gitignore b/.gitignore index 00ac595..85e5122 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ xcuserdata Ruby/*.zip Ruby/*.gem Ruby/vendor +.rvmrc diff --git a/Failed.icns b/Failed.icns deleted file mode 100644 index 6c6c76232a945b125dd4e9de77e299a3ba075e7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123026 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%0AqJ$`c$P*S#@C3Q@1K1{5+$A` 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 Fe*ylVYB&G@ diff --git a/Ruby/Gemfile.lock b/Ruby/Gemfile.lock index ce25758..9dbf75e 100644 --- a/Ruby/Gemfile.lock +++ b/Ruby/Gemfile.lock @@ -1,17 +1,18 @@ PATH remote: . specs: - terminal-notifier (1.4.1) + terminal-notifier-guard (1.4.2) GEM remote: http://rubygems.org/ specs: bacon (1.1.0) metaclass (0.0.1) - mocha (0.11.4) + mocha (0.12.3) metaclass (~> 0.0.1) - mocha-on-bacon (0.2.0) + mocha-on-bacon (0.2.1) mocha (>= 0.9.8) + rake (0.9.2.2) PLATFORMS ruby @@ -20,4 +21,5 @@ DEPENDENCIES bacon mocha mocha-on-bacon - terminal-notifier! + rake + terminal-notifier-guard! diff --git a/Ruby/README.markdown b/Ruby/README.markdown index 0da9939..962d69f 100644 --- a/Ruby/README.markdown +++ b/Ruby/README.markdown @@ -4,11 +4,21 @@ A simple Ruby wrapper around the [`terminal-notifier`][HOMEPAGE] command-line tool, which allows you to send User Notifications to the Notification Center on Mac OS X 10.8, or higher. +This version has 4 different `terminal-notifiers` included for each status that +[Guard][GUARD] supports: + + 1. Failed + 2. Notify + 3. Pending + 4. Success + +And each one with their own icon representing it's status. + ## Installation ``` -$ gem install terminal-notifier +$ gem install terminal-notifier-guard ``` @@ -35,12 +45,11 @@ TerminalNotifier.list ## License -All the works are available under the MIT license. **Except** for -‘Terminal.icns’, which is a copy of Apple’s Terminal.app icon and as such is -copyright of Apple. +All the works are available under the MIT license. See [LICENSE][LICENSE] for details. -[HOMEPAGE]: https://github.com/alloy/terminal-notifier -[README]: https://github.com/alloy/terminal-notifier/blob/master/README.markdown -[LICENSE]: https://github.com/alloy/terminal-notifier/blob/master/Ruby/LICENSE +[HOMEPAGE]: https://github.com/Springest/terminal-notifier-guard +[GUARD]: https://github.com/guard/guard +[README]: https://github.com/Springest/terminal-notifier-guard/blob/master/README.markdown +[LICENSE]: https://github.com/Springest/terminal-notifier-guard/blob/master/Ruby/LICENSE diff --git a/Ruby/Rakefile b/Ruby/Rakefile index 428ec9b..d51ad9e 100644 --- a/Ruby/Rakefile +++ b/Ruby/Rakefile @@ -1,43 +1,55 @@ def version @version ||= begin - plist = File.expand_path('../../Terminal Notifier/Terminal Notifier-Info.plist', __FILE__) + plist = File.expand_path('../../Terminal Notifiers/notify/Terminal Notifier/Terminal Notifier-Info.plist', __FILE__) `/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' '#{plist}'`.strip end end -def filename - "terminal-notifier_#{version}" +def types + %w(notify success pending failed) end -def zipfile - "#{filename}.zip" +def type_file_name(type) + "tn_#{type}-#{version}" +end + +def filenames + types.map{|type| type_file_name(type)} +end + +def zipfiles + filenames.map{|n| "#{n}.zip"} end task :clean do - rm zipfile + rm zipfiles rm_rf "vendor" end task :update_build do - unless File.exist?(zipfile) - sh "curl -O 'http://cloud.github.com/downloads/alloy/terminal-notifier/terminal-notifier_#{version}.zip'" - end - rm_rf "vendor" mkdir "vendor" - sh "unzip -o -d vendor #{zipfile}" - mv "vendor/#{filename}", "vendor/terminal-notifier" + zipfiles.each do |zipfile| + unless File.exist?(zipfile) + sh "curl -O 'http://cloud.github.com/downloads/Springest/terminal-notifier-guard/#{zipfile}'" + end + + sh "unzip -o -d vendor #{zipfile}" + end + types.each do |type| + mv "vendor/#{type_file_name(type)}.app", "vendor/terminal-notifier-#{type}.app" + end end desc "Build gem" task :gem => :update_build do - sh "gem build terminal-notifier.gemspec" + sh "gem build terminal-notifier-guard.gemspec" end desc "Run specs" task :spec do - sh "bundle exec ruby spec/terminal-notifier_spec.rb" + sh "bundle exec ruby spec/terminal-notifier-guard_spec.rb" end task :default => :spec diff --git a/Ruby/bin/terminal-notifier b/Ruby/bin/terminal-notifier-failed similarity index 52% rename from Ruby/bin/terminal-notifier rename to Ruby/bin/terminal-notifier-failed index ae8f7e4..56ccefb 100755 --- a/Ruby/bin/terminal-notifier +++ b/Ruby/bin/terminal-notifier-failed @@ -4,6 +4,6 @@ if $0 == __FILE__ $:.unshift File.expand_path('../../lib', __FILE__) end -require 'terminal-notifier' +require 'terminal-notifier-guard' -exec TerminalNotifier::BIN_PATH, *ARGV +exec TerminalNotifier::Guard::Failed::BIN_PATH, *ARGV diff --git a/Ruby/bin/terminal-notifier-notify b/Ruby/bin/terminal-notifier-notify new file mode 100755 index 0000000..29a6c34 --- /dev/null +++ b/Ruby/bin/terminal-notifier-notify @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby + +if $0 == __FILE__ + $:.unshift File.expand_path('../../lib', __FILE__) +end + +require 'terminal-notifier-guard' + +exec TerminalNotifier::Guard::Notify::BIN_PATH, *ARGV diff --git a/Ruby/bin/terminal-notifier-pending b/Ruby/bin/terminal-notifier-pending new file mode 100755 index 0000000..9b00edf --- /dev/null +++ b/Ruby/bin/terminal-notifier-pending @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby + +if $0 == __FILE__ + $:.unshift File.expand_path('../../lib', __FILE__) +end + +require 'terminal-notifier-guard' + +exec TerminalNotifier::Guard::Pending::BIN_PATH, *ARGV diff --git a/Ruby/bin/terminal-notifier-success b/Ruby/bin/terminal-notifier-success new file mode 100755 index 0000000..cfaa415 --- /dev/null +++ b/Ruby/bin/terminal-notifier-success @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby + +if $0 == __FILE__ + $:.unshift File.expand_path('../../lib', __FILE__) +end + +require 'terminal-notifier-guard' + +exec TerminalNotifier::Guard::Success::BIN_PATH, *ARGV diff --git a/Ruby/lib/terminal-notifier-guard.rb b/Ruby/lib/terminal-notifier-guard.rb new file mode 100644 index 0000000..0dea00c --- /dev/null +++ b/Ruby/lib/terminal-notifier-guard.rb @@ -0,0 +1,127 @@ +%w(failed notify pending success).each do |type| + require File.expand_path("../terminal_notifier/guard/#{type}", __FILE__) +end + +module TerminalNotifier + module Guard + include TerminalNotifier::Guard::Notify + include TerminalNotifier::Guard::Success + include TerminalNotifier::Guard::Failed + include TerminalNotifier::Guard::Pending + + # Returns wether or not the current platform is Mac OS X 10.8, or higher. + def self.available? + if @available.nil? + @available = `uname`.strip == 'Darwin' && `sw_vers -productVersion`.strip >= '10.8' + end + @available + end + + def self.execute(verbose, options) + if available? + case options[:type] + when :failed + bin_path = TerminalNotifier::Guard::Failed::BIN_PATH + when :success + bin_path = TerminalNotifier::Guard::Success::BIN_PATH + when :pending + bin_path = TerminalNotifier::Guard::Pending::BIN_PATH + else + bin_path = TerminalNotifier::Guard::Notify::BIN_PATH + end + options.delete(:type) if options[:type] + + command = [bin_path, *options.map { |k,v| ["-#{k}", v.to_s] }.flatten] + if RUBY_VERSION < '1.9' + require 'shellwords' + command = Shellwords.shelljoin(command) + end + result = '' + IO.popen(command) do |stdout| + output = stdout.read + STDOUT.print output if verbose + result << output + end + result + else + raise "terminal-notifier is only supported on Mac OS X 10.8, or higher." + end + end + + # Sends a User Notification and returns wether or not it was a success. + # + # The available options are `:title`, `:group`, `:activate`, `:open`, and + # `:execute`. For a description of each option see: + # + # https://github.com/alloy/terminal-notifier/blob/master/README.markdown + # + # Examples are: + # + # TerminalNotifier.notify('Hello World') + # TerminalNotifier.notify('Hello World', :title => 'Ruby') + # TerminalNotifier.notify('Hello World', :group => Process.pid) + # TerminalNotifier.notify('Hello World', :activate => 'com.apple.Safari') + # TerminalNotifier.notify('Hello World', :open => 'http://twitter.com/alloy') + # TerminalNotifier.notify('Hello World', :execute => 'say "OMG"') + # + # Raises if not supported on the current platform. + def notify(message, options = {}, verbose = false) + TerminalNotifier::Guard.execute(verbose, options.merge(:message => message)) + $?.success? + end + module_function :notify + + def failed(message, options = {}, verbose = false) + TerminalNotifier::Guard.execute(verbose, options.merge(:message => message, :type => :failed)) + $?.success? + end + module_function :failed + + def pending(message, options = {}, verbose = false) + TerminalNotifier::Guard.execute(verbose, options.merge(:message => message, :type => :pending)) + $?.success? + end + module_function :pending + + def success(message, options = {}, verbose = false) + TerminalNotifier::Guard.execute(verbose, options.merge(:message => message, :type => :success)) + $?.success? + end + module_function :success + + # Removes a notification that was previously sent with the specified + # ‘group’ ID, if one exists. + # + # If no ‘group’ ID is given, all notifications are removed. + def remove(group = 'ALL', verbose = false) + TerminalNotifier::Guard.execute(verbose, :remove => group) + $?.success? + end + module_function :remove + + LIST_FIELDS = [:group, :title, :subtitle, :message, :delivered_at].freeze + + # If a ‘group’ ID is given, and a notification for that group exists, + # returns a hash with details about the notification. + # + # If no ‘group’ ID is given, an array of hashes describing all + # notifications. + # + # If no information is available this will return `nil`. + def list(group = 'ALL', verbose = false) + output = TerminalNotifier::Guard.execute(verbose, :list => group) + return if output.strip.empty? + + require 'time' + notifications = output.split("\n")[1..-1].map do |line| + LIST_FIELDS.zip(line.split("\t")).inject({}) do |hash, (key, value)| + hash[key] = key == :delivered_at ? Time.parse(value) : (value unless value == '(null)') + hash + end + end + + group == 'ALL' ? notifications : notifications.first + end + module_function :list + end +end diff --git a/Ruby/lib/terminal-notifier.rb b/Ruby/lib/terminal-notifier.rb deleted file mode 100644 index 2453bb3..0000000 --- a/Ruby/lib/terminal-notifier.rb +++ /dev/null @@ -1,88 +0,0 @@ -module TerminalNotifier - BIN_PATH = File.expand_path('../../vendor/terminal-notifier/terminal-notifier.app/Contents/MacOS/terminal-notifier', __FILE__) - - # Returns wether or not the current platform is Mac OS X 10.8, or higher. - def self.available? - if @available.nil? - @available = `uname`.strip == 'Darwin' && `sw_vers -productVersion`.strip >= '10.8' - end - @available - end - - def self.execute(verbose, options) - if available? - command = [BIN_PATH, *options.map { |k,v| ["-#{k}", v.to_s] }.flatten] - if RUBY_VERSION < '1.9' - require 'shellwords' - command = Shellwords.shelljoin(command) - end - result = '' - IO.popen(command) do |stdout| - output = stdout.read - STDOUT.print output if verbose - result << output - end - result - else - raise "terminal-notifier is only supported on Mac OS X 10.8, or higher." - end - end - - # Sends a User Notification and returns wether or not it was a success. - # - # The available options are `:title`, `:group`, `:activate`, `:open`, and - # `:execute`. For a description of each option see: - # - # https://github.com/alloy/terminal-notifier/blob/master/README.markdown - # - # Examples are: - # - # TerminalNotifier.notify('Hello World') - # TerminalNotifier.notify('Hello World', :title => 'Ruby') - # TerminalNotifier.notify('Hello World', :group => Process.pid) - # TerminalNotifier.notify('Hello World', :activate => 'com.apple.Safari') - # TerminalNotifier.notify('Hello World', :open => 'http://twitter.com/alloy') - # TerminalNotifier.notify('Hello World', :execute => 'say "OMG"') - # - # Raises if not supported on the current platform. - def notify(message, options = {}, verbose = false) - TerminalNotifier.execute(verbose, options.merge(:message => message)) - $?.success? - end - module_function :notify - - # Removes a notification that was previously sent with the specified - # ‘group’ ID, if one exists. - # - # If no ‘group’ ID is given, all notifications are removed. - def remove(group = 'ALL', verbose = false) - TerminalNotifier.execute(verbose, :remove => group) - $?.success? - end - module_function :remove - - LIST_FIELDS = [:group, :title, :subtitle, :message, :delivered_at].freeze - - # If a ‘group’ ID is given, and a notification for that group exists, - # returns a hash with details about the notification. - # - # If no ‘group’ ID is given, an array of hashes describing all - # notifications. - # - # If no information is available this will return `nil`. - def list(group = 'ALL', verbose = false) - output = TerminalNotifier.execute(verbose, :list => group) - return if output.strip.empty? - - require 'time' - notifications = output.split("\n")[1..-1].map do |line| - LIST_FIELDS.zip(line.split("\t")).inject({}) do |hash, (key, value)| - hash[key] = key == :delivered_at ? Time.parse(value) : (value unless value == '(null)') - hash - end - end - - group == 'ALL' ? notifications : notifications.first - end - module_function :list -end diff --git a/Ruby/lib/terminal_notifier/guard/failed.rb b/Ruby/lib/terminal_notifier/guard/failed.rb new file mode 100644 index 0000000..e45863d --- /dev/null +++ b/Ruby/lib/terminal_notifier/guard/failed.rb @@ -0,0 +1,7 @@ +module TerminalNotifier + module Guard + module Failed + BIN_PATH = File.expand_path('../../../../vendor/terminal-notifier-failed.app/Contents/MacOS/terminal-notifier', __FILE__) + end + end +end diff --git a/Ruby/lib/terminal_notifier/guard/notify.rb b/Ruby/lib/terminal_notifier/guard/notify.rb new file mode 100644 index 0000000..86d1c4f --- /dev/null +++ b/Ruby/lib/terminal_notifier/guard/notify.rb @@ -0,0 +1,7 @@ +module TerminalNotifier + module Guard + module Notify + BIN_PATH = File.expand_path('../../../../vendor/terminal-notifier-notify.app/Contents/MacOS/terminal-notifier', __FILE__) + end + end +end diff --git a/Ruby/lib/terminal_notifier/guard/pending.rb b/Ruby/lib/terminal_notifier/guard/pending.rb new file mode 100644 index 0000000..8634741 --- /dev/null +++ b/Ruby/lib/terminal_notifier/guard/pending.rb @@ -0,0 +1,7 @@ +module TerminalNotifier + module Guard + module Pending + BIN_PATH = File.expand_path('../../../../vendor/terminal-notifier-pending.app/Contents/MacOS/terminal-notifier', __FILE__) + end + end +end diff --git a/Ruby/lib/terminal_notifier/guard/success.rb b/Ruby/lib/terminal_notifier/guard/success.rb new file mode 100644 index 0000000..b4cd9f0 --- /dev/null +++ b/Ruby/lib/terminal_notifier/guard/success.rb @@ -0,0 +1,7 @@ +module TerminalNotifier + module Guard + module Success + BIN_PATH = File.expand_path('../../../../vendor/terminal-notifier-success.app/Contents/MacOS/terminal-notifier', __FILE__) + end + end +end diff --git a/Ruby/spec/terminal-notifier-guard_spec.rb b/Ruby/spec/terminal-notifier-guard_spec.rb new file mode 100644 index 0000000..b20afb7 --- /dev/null +++ b/Ruby/spec/terminal-notifier-guard_spec.rb @@ -0,0 +1,123 @@ +require 'rubygems' +require 'bacon' +require 'mocha' +require 'mocha-on-bacon' + +Bacon.summary_at_exit + +$:.unshift File.expand_path('../../lib', __FILE__) +require 'terminal-notifier-guard' + +describe "TerminalNotifier::Guard" do + describe ".execute" do + it "executes the tool with the given options" do + command = [TerminalNotifier::Guard::Notify::BIN_PATH, '-message', 'ZOMG'] + if RUBY_VERSION < '1.9' + require 'shellwords' + command = Shellwords.shelljoin(command) + end + IO.expects(:popen).with(command).yields(StringIO.new('output')) + TerminalNotifier::Guard.execute(false, :message => 'ZOMG') + end + + it "executes the right tool according to the type option" do + command = [TerminalNotifier::Guard::Success::BIN_PATH, '-message', 'ZOMG'] + if RUBY_VERSION < '1.9' + require 'shellwords' + command = Shellwords.shelljoin(command) + end + IO.expects(:popen).with(command).yields(StringIO.new('output')) + TerminalNotifier::Guard.execute(false, :message => 'ZOMG', :type => :success) + end + + it "returns the result output of the command" do + TerminalNotifier::Guard.execute(false, 'help' => '').should == `'#{TerminalNotifier::Guard::Notify::BIN_PATH}' -help` + end + + it "sends a notification" do + TerminalNotifier::Guard.expects(:execute).with(false, :message => 'ZOMG', :group => 'important stuff') + TerminalNotifier::Guard.notify('ZOMG', :group => 'important stuff') + end + + it "removes a notification" do + TerminalNotifier::Guard.expects(:execute).with(false, :remove => 'important stuff') + TerminalNotifier::Guard.remove('important stuff') + end + + it "by default removes all the notifications" do + TerminalNotifier::Guard.expects(:execute).with(false, :remove => 'ALL') + TerminalNotifier::Guard.remove + end + + it "returns `nil` if no notification was found to list info for" do + TerminalNotifier::Guard.expects(:execute).with(false, :list => 'important stuff').returns('') + TerminalNotifier::Guard.list('important stuff').should == nil + end + + it "returns info about a notification posted in a specific group" do + TerminalNotifier::Guard.expects(:execute).with(false, :list => 'important stuff'). + returns("GroupID\tTitle\tSubtitle\tMessage\tDelivered At\n" \ + "important stuff\tTerminal\t(null)\tExecute: rake spec\t2012-08-06 19:45:30 +0000") + TerminalNotifier::Guard.list('important stuff').should == { + :group => 'important stuff', + :title => 'Terminal', :subtitle => nil, :message => 'Execute: rake spec', + :delivered_at => Time.parse('2012-08-06 19:45:30 +0000') + } + end + + it "by default returns a list of all notification" do + TerminalNotifier::Guard.expects(:execute).with(false, :list => 'ALL'). + returns("GroupID\tTitle\tSubtitle\tMessage\tDelivered At\n" \ + "important stuff\tTerminal\t(null)\tExecute: rake spec\t2012-08-06 19:45:30 +0000\n" \ + "(null)\t(null)\tSubtle\tBe subtle!\t2012-08-07 19:45:30 +0000") + TerminalNotifier::Guard.list.should == [ + { + :group => 'important stuff', + :title => 'Terminal', :subtitle => nil, :message => 'Execute: rake spec', + :delivered_at => Time.parse('2012-08-06 19:45:30 +0000') + }, + { + :group => nil, + :title => nil, :subtitle => 'Subtle', :message => 'Be subtle!', + :delivered_at => Time.parse('2012-08-07 19:45:30 +0000') + } + ] + end + end + + describe ".failed" do + it "executes the 'failed' tool binary" do + command = [TerminalNotifier::Guard::Failed::BIN_PATH, '-message', 'ZOMG'] + if RUBY_VERSION < '1.9' + require 'shellwords' + command = Shellwords.shelljoin(command) + end + IO.expects(:popen).with(command).yields(StringIO.new('output')) + TerminalNotifier::Guard.failed('ZOMG') + end + end + + describe ".success" do + it "executes the 'success' tool binary" do + command = [TerminalNotifier::Guard::Success::BIN_PATH, '-message', 'ZOMG'] + if RUBY_VERSION < '1.9' + require 'shellwords' + command = Shellwords.shelljoin(command) + end + IO.expects(:popen).with(command).yields(StringIO.new('output')) + TerminalNotifier::Guard.success('ZOMG') + end + end + + describe ".pending" do + it "executes the 'pending' tool binary" do + command = [TerminalNotifier::Guard::Pending::BIN_PATH, '-message', 'ZOMG'] + if RUBY_VERSION < '1.9' + require 'shellwords' + command = Shellwords.shelljoin(command) + end + IO.expects(:popen).with(command).yields(StringIO.new('output')) + TerminalNotifier::Guard.pending('ZOMG') + end + end +end diff --git a/Ruby/spec/terminal-notifier_spec.rb b/Ruby/spec/terminal-notifier_spec.rb deleted file mode 100644 index e677b12..0000000 --- a/Ruby/spec/terminal-notifier_spec.rb +++ /dev/null @@ -1,75 +0,0 @@ -require 'rubygems' -require 'bacon' -require 'mocha' -require 'mocha-on-bacon' - -Bacon.summary_at_exit - -$:.unshift File.expand_path('../../lib', __FILE__) -require 'terminal-notifier' - -describe "TerminalNotifier" do - it "executes the tool with the given options" do - command = [TerminalNotifier::BIN_PATH, '-message', 'ZOMG'] - if RUBY_VERSION < '1.9' - require 'shellwords' - command = Shellwords.shelljoin(command) - end - IO.expects(:popen).with(command).yields(StringIO.new('output')) - TerminalNotifier.execute(false, :message => 'ZOMG') - end - - it "returns the result output of the command" do - TerminalNotifier.execute(false, 'help' => '').should == `'#{TerminalNotifier::BIN_PATH}' -help` - end - - it "sends a notification" do - TerminalNotifier.expects(:execute).with(false, :message => 'ZOMG', :group => 'important stuff') - TerminalNotifier.notify('ZOMG', :group => 'important stuff') - end - - it "removes a notification" do - TerminalNotifier.expects(:execute).with(false, :remove => 'important stuff') - TerminalNotifier.remove('important stuff') - end - - it "by default removes all the notifications" do - TerminalNotifier.expects(:execute).with(false, :remove => 'ALL') - TerminalNotifier.remove - end - - it "returns `nil` if no notification was found to list info for" do - TerminalNotifier.expects(:execute).with(false, :list => 'important stuff').returns('') - TerminalNotifier.list('important stuff').should == nil - end - - it "returns info about a notification posted in a specific group" do - TerminalNotifier.expects(:execute).with(false, :list => 'important stuff'). - returns("GroupID\tTitle\tSubtitle\tMessage\tDelivered At\n" \ - "important stuff\tTerminal\t(null)\tExecute: rake spec\t2012-08-06 19:45:30 +0000") - TerminalNotifier.list('important stuff').should == { - :group => 'important stuff', - :title => 'Terminal', :subtitle => nil, :message => 'Execute: rake spec', - :delivered_at => Time.parse('2012-08-06 19:45:30 +0000') - } - end - - it "by default returns a list of all notification" do - TerminalNotifier.expects(:execute).with(false, :list => 'ALL'). - returns("GroupID\tTitle\tSubtitle\tMessage\tDelivered At\n" \ - "important stuff\tTerminal\t(null)\tExecute: rake spec\t2012-08-06 19:45:30 +0000\n" \ - "(null)\t(null)\tSubtle\tBe subtle!\t2012-08-07 19:45:30 +0000") - TerminalNotifier.list.should == [ - { - :group => 'important stuff', - :title => 'Terminal', :subtitle => nil, :message => 'Execute: rake spec', - :delivered_at => Time.parse('2012-08-06 19:45:30 +0000') - }, - { - :group => nil, - :title => nil, :subtitle => 'Subtle', :message => 'Be subtle!', - :delivered_at => Time.parse('2012-08-07 19:45:30 +0000') - } - ] - end -end diff --git a/Ruby/terminal-notifier-guard.gemspec b/Ruby/terminal-notifier-guard.gemspec new file mode 100644 index 0000000..9abda22 --- /dev/null +++ b/Ruby/terminal-notifier-guard.gemspec @@ -0,0 +1,23 @@ +# -*- encoding: utf-8 -*- +plist = File.expand_path('../../Terminal Notifiers/notify/Terminal Notifier/Terminal Notifier-Info.plist', __FILE__) +version = `/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' '#{plist}'`.strip + +Gem::Specification.new do |gem| + gem.name = "terminal-notifier-guard" + gem.version = version + gem.summary = 'Send User Notifications on Mac OS X 10.8 - with status icons.' + gem.authors = ["Eloy Duran", "Wouter de Vos"] + gem.email = ["wouter.de.vos@springest.com"] + gem.homepage = 'https://github.com/foxycoder/terminal-notifier' + + gem.executables = ['terminal-notifier-notify', 'terminal-notifier-success', 'terminal-notifier-failed', 'terminal-notifier-pending'] + gem.files = ['lib/terminal-notifier-guard.rb'] + Dir.glob('lib/terminal_notifier/**/*') + Dir.glob('bin/terminal-notifier-*') + Dir.glob('vendor/terminal-notifier/**/*') + gem.require_paths = ['lib'] + + gem.extra_rdoc_files = ['README.markdown'] + + gem.add_development_dependency 'rake' + gem.add_development_dependency 'bacon' + gem.add_development_dependency 'mocha' + gem.add_development_dependency 'mocha-on-bacon' +end diff --git a/Ruby/terminal-notifier.gemspec b/Ruby/terminal-notifier.gemspec deleted file mode 100644 index f811d41..0000000 --- a/Ruby/terminal-notifier.gemspec +++ /dev/null @@ -1,22 +0,0 @@ -# -*- encoding: utf-8 -*- -plist = File.expand_path('../../Terminal Notifier/Terminal Notifier-Info.plist', __FILE__) -version = `/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' '#{plist}'`.strip - -Gem::Specification.new do |gem| - gem.name = "terminal-notifier" - gem.version = version - gem.summary = 'Send User Notifications on Mac OS X 10.8.' - gem.authors = ["Eloy Duran"] - gem.email = ["eloy.de.enige@gmail.com"] - gem.homepage = 'https://github.com/alloy/terminal-notifier' - - gem.executables = ['terminal-notifier'] - gem.files = ['bin/terminal-notifier', 'lib/terminal-notifier.rb'] + Dir.glob('vendor/terminal-notifier/**/*') - gem.require_paths = ['lib'] - - gem.extra_rdoc_files = ['README.markdown'] - - gem.add_development_dependency 'bacon' - gem.add_development_dependency 'mocha' - gem.add_development_dependency 'mocha-on-bacon' -end diff --git a/Terminal Notifiers/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/.DS_Stor b/Terminal Notifiers/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/pending/.DS_Stor deleted file mode 100644 index 43d89ef13a1280c5a09ce587ac738443a7ecc60d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!AiqG5Pe&VRP3Qg!Am~Cw)h93M7&59s&}=iwbC@9P0(Y$#$WIc1i_E;&F-ixkD#e24i#?}~Nf+1QMp}!Wb zj=#u&%v~L47;xrd&f8-CCYWXU^+_?yr;Itk1!jzz(zbDr6a{ko+{Q66v3}=CY@I8N z(PX`paUP5)ire|;s-tug*a=I`U&)?V}*pu5s<3lChADaSZqr72r? zucy8JII5--m!I7E!+8oDb}MGAY{h$2EA$7_Ach`GhxAbNAYf@w JqYV5i18+wsa9IEV