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.
@@ -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
@@ -0,0 +1,6 @@
1
+ $ͅ�=��J�/�aھ;�N
2
+ 6e*��
3
+ �L������$��3�.�
4
+ �+����YD� �,�v��_hrQ��V����7A
5
+ Є��w�۱�����S�{�zؑ>�x`7�~��:��Q��@
6
+ �C��(�9��.�Xy��51��@��}�bn��>���hӇ������ē��9>M�`Y����T��T���_�����բ�-1�i�_�g��!��t���?��6�J��4�0N�t��Ğ8��*�?
data.tar.gz.sig CHANGED
Binary file
@@ -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:
@@ -9,5 +9,6 @@ lib/ruby-growl/gntp.rb
9
9
  lib/ruby-growl/ruby_logo.rb
10
10
  lib/ruby-growl/udp.rb
11
11
  lib/uri/x_growl_resource.rb
12
+ test/rocketAlpha.jpg
12
13
  test/test_growl_gntp.rb
13
14
  test/test_growl_udp.rb
data/README.txt CHANGED
@@ -1,6 +1,8 @@
1
1
  = ruby-growl
2
2
 
3
- * http://ruby-growl.rubyforge.org/ruby-growl
3
+ home :: https://github.com/drbrain/ruby-growl
4
+ bugs :: https://github.com/drbrain/ruby-growl/issues
5
+ rdoc :: http://docs.seattlerb.org/ruby-growl
4
6
 
5
7
  == DESCRIPTION:
6
8
 
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
 
@@ -42,7 +42,7 @@ class Growl
42
42
  ##
43
43
  # ruby-growl version
44
44
 
45
- VERSION = '4.0'
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 |name, details|
300
- growl.add_notification name, *details
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 = @notifications.select do |name, (_, _, enabled)|
311
- enabled
312
- end.map do |name,|
313
- name
314
- end
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)
@@ -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
 
@@ -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 = UDPSocket.open
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
@@ -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 < MiniTest::Unit::TestCase
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', 'PNG', true
52
+ @gntp.add_notification 'test', 'Test Notification', @jpg_url, true
46
53
 
47
- expected = { 'test' => ['Test Notification', 'PNG', true] }
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' => 'PNG' }
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 'PNG', decrypted
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, 'PNG'
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: 3\r
678
+ Length: #{@jpg_url.size}\r
667
679
  \r
668
- PNG\r
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 = 'PNG'
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: 3\r
828
+ Length: #{@jpg_url.size}\r
817
829
  \r
818
- PNG\r
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, 'PNG'
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: 3\r
924
+ Length: #{@jpg_url.size}\r
913
925
  \r
914
- PNG\r
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
@@ -1,7 +1,7 @@
1
1
  require 'minitest/autorun'
2
2
  require 'ruby-growl'
3
3
 
4
- class TestGrowlUDP < MiniTest::Unit::TestCase
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
- hash: 27
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
- ZXQwHhcNMTIwMjI4MTc1NDI1WhcNMTMwMjI3MTc1NDI1WjBBMRAwDgYDVQQDDAdk
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
- 9w0BAQUFAAOCAQEAPeWzFnrcvC6eVzdlhmjUub2s6qieBkongKRDHQz5MEeQv4LS
32
- SARnoHY+uCAVL/1xGAhmpzqQ3fJGWK9eBacW/e8E5GF9xQcV3mE1bA0WNaiDlX5j
33
- U2aI+ZGSblqvHUCxKBHR1s7UMHsbz1saOmgdRTyPx0juJs68ocbUTeYBLWu9V4KP
34
- zdGAG2JXO2gONg3b4tYDvpBLbry+KOX27iAJulUaH9TiTOULL4ITJVFsK0mYVqmR
35
- Q8Tno9S3e4XGGP1ZWfLrTWEJbavFfhGHut2iMRwfC7s/YILAHNATopaJdH9DNpd1
36
- U81zGHMUBOvz/VGT6wJwYJ3emS2nfA2NOHFfgA==
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
- date: 2012-04-05 00:00:00 Z
40
- dependencies:
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
- prerelease: false
44
- requirement: &id001 !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
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
- requirement: &id002 !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 21
73
- segments:
74
- - 2
75
- - 11
76
- version: "2.11"
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
- requirement: &id003 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ~>
86
- - !ruby/object:Gem::Version
87
- hash: 19
88
- segments:
89
- - 3
90
- - 10
91
- version: "3.10"
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
- requirement: &id004 !ruby/object:Gem::Requirement
98
- none: false
99
- requirements:
100
- - - ~>
101
- - !ruby/object:Gem::Version
102
- hash: 35
103
- segments:
104
- - 2
105
- - 16
106
- version: "2.16"
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
- version_requirements: *id004
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
- - .gemtest
152
- homepage: http://ruby-growl.rubyforge.org/ruby-growl
153
- licenses: []
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
- none: false
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
- none: false
174
- requirements:
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
175
157
  - - ">="
176
- - !ruby/object:Gem::Version
177
- hash: 3
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: 1.8.21
162
+ rubygems_version: 2.2.2
185
163
  signing_key:
186
- specification_version: 3
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