libnotify 0.5.1 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -1
- data/Rakefile +1 -16
- data/lib/libnotify/api.rb +22 -13
- data/lib/libnotify/ffi.rb +6 -2
- data/lib/libnotify/tasks/rubies.rake +44 -0
- data/lib/libnotify/version.rb +1 -1
- data/libnotify.gemspec +16 -3
- data/pkg/libnotify-0.5.3-universal-java-1.6.gem +0 -0
- data/pkg/libnotify-0.5.3-universal-rubinius-1.2.gem +0 -0
- data/pkg/libnotify-0.5.3-x86-linux.gem +0 -0
- data/test/helper.rb +1 -0
- data/test/libnotify_io.rb +36 -0
- metadata +13 -27
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
3
|
|
4
|
-
RUBIES = %w[ree 1.9.2 jruby]
|
5
|
-
|
6
4
|
require 'rake'
|
7
5
|
require 'rake/rdoctask'
|
8
6
|
require 'rubygems'
|
7
|
+
load 'libnotify/tasks/rubies.rake'
|
9
8
|
|
10
9
|
# Test
|
11
10
|
require 'rake/testtask'
|
@@ -17,20 +16,6 @@ Rake::TestTask.new(:test) do |test|
|
|
17
16
|
test.libs << 'test'
|
18
17
|
test.verbose = true
|
19
18
|
end
|
20
|
-
|
21
|
-
desc "Test with several ruby versions"
|
22
|
-
task :"test:rubies" do
|
23
|
-
command = "bundle check || bundle install && rake"
|
24
|
-
RUBIES.each do |ruby|
|
25
|
-
rvm = "#{ruby}@libnotify"
|
26
|
-
puts "\n" * 3
|
27
|
-
puts "RVM: #{rvm}"
|
28
|
-
puts "=" * 40
|
29
|
-
|
30
|
-
system %{rvm #{rvm} exec bash -c '#{command}'}
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
19
|
# Yard
|
35
20
|
begin
|
36
21
|
require 'yard'
|
data/lib/libnotify/api.rb
CHANGED
@@ -14,11 +14,27 @@ module Libnotify
|
|
14
14
|
end
|
15
15
|
|
16
16
|
self.icon_dirs = [
|
17
|
-
"/usr/share/icons/gnome
|
18
|
-
"/usr/share/icons/gnome
|
19
|
-
"/usr/share/icons/gnome/*/emblems"
|
17
|
+
"/usr/share/icons/gnome/*/emblems",
|
18
|
+
"/usr/share/icons/gnome/*/emotes"
|
20
19
|
]
|
21
20
|
|
21
|
+
# TODO refactor & test!
|
22
|
+
ICON_REGEX = /(\d+)x\d/
|
23
|
+
ICON_SORTER = proc do |a, b|
|
24
|
+
ma = a.scan ICON_REGEX
|
25
|
+
mb = b.scan ICON_REGEX
|
26
|
+
|
27
|
+
if ma.first && mb.first
|
28
|
+
mb.first.first.to_i <=> ma.first.first.to_i
|
29
|
+
elsif ma.first && !mb.first
|
30
|
+
1
|
31
|
+
elsif !ma.first && ma.first
|
32
|
+
-1
|
33
|
+
else
|
34
|
+
a <=> b
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
22
38
|
# Creates a notification object.
|
23
39
|
#
|
24
40
|
# @see Libnotify.new
|
@@ -42,7 +58,7 @@ module Libnotify
|
|
42
58
|
def show!
|
43
59
|
notify_init(self.class.to_s) or raise "notify_init failed"
|
44
60
|
notify = notify_notification_new(summary, body, icon_path, nil)
|
45
|
-
notify_notification_set_urgency(notify, urgency)
|
61
|
+
notify_notification_set_urgency(notify, lookup_urgency(urgency))
|
46
62
|
notify_notification_set_timeout(notify, timeout || -1)
|
47
63
|
if append
|
48
64
|
notify_notification_set_hint_string(notify, "x-canonical-append", "")
|
@@ -82,15 +98,8 @@ module Libnotify
|
|
82
98
|
when /^\// # absolute
|
83
99
|
@icon_path = path
|
84
100
|
when String
|
85
|
-
|
86
|
-
|
87
|
-
full_path = File.join(dir, path)
|
88
|
-
if File.exist?(full_path)
|
89
|
-
@icon_path = full_path
|
90
|
-
return
|
91
|
-
end
|
92
|
-
end
|
93
|
-
@icon_path = path
|
101
|
+
list = self.class.icon_dirs.map { |d| Dir[File.join(d, path)] }.flatten.sort(&ICON_SORTER)
|
102
|
+
@icon_path = list.detect { |full_path| File.exist?(full_path) } || path
|
94
103
|
when Symbol
|
95
104
|
self.icon_path = "#{path}.png"
|
96
105
|
else
|
data/lib/libnotify/ffi.rb
CHANGED
@@ -11,19 +11,23 @@ module Libnotify
|
|
11
11
|
warn e.message
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
URGENCY = [ :low, :normal, :critical ]
|
15
15
|
|
16
16
|
def self.attach_functions!
|
17
17
|
attach_function :notify_init, [:string], :bool
|
18
18
|
attach_function :notify_uninit, [], :void
|
19
19
|
attach_function :notify_notification_new, [:string, :string, :string, :pointer], :pointer
|
20
|
-
attach_function :notify_notification_set_urgency, [:pointer, :
|
20
|
+
attach_function :notify_notification_set_urgency, [:pointer, :int], :void
|
21
21
|
attach_function :notify_notification_set_timeout, [:pointer, :long], :void
|
22
22
|
attach_function :notify_notification_set_hint_string, [:pointer, :string, :string], :void
|
23
23
|
attach_function :notify_notification_clear_hints, [:pointer], :void
|
24
24
|
attach_function :notify_notification_show, [:pointer, :pointer], :bool
|
25
25
|
end
|
26
26
|
|
27
|
+
def lookup_urgency(urgency)
|
28
|
+
URGENCY.index(urgency)
|
29
|
+
end
|
30
|
+
|
27
31
|
def method_missing(method, *args, &block)
|
28
32
|
if method.to_s =~ /^notify_/
|
29
33
|
warn "libnotify.so not found!"
|
@@ -0,0 +1,44 @@
|
|
1
|
+
SUPPORTED_RUBIES = %w[ree 1.9.2 jruby rbx]
|
2
|
+
|
3
|
+
GEMSPEC = Bundler::GemHelper.new(Dir.pwd).gemspec
|
4
|
+
|
5
|
+
def with_rubies(command)
|
6
|
+
SUPPORTED_RUBIES.each do |ruby|
|
7
|
+
with_ruby(ruby, command)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def with_ruby(ruby, command)
|
12
|
+
rvm = "#{ruby}@#{GEMSPEC.name}"
|
13
|
+
command = %{rvm #{rvm} exec bash -c '#{command}'}
|
14
|
+
|
15
|
+
puts "\n" * 3
|
16
|
+
puts "CMD: #{command}"
|
17
|
+
puts "=" * 40
|
18
|
+
|
19
|
+
system command
|
20
|
+
end
|
21
|
+
|
22
|
+
namespace :rubies do
|
23
|
+
desc "Run tests for following supported platforms #{SUPPORTED_RUBIES.inspect}"
|
24
|
+
task :test do
|
25
|
+
command = "bundle check || bundle install && rake"
|
26
|
+
with_rubies(command)
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Build gems for following supported platforms #{SUPPORTED_RUBIES.inspect}"
|
30
|
+
task :build do
|
31
|
+
command = "rake build"
|
32
|
+
with_rubies(command)
|
33
|
+
end
|
34
|
+
|
35
|
+
desc "Pushes gems for following supported platforms #{SUPPORTED_RUBIES.inspect}"
|
36
|
+
task :push => :build do
|
37
|
+
Dir[File.join("pkg", "#{GEMSPEC.name}-#{GEMSPEC.version}*.gem")].each do |gem|
|
38
|
+
command = "gem push #{gem}"
|
39
|
+
puts command
|
40
|
+
system command
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/lib/libnotify/version.rb
CHANGED
data/libnotify.gemspec
CHANGED
@@ -2,10 +2,21 @@
|
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
3
|
require "libnotify"
|
4
4
|
|
5
|
+
platform = Gem::Platform::RUBY
|
6
|
+
needs_ffi = true
|
7
|
+
|
8
|
+
if RUBY_PLATFORM =~ /java/
|
9
|
+
needs_ffi = false
|
10
|
+
platform = "java"
|
11
|
+
elsif defined?(RUBY_ENGINE) && RUBY_ENGINE =~ /rbx/
|
12
|
+
needs_ffi = false
|
13
|
+
platform = Gem::Platform::new ['universal', 'rubinius', '1.2']
|
14
|
+
end
|
15
|
+
|
5
16
|
Gem::Specification.new do |s|
|
6
17
|
s.name = "libnotify"
|
7
18
|
s.version = Libnotify::VERSION
|
8
|
-
s.platform =
|
19
|
+
s.platform = platform
|
9
20
|
s.authors = ["Peter Suschlik"]
|
10
21
|
s.email = ["peter-libnotify@suschlik.de"]
|
11
22
|
s.homepage = "http://rubygems.org/gems/libnotify"
|
@@ -16,8 +27,10 @@ Gem::Specification.new do |s|
|
|
16
27
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
28
|
s.require_paths = ["lib"]
|
18
29
|
|
19
|
-
|
30
|
+
if needs_ffi
|
31
|
+
s.add_runtime_dependency 'ffi', '~> 1.0'
|
32
|
+
end
|
20
33
|
|
21
34
|
s.add_development_dependency 'minitest'
|
22
|
-
s.add_development_dependency 'yard'
|
35
|
+
s.add_development_dependency 'yard', '~> 0.7.0'
|
23
36
|
end
|
Binary file
|
Binary file
|
Binary file
|
data/test/helper.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
class LibnotifyIO
|
2
|
+
attr_reader :io, :libnotify
|
3
|
+
|
4
|
+
def initialize io
|
5
|
+
@io = io
|
6
|
+
@libnotify = begin
|
7
|
+
require 'libnotify'
|
8
|
+
Libnotify.new(:timeout => 2.5, :append => false)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def puts *o
|
13
|
+
if o.first =~ /(\d+) failures, (\d+) errors/
|
14
|
+
description = [ RUBY_ENGINE, RUBY_VERSION, RUBY_PLATFORM ].join(" ")
|
15
|
+
libnotify.body = o.first
|
16
|
+
if $1.to_i > 0 || $2.to_i > 0 # fail?
|
17
|
+
libnotify.summary = ":-( #{description}"
|
18
|
+
libnotify.urgency = :critical
|
19
|
+
libnotify.icon_path = "face-angry.*"
|
20
|
+
else
|
21
|
+
libnotify.summary += ":-) #{description}"
|
22
|
+
libnotify.urgency = :normal
|
23
|
+
libnotify.icon_path = "face-laugh.*"
|
24
|
+
end
|
25
|
+
libnotify.show!
|
26
|
+
else
|
27
|
+
io.puts *o
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def method_missing msg, *args
|
32
|
+
io.send(msg, *args)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
MiniTest::Unit.output = LibnotifyIO.new(MiniTest::Unit.output)
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libnotify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 9
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 1
|
10
|
-
version: 0.5.1
|
5
|
+
version: 0.5.4
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Peter Suschlik
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-24 00:00:00 +02:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
@@ -26,10 +21,6 @@ dependencies:
|
|
26
21
|
requirements:
|
27
22
|
- - ~>
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 15
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 0
|
33
24
|
version: "1.0"
|
34
25
|
type: :runtime
|
35
26
|
version_requirements: *id001
|
@@ -41,9 +32,6 @@ dependencies:
|
|
41
32
|
requirements:
|
42
33
|
- - ">="
|
43
34
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 3
|
45
|
-
segments:
|
46
|
-
- 0
|
47
35
|
version: "0"
|
48
36
|
type: :development
|
49
37
|
version_requirements: *id002
|
@@ -53,12 +41,9 @@ dependencies:
|
|
53
41
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
42
|
none: false
|
55
43
|
requirements:
|
56
|
-
- -
|
44
|
+
- - ~>
|
57
45
|
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
segments:
|
60
|
-
- 0
|
61
|
-
version: "0"
|
46
|
+
version: 0.7.0
|
62
47
|
type: :development
|
63
48
|
version_requirements: *id003
|
64
49
|
description:
|
@@ -80,10 +65,15 @@ files:
|
|
80
65
|
- lib/libnotify.rb
|
81
66
|
- lib/libnotify/api.rb
|
82
67
|
- lib/libnotify/ffi.rb
|
68
|
+
- lib/libnotify/tasks/rubies.rake
|
83
69
|
- lib/libnotify/version.rb
|
84
70
|
- libnotify.gemspec
|
85
71
|
- libnotify.png
|
72
|
+
- pkg/libnotify-0.5.3-universal-java-1.6.gem
|
73
|
+
- pkg/libnotify-0.5.3-universal-rubinius-1.2.gem
|
74
|
+
- pkg/libnotify-0.5.3-x86-linux.gem
|
86
75
|
- test/helper.rb
|
76
|
+
- test/libnotify_io.rb
|
87
77
|
- test/test_libnotify.rb
|
88
78
|
has_rdoc: true
|
89
79
|
homepage: http://rubygems.org/gems/libnotify
|
@@ -99,18 +89,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
89
|
requirements:
|
100
90
|
- - ">="
|
101
91
|
- !ruby/object:Gem::Version
|
102
|
-
hash: 3
|
103
|
-
segments:
|
104
|
-
- 0
|
105
92
|
version: "0"
|
106
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
94
|
none: false
|
108
95
|
requirements:
|
109
96
|
- - ">="
|
110
97
|
- !ruby/object:Gem::Version
|
111
|
-
hash: 3
|
112
|
-
segments:
|
113
|
-
- 0
|
114
98
|
version: "0"
|
115
99
|
requirements: []
|
116
100
|
|
@@ -119,5 +103,7 @@ rubygems_version: 1.6.2
|
|
119
103
|
signing_key:
|
120
104
|
specification_version: 3
|
121
105
|
summary: Ruby bindings for libnotify using FFI
|
122
|
-
test_files:
|
123
|
-
|
106
|
+
test_files:
|
107
|
+
- test/helper.rb
|
108
|
+
- test/libnotify_io.rb
|
109
|
+
- test/test_libnotify.rb
|