ruby-growl 4.0 → 4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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