ruby-growl 4.0 → 4.1
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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +6 -0
- data.tar.gz.sig +0 -0
- data/History.txt +15 -0
- data/Manifest.txt +1 -0
- data/README.txt +3 -1
- data/Rakefile +6 -0
- data/lib/ruby-growl.rb +19 -15
- data/lib/ruby-growl/gntp.rb +2 -2
- data/lib/ruby-growl/udp.rb +21 -3
- data/test/rocketAlpha.jpg +0 -0
- data/test/test_growl_gntp.rb +28 -16
- data/test/test_growl_udp.rb +30 -1
- metadata +94 -116
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ace74aea0f8993d8945ae9236d0881141f28de92
|
4
|
+
data.tar.gz: ff42530f687b70a549b28313cb192ad752f28cd5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: da1f202b1bc196e9cb5660d2320b1a41117cc9327cdbe883c1719b5897082d030c7993a2927652486bd7842972d2048731316914eb5e89db66950a504083211c
|
7
|
+
data.tar.gz: 0a66507158e26f44abb146d0c3cd5e8cac4bb2d7d373e65926b2d6013d09a61b0fc25a7a456d839649d2267bc400576a3449554c978d30eaee8ae42a8dbe5b9d
|
checksums.yaml.gz.sig
ADDED
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
=== 4.1 / 2014-02-14
|
2
|
+
|
3
|
+
Enhancements:
|
4
|
+
|
5
|
+
* Support for HTTPS resources (NSImage icons). Pull request #10 by Barry
|
6
|
+
Allard.
|
7
|
+
* Added UDP growl broadcast support via the API only. This does not work with
|
8
|
+
growl 2.x as UDP support was removed. Issue #9 by Osborne Brook
|
9
|
+
Partnership.
|
10
|
+
|
11
|
+
Bug fixes:
|
12
|
+
|
13
|
+
* Fixed documentation link in README. Issue #7 by Robby Colvin.
|
14
|
+
* Fixed handling of UTF-8 messages with icon files. Issue #10 by kunigaku.
|
15
|
+
|
1
16
|
=== 4 / 2012-04-04
|
2
17
|
|
3
18
|
* API changes:
|
data/Manifest.txt
CHANGED
data/README.txt
CHANGED
data/Rakefile
CHANGED
@@ -10,6 +10,12 @@ Hoe.spec 'ruby-growl' do
|
|
10
10
|
|
11
11
|
spec_extras['required_ruby_version'] = '>= 1.9.2'
|
12
12
|
|
13
|
+
rdoc_locations << 'docs.seattlerb.org:/data/www/docs.seattlerb.org/ruby-growl/'
|
14
|
+
rdoc_locations << 'drbrain@rubyforge.org:/var/www/gforge-projects/ruby-growl/'
|
15
|
+
|
16
|
+
license 'BSD 3-clause'
|
17
|
+
|
13
18
|
extra_deps << ['uuid', '~> 2.3', '>= 2.3.5']
|
19
|
+
dependency 'minitest', '~> 5.0', :developer
|
14
20
|
end
|
15
21
|
|
data/lib/ruby-growl.rb
CHANGED
@@ -42,7 +42,7 @@ class Growl
|
|
42
42
|
##
|
43
43
|
# ruby-growl version
|
44
44
|
|
45
|
-
VERSION = '4.
|
45
|
+
VERSION = '4.1'
|
46
46
|
|
47
47
|
##
|
48
48
|
# Growl error base class
|
@@ -104,7 +104,7 @@ class Growl
|
|
104
104
|
notify_type = options[:notify_type]
|
105
105
|
|
106
106
|
g = new options[:host], options[:name]
|
107
|
-
g.add_notification notify_type
|
107
|
+
g.add_notification notify_type, options[:name], options[:icon]
|
108
108
|
g.password = options[:password]
|
109
109
|
|
110
110
|
g.notify(notify_type, options[:title], message, options[:priority],
|
@@ -119,6 +119,8 @@ class Growl
|
|
119
119
|
|
120
120
|
options = {
|
121
121
|
host: nil,
|
122
|
+
icon: nil,
|
123
|
+
list: false,
|
122
124
|
message: nil,
|
123
125
|
name: "ruby-growl",
|
124
126
|
notify_type: "ruby-growl Notification",
|
@@ -126,7 +128,6 @@ class Growl
|
|
126
128
|
priority: 0,
|
127
129
|
sticky: false,
|
128
130
|
title: "",
|
129
|
-
list: false,
|
130
131
|
}
|
131
132
|
|
132
133
|
opts = OptionParser.new do |o|
|
@@ -153,6 +154,10 @@ Synopsis:
|
|
153
154
|
options[:host] = val
|
154
155
|
end
|
155
156
|
|
157
|
+
o.on("-i", "--icon [ICON]", "Icon url") do |val|
|
158
|
+
options[:icon] = URI(val)
|
159
|
+
end
|
160
|
+
|
156
161
|
o.on("-n", "--name [NAME]", "Sending application name",
|
157
162
|
"(Defaults to \"ruby-growl\")") do |val|
|
158
163
|
options[:name] = val
|
@@ -279,10 +284,10 @@ Synopsis:
|
|
279
284
|
# Sends a notification of type +name+ with the given +title+, +message+,
|
280
285
|
# +priority+ and +sticky+ settings.
|
281
286
|
|
282
|
-
def notify name, title, message, priority = 0, sticky = false
|
287
|
+
def notify name, title, message, priority = 0, sticky = false, icon = nil
|
283
288
|
case @growl_type
|
284
289
|
when 'GNTP' then
|
285
|
-
notify_gntp name, title, message, priority, sticky
|
290
|
+
notify_gntp name, title, message, priority, sticky, icon
|
286
291
|
when 'UDP' then
|
287
292
|
notify_udp name, title, message, priority, sticky
|
288
293
|
else
|
@@ -292,12 +297,12 @@ Synopsis:
|
|
292
297
|
self
|
293
298
|
end
|
294
299
|
|
295
|
-
def notify_gntp name, title, message, priority, sticky # :nodoc:
|
300
|
+
def notify_gntp name, title, message, priority, sticky, icon = nil # :nodoc:
|
296
301
|
growl = Growl::GNTP.new @host, @application_name
|
297
302
|
growl.password = @password
|
298
303
|
|
299
|
-
@notifications.each do |
|
300
|
-
growl.add_notification
|
304
|
+
@notifications.each do |notification_name, details|
|
305
|
+
growl.add_notification notification_name, *details
|
301
306
|
end
|
302
307
|
|
303
308
|
growl.register
|
@@ -307,13 +312,12 @@ Synopsis:
|
|
307
312
|
|
308
313
|
def notify_udp name, title, message, priority, sticky # :nodoc:
|
309
314
|
all_notifications = @notifications.keys
|
310
|
-
default_notifications =
|
311
|
-
enabled
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
notification = all_notifications.first
|
315
|
+
default_notifications =
|
316
|
+
@notifications.select do |notification_name, (_, _, enabled)|
|
317
|
+
enabled
|
318
|
+
end.map do |notification_name,|
|
319
|
+
notification_name
|
320
|
+
end
|
317
321
|
|
318
322
|
growl = Growl::UDP.new(@host, @application_name, all_notifications,
|
319
323
|
default_notifications, @password)
|
data/lib/ruby-growl/gntp.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'digest'
|
2
|
+
require 'net/http'
|
2
3
|
require 'openssl'
|
3
4
|
require 'time'
|
4
5
|
require 'uri'
|
@@ -299,7 +300,7 @@ class Growl::GNTP
|
|
299
300
|
|
300
301
|
if @encrypt == 'NONE' then
|
301
302
|
packet << ["GNTP/1.0", type, "NONE", key_info].compact.join(' ')
|
302
|
-
packet << body
|
303
|
+
packet << body.force_encoding("ASCII-8BIT")
|
303
304
|
else
|
304
305
|
encipher, iv = cipher key
|
305
306
|
|
@@ -493,7 +494,6 @@ class Growl::GNTP
|
|
493
494
|
|
494
495
|
version = $1
|
495
496
|
message = $2
|
496
|
-
encryption = $3
|
497
497
|
|
498
498
|
raise Error, "invalid info line #{info.inspect}" unless version
|
499
499
|
|
data/lib/ruby-growl/udp.rb
CHANGED
@@ -119,9 +119,7 @@ class Growl::UDP
|
|
119
119
|
|
120
120
|
def initialize(host, app_name, all_notifies, default_notifies = nil,
|
121
121
|
password = nil)
|
122
|
-
@socket =
|
123
|
-
# FIXME This goes somewhere else
|
124
|
-
@socket.connect host, PORT
|
122
|
+
@socket = socket host
|
125
123
|
@app_name = app_name
|
126
124
|
@all_notifies = all_notifies
|
127
125
|
@default_notifies = default_notifies.nil? ? all_notifies : default_notifies
|
@@ -262,5 +260,25 @@ class Growl::UDP
|
|
262
260
|
@socket.setsockopt Socket::SOL_SOCKET, Socket::SO_SNDBUF, length
|
263
261
|
end
|
264
262
|
|
263
|
+
def socket host
|
264
|
+
addrinfo = Addrinfo.udp host, PORT
|
265
|
+
|
266
|
+
socket = Socket.new addrinfo.pfamily, addrinfo.socktype, addrinfo.protocol
|
267
|
+
|
268
|
+
if addrinfo.ip_address == '255.255.255.255' then
|
269
|
+
socket.setsockopt :SOL_SOCKET, :SO_BROADCAST, true
|
270
|
+
elsif Socket.respond_to?(:getifaddrs) and
|
271
|
+
Socket.getifaddrs.any? do |ifaddr|
|
272
|
+
ifaddr.broadaddr and
|
273
|
+
ifaddr.broadaddr.ip_address == addrinfo.ip_address
|
274
|
+
end then
|
275
|
+
socket.setsockopt :SOL_SOCKET, :SO_BROADCAST, true
|
276
|
+
end
|
277
|
+
|
278
|
+
socket.connect addrinfo
|
279
|
+
|
280
|
+
socket
|
281
|
+
end
|
282
|
+
|
265
283
|
end
|
266
284
|
|
Binary file
|
data/test/test_growl_gntp.rb
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'minitest/autorun'
|
4
4
|
require 'ruby-growl'
|
5
|
+
require 'ruby-growl/ruby_logo'
|
5
6
|
require 'stringio'
|
6
7
|
|
7
|
-
class TestGrowlGNTP <
|
8
|
+
class TestGrowlGNTP < Minitest::Test
|
8
9
|
|
9
10
|
class Socket
|
10
11
|
attr_reader :_input, :_output
|
@@ -39,12 +40,18 @@ class TestGrowlGNTP < MiniTest::Unit::TestCase
|
|
39
40
|
def setup
|
40
41
|
@gntp = Growl::GNTP.new 'localhost', 'test-app'
|
41
42
|
@gntp.uuid = UUID.new
|
43
|
+
|
44
|
+
rocket_path = File.join 'test', 'rocketAlpha.jpg'
|
45
|
+
rocket_path = File.expand_path rocket_path
|
46
|
+
|
47
|
+
@jpg_data = File.read rocket_path, mode: 'rb'
|
48
|
+
@jpg_url = "file://#{rocket_path}"
|
42
49
|
end
|
43
50
|
|
44
51
|
def test_add_notification
|
45
|
-
@gntp.add_notification 'test', 'Test Notification',
|
52
|
+
@gntp.add_notification 'test', 'Test Notification', @jpg_url, true
|
46
53
|
|
47
|
-
expected = { 'test' => ['Test Notification',
|
54
|
+
expected = { 'test' => ['Test Notification', @jpg_url, true] }
|
48
55
|
|
49
56
|
assert_equal expected, @gntp.notifications
|
50
57
|
end
|
@@ -445,7 +452,7 @@ Foo: bar\r
|
|
445
452
|
@gntp.encrypt = 'AES'
|
446
453
|
@gntp.password = 'password'
|
447
454
|
|
448
|
-
packet = @gntp.packet 'REGISTER', ["Foo: bar"], { 'icon' =>
|
455
|
+
packet = @gntp.packet 'REGISTER', ["Foo: bar"], { 'icon' => @jpg_data }
|
449
456
|
|
450
457
|
info, body = packet.split "\r\n", 2
|
451
458
|
|
@@ -495,7 +502,7 @@ Foo: bar\r
|
|
495
502
|
|
496
503
|
decrypted = decrypt cipher, key, iv, data
|
497
504
|
|
498
|
-
assert_equal
|
505
|
+
assert_equal @jpg_data, decrypted
|
499
506
|
end
|
500
507
|
|
501
508
|
def test_packet_hash
|
@@ -511,7 +518,6 @@ Foo: bar\r
|
|
511
518
|
|
512
519
|
key_info =~ /:(.*)\./
|
513
520
|
|
514
|
-
digest = $`
|
515
521
|
key_hash = $1
|
516
522
|
salt = $'
|
517
523
|
|
@@ -537,6 +543,12 @@ Foo: bar\r
|
|
537
543
|
assert_equal expected, body
|
538
544
|
end
|
539
545
|
|
546
|
+
def test_packet_icon_utf_8
|
547
|
+
packet = @gntp.packet 'REGISTER', ['Foo: π'], 1 => Growl::RUBY_LOGO_PNG
|
548
|
+
|
549
|
+
assert_equal Encoding::BINARY, packet.encoding
|
550
|
+
end
|
551
|
+
|
540
552
|
def test_packet_notify
|
541
553
|
expected = <<-EXPECTED
|
542
554
|
GNTP/1.0 NOTIFY NONE\r
|
@@ -647,7 +659,7 @@ Notification-Text: message\r
|
|
647
659
|
end
|
648
660
|
|
649
661
|
def test_packet_notify_icon
|
650
|
-
@gntp.add_notification 'test-note', nil,
|
662
|
+
@gntp.add_notification 'test-note', nil, @jpg_url
|
651
663
|
|
652
664
|
expected = <<-EXPECTED
|
653
665
|
GNTP/1.0 NOTIFY NONE\r
|
@@ -663,9 +675,9 @@ Notification-Title: title\r
|
|
663
675
|
Notification-Icon: x-growl-resource://4\r
|
664
676
|
\r
|
665
677
|
Identifier: 4\r
|
666
|
-
Length:
|
678
|
+
Length: #{@jpg_url.size}\r
|
667
679
|
\r
|
668
|
-
|
680
|
+
#{@jpg_url}\r
|
669
681
|
\r
|
670
682
|
\r
|
671
683
|
EXPECTED
|
@@ -796,7 +808,7 @@ Notification-Enabled: true\r
|
|
796
808
|
|
797
809
|
def test_packet_register_application_icon
|
798
810
|
@gntp.add_notification 'test-note'
|
799
|
-
@gntp.icon =
|
811
|
+
@gntp.icon = @jpg_url
|
800
812
|
|
801
813
|
expected = <<-EXPECTED
|
802
814
|
GNTP/1.0 REGISTER NONE\r
|
@@ -813,9 +825,9 @@ Notification-Name: test-note\r
|
|
813
825
|
Notification-Enabled: true\r
|
814
826
|
\r
|
815
827
|
Identifier: 4\r
|
816
|
-
Length:
|
828
|
+
Length: #{@jpg_url.size}\r
|
817
829
|
\r
|
818
|
-
|
830
|
+
#{@jpg_url}\r
|
819
831
|
\r
|
820
832
|
\r
|
821
833
|
EXPECTED
|
@@ -892,7 +904,7 @@ Notification-Enabled: true\r
|
|
892
904
|
end
|
893
905
|
|
894
906
|
def test_packet_register_notification_icon
|
895
|
-
@gntp.add_notification 'test-note', nil,
|
907
|
+
@gntp.add_notification 'test-note', nil, @jpg_url
|
896
908
|
|
897
909
|
expected = <<-EXPECTED
|
898
910
|
GNTP/1.0 REGISTER NONE\r
|
@@ -909,9 +921,9 @@ Notification-Enabled: true\r
|
|
909
921
|
Notification-Icon: x-growl-resource://4\r
|
910
922
|
\r
|
911
923
|
Identifier: 4\r
|
912
|
-
Length:
|
924
|
+
Length: #{@jpg_url.size}\r
|
913
925
|
\r
|
914
|
-
|
926
|
+
#{@jpg_url}\r
|
915
927
|
\r
|
916
928
|
\r
|
917
929
|
EXPECTED
|
@@ -977,7 +989,7 @@ Notification-Icon: http://example/icon.png\r
|
|
977
989
|
def test_parse_header_string
|
978
990
|
value = 'test'
|
979
991
|
value.encode! Encoding::BINARY
|
980
|
-
|
992
|
+
|
981
993
|
header = @gntp.parse_header('Application-Name', value)
|
982
994
|
assert_equal ['Application-Name', 'test'], header
|
983
995
|
assert_equal Encoding::UTF_8, header.last.encoding
|
data/test/test_growl_udp.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
2
|
require 'ruby-growl'
|
3
3
|
|
4
|
-
class TestGrowlUDP <
|
4
|
+
class TestGrowlUDP < Minitest::Test
|
5
5
|
|
6
6
|
def setup
|
7
7
|
@growl = Growl::UDP.new "localhost", "ruby-growl test",
|
@@ -202,6 +202,35 @@ class TestGrowlUDP < MiniTest::Unit::TestCase
|
|
202
202
|
assert_equal expected, util_hexes(packet)
|
203
203
|
end
|
204
204
|
|
205
|
+
def test_socket
|
206
|
+
@udp = Growl::UDP.allocate
|
207
|
+
|
208
|
+
socket = @udp.socket "localhost"
|
209
|
+
|
210
|
+
refute socket.getsockopt(:SOL_SOCKET, :SO_BROADCAST).bool
|
211
|
+
end
|
212
|
+
|
213
|
+
def test_socket_broadcast
|
214
|
+
@udp = Growl::UDP.allocate
|
215
|
+
|
216
|
+
socket = @udp.socket "255.255.255.255"
|
217
|
+
|
218
|
+
assert socket.getsockopt(:SOL_SOCKET, :SO_BROADCAST).bool
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_socket_subnet_broadcast
|
222
|
+
skip "Socket.getifaddrs not supported" unless
|
223
|
+
Socket.respond_to? :getifaddrs
|
224
|
+
|
225
|
+
ifaddr = Socket.getifaddrs.find { |ifaddr| ifaddr.broadaddr }
|
226
|
+
|
227
|
+
@udp = Growl::UDP.allocate
|
228
|
+
|
229
|
+
socket = @udp.socket ifaddr.broadaddr.ip_address
|
230
|
+
|
231
|
+
assert socket.getsockopt(:SOL_SOCKET, :SO_BROADCAST).bool
|
232
|
+
end
|
233
|
+
|
205
234
|
def util_hexes string
|
206
235
|
if string.respond_to? :ord then
|
207
236
|
string.scan(/./).map { |c| "%02x" % c.ord }
|
metadata
CHANGED
@@ -1,23 +1,18 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-growl
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 4
|
8
|
-
- 0
|
9
|
-
version: "4.0"
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '4.1'
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
6
|
+
authors:
|
12
7
|
- Eric Hodel
|
13
8
|
autorequire:
|
14
9
|
bindir: bin
|
15
|
-
cert_chain:
|
10
|
+
cert_chain:
|
16
11
|
- |
|
17
12
|
-----BEGIN CERTIFICATE-----
|
18
13
|
MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRAwDgYDVQQDDAdkcmJy
|
19
14
|
YWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZFgNu
|
20
|
-
|
15
|
+
ZXQwHhcNMTMwMjI4MDUyMjA4WhcNMTQwMjI4MDUyMjA4WjBBMRAwDgYDVQQDDAdk
|
21
16
|
cmJyYWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZ
|
22
17
|
FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbbgLrGLGIDE76
|
23
18
|
LV/cvxdEzCuYuS3oG9PrSZnuDweySUfdp/so0cDq+j8bqy6OzZSw07gdjwFMSd6J
|
@@ -28,114 +23,107 @@ cert_chain:
|
|
28
23
|
sCANiQ8BAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
29
24
|
BBS5k4Z75VSpdM0AclG2UvzFA/VW5DAfBgNVHREEGDAWgRRkcmJyYWluQHNlZ21l
|
30
25
|
bnQ3Lm5ldDAfBgNVHRIEGDAWgRRkcmJyYWluQHNlZ21lbnQ3Lm5ldDANBgkqhkiG
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
26
|
+
9w0BAQUFAAOCAQEAOflo4Md5aJF//EetzXIGZ2EI5PzKWX/mMpp7cxFyDcVPtTv0
|
27
|
+
js/6zWrWSbd60W9Kn4ch3nYiATFKhisgeYotDDz2/pb/x1ivJn4vEvs9kYKVvbF8
|
28
|
+
V7MV/O5HDW8Q0pA1SljI6GzcOgejtUMxZCyyyDdbUpyAMdt9UpqTZkZ5z1sicgQk
|
29
|
+
5o2XJ+OhceOIUVqVh1r6DNY5tLVaGJabtBmJAYFVznDcHiSFybGKBa5n25Egql1t
|
30
|
+
KDyY1VIazVgoC8XvR4h/95/iScPiuglzA+DBG1hip1xScAtw05BrXyUNrc9CEMYU
|
31
|
+
wgF94UVoHRp6ywo8I7NP3HcwFQDFNEZPNGXsng==
|
37
32
|
-----END CERTIFICATE-----
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
date: 2014-02-14 00:00:00.000000000 Z
|
34
|
+
dependencies:
|
35
|
+
- !ruby/object:Gem::Dependency
|
42
36
|
name: uuid
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
hash: 5
|
50
|
-
segments:
|
51
|
-
- 2
|
52
|
-
- 3
|
53
|
-
version: "2.3"
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '2.3'
|
54
42
|
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
hash: 9
|
57
|
-
segments:
|
58
|
-
- 2
|
59
|
-
- 3
|
60
|
-
- 5
|
43
|
+
- !ruby/object:Gem::Version
|
61
44
|
version: 2.3.5
|
62
45
|
type: :runtime
|
63
|
-
version_requirements: *id001
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: minitest
|
66
46
|
prerelease: false
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - "~>"
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '2.3'
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.3.5
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.2'
|
77
62
|
type: :development
|
78
|
-
version_requirements: *id002
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: rdoc
|
81
63
|
prerelease: false
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rdoc
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '4.0'
|
92
76
|
type: :development
|
93
|
-
version_requirements: *id003
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: hoe
|
96
77
|
prerelease: false
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: hoe
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.7'
|
107
90
|
type: :development
|
108
|
-
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.7'
|
109
97
|
description: |-
|
110
98
|
A pure-ruby growl notifier for UDP and GNTP growl protocols. ruby-growl
|
111
99
|
allows you to perform Growl notifications from machines without growl
|
112
100
|
installed (for example, non-OSX machines).
|
113
|
-
|
101
|
+
|
114
102
|
What is growl? Growl is a really cool "global notification system originally
|
115
103
|
for Mac OS X".
|
116
|
-
|
104
|
+
|
117
105
|
You can receive Growl notifications on various platforms and send them from
|
118
106
|
any machine that runs Ruby.
|
119
|
-
|
107
|
+
|
120
108
|
OS X: http://growl.info
|
121
109
|
Windows: http://www.growlforwindows.com/gfw/
|
122
110
|
Linux: http://github.com/mattn/growl-for-linux
|
123
|
-
|
111
|
+
|
124
112
|
ruby-growl also contains a command-line notification tool named 'growl'. It
|
125
113
|
is almost completely option-compatible with growlnotify. (All except for -p
|
126
114
|
is supported, use --priority instead.)
|
127
|
-
email:
|
115
|
+
email:
|
128
116
|
- drbrain@segment7.net
|
129
|
-
executables:
|
117
|
+
executables:
|
130
118
|
- growl
|
131
119
|
extensions: []
|
132
|
-
|
133
|
-
extra_rdoc_files:
|
120
|
+
extra_rdoc_files:
|
134
121
|
- History.txt
|
135
122
|
- Manifest.txt
|
136
123
|
- README.txt
|
137
|
-
files:
|
138
|
-
- .autotest
|
124
|
+
files:
|
125
|
+
- ".autotest"
|
126
|
+
- ".gemtest"
|
139
127
|
- History.txt
|
140
128
|
- Manifest.txt
|
141
129
|
- README.txt
|
@@ -146,45 +134,35 @@ files:
|
|
146
134
|
- lib/ruby-growl/ruby_logo.rb
|
147
135
|
- lib/ruby-growl/udp.rb
|
148
136
|
- lib/uri/x_growl_resource.rb
|
137
|
+
- test/rocketAlpha.jpg
|
149
138
|
- test/test_growl_gntp.rb
|
150
139
|
- test/test_growl_udp.rb
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
140
|
+
homepage: https://github.com/drbrain/ruby-growl
|
141
|
+
licenses:
|
142
|
+
- BSD 3-clause
|
143
|
+
metadata: {}
|
155
144
|
post_install_message:
|
156
|
-
rdoc_options:
|
157
|
-
- --main
|
145
|
+
rdoc_options:
|
146
|
+
- "--main"
|
158
147
|
- README.txt
|
159
|
-
require_paths:
|
148
|
+
require_paths:
|
160
149
|
- lib
|
161
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
162
|
-
|
163
|
-
requirements:
|
150
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
164
152
|
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
hash: 55
|
167
|
-
segments:
|
168
|
-
- 1
|
169
|
-
- 9
|
170
|
-
- 2
|
153
|
+
- !ruby/object:Gem::Version
|
171
154
|
version: 1.9.2
|
172
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
-
|
174
|
-
requirements:
|
155
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
175
157
|
- - ">="
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
|
178
|
-
segments:
|
179
|
-
- 0
|
180
|
-
version: "0"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
181
160
|
requirements: []
|
182
|
-
|
183
161
|
rubyforge_project: ruby-growl
|
184
|
-
rubygems_version:
|
162
|
+
rubygems_version: 2.2.2
|
185
163
|
signing_key:
|
186
|
-
specification_version:
|
164
|
+
specification_version: 4
|
187
165
|
summary: A pure-ruby growl notifier for UDP and GNTP growl protocols
|
188
|
-
test_files:
|
166
|
+
test_files:
|
189
167
|
- test/test_growl_gntp.rb
|
190
168
|
- test/test_growl_udp.rb
|
metadata.gz.sig
CHANGED
Binary file
|