growl 1.0.3

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,45 @@
1
+
2
+ === 1.0.3 / 2009-07-25
3
+
4
+ * Fixed Growl.installed? returns false when binary cannot be found [#1]
5
+
6
+ === 1.0.2 / 2009-04-19
7
+
8
+ * Added new gemspec
9
+ * Removed capitalized gemspec name causing build issues
10
+
11
+ === 1.0.1 / 2009-04-19
12
+
13
+ * Changed url for ticketing system
14
+
15
+ === 1.0.0 / 2009-04-13
16
+
17
+ * Added new examples
18
+ * Added growlnotify install docs [#3]
19
+ * Changed; Growl#notify now normalizes the :icon option key [#2] (checkout README)
20
+
21
+ === 0.0.6 / 2009-04-09
22
+
23
+ * Added #notify_{ok,info,warning,error} and images
24
+ * Added examples and updated docs
25
+ * Refactored Growl::Base.switch
26
+
27
+ === 0.0.5 / 2009-04-08
28
+
29
+ * Now returning nil when trying to instantiate Growl when not installed
30
+
31
+ === 0.0.4 / 2009-04-08
32
+
33
+ * We dont want visionmedia-Growl, shesh :p, fixed to lowercase
34
+
35
+ === 0.0.3 / 2009-04-08
36
+
37
+ * Added #Growl hash support
38
+
39
+ === 0.0.2 / 2009-04-08
40
+
41
+ * Github build me!!!
42
+
43
+ === 0.0.1 / 2009-04-08
44
+
45
+ * Initial release
@@ -0,0 +1,20 @@
1
+ examples/growl.rb
2
+ growl.gemspec
3
+ History.rdoc
4
+ lib/growl/growl.rb
5
+ lib/growl/images/error.png
6
+ lib/growl/images/info.png
7
+ lib/growl/images/ok.png
8
+ lib/growl/images/warning.png
9
+ lib/growl/version.rb
10
+ lib/growl.rb
11
+ Manifest
12
+ Rakefile
13
+ README.rdoc
14
+ spec/fixtures/icon.icns
15
+ spec/fixtures/image.png
16
+ spec/growl_spec.rb
17
+ spec/spec_helper.rb
18
+ tasks/docs.rake
19
+ tasks/gemspec.rake
20
+ tasks/spec.rake
@@ -0,0 +1,111 @@
1
+
2
+ = Growl
3
+
4
+ Ruby growlnotify 'bindings'.
5
+
6
+ == Examples
7
+
8
+ notification = Growl.new
9
+ notification.message = 'Hello World'
10
+ notification.sticky!
11
+ notification.icon = :jpeg
12
+ notification.run if Growl.installed?
13
+
14
+ # OR
15
+
16
+ Growl.notify {
17
+ self.message = 'Hello World'
18
+ self.icon = :jpeg
19
+ sticky!
20
+ }
21
+
22
+ # OR
23
+
24
+ Growl.notify do |n|
25
+ n.message = 'Hello World'
26
+ n.icon = :jpeg
27
+ n.stick!
28
+ end
29
+
30
+ # OR
31
+
32
+ Growl.notify 'Foo', :icon => :jpeg, :title => 'Growl'
33
+
34
+ # OR
35
+
36
+ include Growl
37
+ notify 'Email received', :sticky => true
38
+
39
+ # Convenience methods
40
+
41
+ notify_ok 'Deployment successful'
42
+ notify_info 'Email received'
43
+ notify_warning 'Merge required'
44
+ notify_error 'Failed to send email', :sticky => true
45
+
46
+ == Normaized Icons
47
+
48
+ The :icon option key is automatically normalized when you use any of the Growl#notify
49
+ methods, this removes the need to explicitly use :appIcon, :image, etc.
50
+
51
+ notify 'App icon', :icon => :Safari
52
+ notify 'Jpeg icon', :icon => :jpeg
53
+ notify 'Image icon', :icon => 'path/to/image.png'
54
+ notify 'Icns icon', :icon => 'path/to/icon.icns'
55
+ notify 'Path extname icon', :icon => 'foo.rb'
56
+
57
+ == Features
58
+
59
+ * Check availability with Growl.installed?
60
+ * Check dependencies with Growl.version
61
+ * Use images, icon paths, application icons, or file format icons
62
+ * Sticky a notification making it appear until explicitly closed
63
+ * Set notification priority
64
+ * Convenience methods such as notify_ok, notify_warning, notify_error, and notify_info
65
+ * Etc (consult growlnotify --help)
66
+
67
+ == Installing growlnotify
68
+
69
+ Visit http://growl.info/documentation.php for installation help.
70
+
71
+ == Known Issues
72
+
73
+ It seems that growlnotify will essentially ignore or block excessive usage
74
+ of the notifications at random. To prevent this you may need to do something like
75
+ below if you are calling many in sequence:
76
+
77
+ notify 'Something'; sleep 0.2
78
+ notify_ok 'Updated'; sleep 0.2
79
+ notify_info 'You have new mail'; sleep 0.2
80
+ notify_warning 'Merged required'; sleep 0.2
81
+ notify_error 'Oh Noes!'; sleep 0.2
82
+
83
+ == Contribute
84
+
85
+ Fork / send a pull request or submit a ticket at:
86
+ http://github.com/visionmedia/growl/issues
87
+
88
+ == License:
89
+
90
+ (The MIT License)
91
+
92
+ Copyright (c) 2009 TJ Holowaychuk <tj@vision-media.ca>
93
+
94
+ Permission is hereby granted, free of charge, to any person obtaining
95
+ a copy of this software and associated documentation files (the
96
+ 'Software'), to deal in the Software without restriction, including
97
+ without limitation the rights to use, copy, modify, merge, publish,
98
+ distribute, sublicense, an d/or sell copies of the Software, and to
99
+ permit persons to whom the Software is furnished to do so, subject to
100
+ the following conditions:
101
+
102
+ The above copyright notice and this permission notice shall be
103
+ included in all copies or substantial portions of the Software.
104
+
105
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
106
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
107
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
108
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
109
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
110
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
111
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,16 @@
1
+
2
+ $:.unshift 'lib'
3
+ require 'growl'
4
+ require 'rubygems'
5
+ require 'rake'
6
+ require 'echoe'
7
+
8
+ Echoe.new "growl", Growl::VERSION do |p|
9
+ p.author = "TJ Holowaychuk"
10
+ p.email = "tj@vision-media.ca"
11
+ p.summary = "growlnotify bindings"
12
+ p.url = "http://github.com/visionmedia/growl"
13
+ p.runtime_dependencies = []
14
+ end
15
+
16
+ Dir['tasks/**/*.rake'].sort.each { |f| load f }
@@ -0,0 +1,19 @@
1
+
2
+ $:.unshift File.dirname(__FILE__) + '/../lib'
3
+ require 'growl'
4
+
5
+ puts "growlnotify version #{Growl.version} installed"
6
+
7
+ imagepath = File.dirname(__FILE__) + '/../spec/fixtures/image.png'
8
+ iconpath = File.dirname(__FILE__) + '/../spec/fixtures/icon.icns'
9
+
10
+ include Growl
11
+
12
+ notify_info 'New email received', :sticky => true, :title => 'Some app'; sleep 0.2
13
+ notify_ok 'Deployment complete' ; sleep 0.2
14
+ notify_error 'Deployment failure' ; sleep 0.2
15
+ notify 'Safari icon', :icon => :Safari ; sleep 0.2
16
+ notify 'Jpeg icon', :icon => :jpeg ; sleep 0.2
17
+ notify 'Image icon', :icon => imagepath ; sleep 0.2
18
+ notify 'Icns icon', :icon => iconpath ; sleep 0.2
19
+ notify 'Path extname icon', :icon => 'foo.rb' ; sleep 0.2
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{growl}
5
+ s.version = "1.0.3"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["TJ Holowaychuk"]
9
+ s.date = %q{2009-07-25}
10
+ s.description = %q{growlnotify bindings}
11
+ s.email = %q{tj@vision-media.ca}
12
+ s.extra_rdoc_files = ["lib/growl/growl.rb", "lib/growl/images/error.png", "lib/growl/images/info.png", "lib/growl/images/ok.png", "lib/growl/images/warning.png", "lib/growl/version.rb", "lib/growl.rb", "README.rdoc", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
13
+ s.files = ["examples/growl.rb", "growl.gemspec", "History.rdoc", "lib/growl/growl.rb", "lib/growl/images/error.png", "lib/growl/images/info.png", "lib/growl/images/ok.png", "lib/growl/images/warning.png", "lib/growl/version.rb", "lib/growl.rb", "Manifest", "Rakefile", "README.rdoc", "spec/fixtures/icon.icns", "spec/fixtures/image.png", "spec/growl_spec.rb", "spec/spec_helper.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
14
+ s.homepage = %q{http://github.com/visionmedia/growl}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Growl", "--main", "README.rdoc"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{growl}
18
+ s.rubygems_version = %q{1.3.5}
19
+ s.summary = %q{growlnotify bindings}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ else
27
+ end
28
+ else
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ #--
2
+ # Copyright (c) 2009 TJ Holowaychuk <tj@vision-media.ca>
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require 'growl/version'
25
+ require 'growl/growl'
@@ -0,0 +1,202 @@
1
+
2
+ module Growl
3
+
4
+ BIN = 'growlnotify'
5
+
6
+ #--
7
+ # Exceptions
8
+ #++
9
+
10
+ class Error < StandardError; end
11
+
12
+ ##
13
+ # Display a growl notification +message+, with +options+
14
+ # documented below. Alternatively a +block+ may be passed
15
+ # which is then instance evaluated or yielded to the block.
16
+ #
17
+ # This method is simply returns nil when growlnotify
18
+ # is not installed, as growl notifications should never
19
+ # be the only means of communication between your application
20
+ # and your user.
21
+ #
22
+ # === Examples
23
+ #
24
+ # Growl.notify 'Hello'
25
+ # Growl.notify 'Hello', :title => 'TJ Says:', :sticky => true
26
+ # Growl.notify { |n| n.message = 'Hello'; n.sticky! }
27
+ # Growl.notify { self.message = 'Hello'; sticky! }
28
+ #
29
+
30
+ def notify message = nil, options = {}, &block
31
+ return unless Growl.installed?
32
+ options.merge! :message => message if message
33
+ Growl.normalize_icon! options
34
+ Growl.new(options, &block).run
35
+ end
36
+ module_function :notify
37
+
38
+ #--
39
+ # Generate notify_STATUS methods.
40
+ #++
41
+
42
+ %w( ok info warning error ).each do |type|
43
+ define_method :"notify_#{type}" do |message, *args|
44
+ options = args.first || {}
45
+ image = File.join File.expand_path(File.dirname(__FILE__)), 'images', "#{type}.png"
46
+ notify message, options.merge(:image => image)
47
+ end
48
+ module_function :"notify_#{type}"
49
+ end
50
+
51
+ ##
52
+ # Execute +args+ against the binary.
53
+
54
+ def self.exec *args
55
+ Kernel.system BIN, *args
56
+ end
57
+
58
+ ##
59
+ # Return the version triple of the binary.
60
+
61
+ def self.version
62
+ @version ||= `#{BIN} --version`.split[1]
63
+ end
64
+
65
+ ##
66
+ # Check if the binary is installed and accessable.
67
+
68
+ def self.installed?
69
+ version rescue false
70
+ end
71
+
72
+ ##
73
+ # Return an instance of Growl::Base or nil when not installed.
74
+
75
+ def self.new *args, &block
76
+ return unless installed?
77
+ Base.new *args, &block
78
+ end
79
+
80
+ ##
81
+ # Normalize the icon option in +options+. This performs
82
+ # the following operations in order to allow for the :icon
83
+ # key to work with a variety of values:
84
+ #
85
+ # * path to an icon sets :iconpath
86
+ # * path to an image sets :image
87
+ # * capitalized word sets :appIcon
88
+ # * filename uses extname as :icon
89
+ # * otherwise treated as :icon
90
+
91
+ def self.normalize_icon! options = {}
92
+ return unless options.include? :icon
93
+ icon = options.delete(:icon).to_s
94
+ if File.exists? icon
95
+ if File.extname(icon) == '.icns'
96
+ options[:iconpath] = icon
97
+ else
98
+ options[:image] = icon
99
+ end
100
+ else
101
+ if icon.capitalize == icon
102
+ options[:appIcon] = icon
103
+ elsif !(ext = File.extname(icon)).empty?
104
+ options[:icon] = ext[1..-1]
105
+ else
106
+ options[:icon] = icon
107
+ end
108
+ end
109
+ end
110
+
111
+ #--
112
+ # Growl base
113
+ #++
114
+
115
+ class Base
116
+ attr_reader :args
117
+
118
+ ##
119
+ # Initialize with optional +block+, which is then
120
+ # instance evaled or yielded depending on the blocks arity.
121
+
122
+ def initialize options = {}, &block
123
+ @args = []
124
+ if block_given?
125
+ if block.arity > 0
126
+ yield self
127
+ else
128
+ self.instance_eval &block
129
+ end
130
+ else
131
+ options.each do |key, value|
132
+ send :"#{key}=", value
133
+ end
134
+ end
135
+ end
136
+
137
+ ##
138
+ # Run the notification, only --message is required.
139
+
140
+ def run
141
+ raise Error, 'message required' unless message
142
+ self.class.switches.each do |switch|
143
+ if send(:"#{switch}?")
144
+ args << "--#{switch}"
145
+ args << send(switch).to_s if send(switch) && !(TrueClass === send(switch))
146
+ end
147
+ end
148
+ Growl.exec *args
149
+ end
150
+
151
+ ##
152
+ # Define a switch +name+.
153
+ #
154
+ # === examples
155
+ #
156
+ # switch :sticky
157
+ #
158
+ # @growl.sticky! # => true
159
+ # @growl.sticky? # => true
160
+ # @growl.sticky = false # => false
161
+ # @growl.sticky? # => false
162
+ #
163
+
164
+ def self.switch name
165
+ ivar = :"@#{name}"
166
+ (@switches ||= []) << name
167
+ attr_accessor :"#{name}"
168
+ define_method(:"#{name}?") { instance_variable_get(ivar) }
169
+ define_method(:"#{name}!") { instance_variable_set(ivar, true) }
170
+ end
171
+
172
+ ##
173
+ # Return array of available switch symbols.
174
+
175
+ def self.switches
176
+ @switches
177
+ end
178
+
179
+ #--
180
+ # Switches
181
+ #++
182
+
183
+ switch :title
184
+ switch :message
185
+ switch :sticky
186
+ switch :name
187
+ switch :appIcon
188
+ switch :icon
189
+ switch :iconpath
190
+ switch :image
191
+ switch :priority
192
+ switch :identifier
193
+ switch :host
194
+ switch :password
195
+ switch :udp
196
+ switch :port
197
+ switch :auth
198
+ switch :crypt
199
+
200
+ end
201
+
202
+ end
Binary file
Binary file
@@ -0,0 +1,4 @@
1
+
2
+ module Growl
3
+ VERSION = '1.0.3'
4
+ end
File without changes
Binary file
@@ -0,0 +1,119 @@
1
+
2
+ describe Growl do
3
+
4
+ describe "#installed?" do
5
+ it "should check if growlnotify is available" do
6
+ Growl.should be_installed
7
+ end
8
+ end
9
+
10
+ describe "#version" do
11
+ it "should return only the version triple" do
12
+ Growl.version.should match(/\d+\.\d+\.\d+/)
13
+ end
14
+ end
15
+
16
+ before :each do
17
+ @growl = Growl.new
18
+ @growl.message = 'Hello World'
19
+ end
20
+
21
+ describe "#notify" do
22
+ it "should accept a block, running immediately after" do
23
+ Growl.notify { |n| n.message = 'Invoked via Growl' }.should be_true
24
+ end
25
+
26
+ it "should accept a hash" do
27
+ Growl.notify('Invoked via Growl with hash', :icon => 'jpeg', :title => 'Growl').should be_true
28
+ end
29
+
30
+ it "should return nil when not installed" do
31
+ Growl.stub!(:installed?).and_return(false)
32
+ Growl.new.should be_nil
33
+ lambda { Growl.notify 'I should never show :)' }.should_not raise_error
34
+ end
35
+ end
36
+
37
+ %w( ok info warning error ).each do |type|
38
+ describe "#notify_#{type}" do
39
+ it "should display #{type} notifications" do
40
+ Growl.send(:"notify_#{type}", "Hello", :title => type).should be_true
41
+ end
42
+ end
43
+ end
44
+
45
+ describe "#run" do
46
+ it "should fail when no message is present" do
47
+ lambda { Growl.new.run }.should raise_error(Growl::Error, /message required/)
48
+ end
49
+
50
+ it "should execute a growl notification" do
51
+ @growl.run.should be_true
52
+ end
53
+ end
54
+
55
+ describe "#sticky!" do
56
+ it "should make a notification stick until explicitly closed" do
57
+ @growl.sticky = false
58
+ @growl.should_not be_sticky
59
+ @growl.sticky!
60
+ @growl.should be_sticky
61
+ @growl.message = 'Im Sticky'
62
+ @growl.run.should be_true
63
+ end
64
+ end
65
+
66
+ describe "#name" do
67
+ it "should set the application name" do
68
+ @growl.name = 'Ruby'
69
+ @growl.run.should be_true
70
+ end
71
+ end
72
+
73
+ describe "#title" do
74
+ it "should add a title" do
75
+ @growl.title = 'Im a title'
76
+ @growl.message = 'I am not a title'
77
+ @growl.run.should be_true
78
+ end
79
+ end
80
+
81
+ describe "#appIcon" do
82
+ it "should use an application for the icon" do
83
+ @growl.appIcon = 'Safari'
84
+ @growl.message = 'Safari icon'
85
+ @growl.run.should be_true
86
+ end
87
+ end
88
+
89
+ describe "#iconpath" do
90
+ it "should use a path for the icon" do
91
+ @growl.iconpath = fixture 'icon.icns'
92
+ @growl.message = 'Custom icon'
93
+ @growl.run.should be_true
94
+ end
95
+ end
96
+
97
+ describe "#icon" do
98
+ it "should use an icon based on a file type" do
99
+ @growl.icon = 'jpeg'
100
+ @growl.message = 'Jpeg Icon'
101
+ @growl.run.should be_true
102
+ end
103
+
104
+ it "should allow symbols" do
105
+ @growl.icon = :jpeg
106
+ @growl.message = 'Jpeg icon with symbol'
107
+ @growl.run.should be_true
108
+ end
109
+ end
110
+
111
+ describe "#image" do
112
+ it "should use an image path for the 'icon'" do
113
+ @growl.image = fixture 'image.png'
114
+ @growl.message = 'Image as icon'
115
+ @growl.run.should be_true
116
+ end
117
+ end
118
+
119
+ end
@@ -0,0 +1,6 @@
1
+
2
+ require 'growl'
3
+
4
+ def fixture path
5
+ File.expand_path File.join(File.dirname(__FILE__), 'fixtures', path)
6
+ end
@@ -0,0 +1,13 @@
1
+
2
+ namespace :docs do
3
+
4
+ desc 'Remove rdoc products'
5
+ task :remove => [:clobber_docs]
6
+
7
+ desc 'Build docs, and open in browser for viewing (specify BROWSER)'
8
+ task :open do
9
+ browser = ENV["BROWSER"] || "safari"
10
+ sh "open -a #{browser} doc/index.html"
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+
2
+ desc 'Build gemspec file'
3
+ task :gemspec => [:build_gemspec]
@@ -0,0 +1,25 @@
1
+
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all specifications"
5
+ Spec::Rake::SpecTask.new(:spec) do |t|
6
+ t.libs << "lib"
7
+ t.spec_opts = ["--color", "--require", "spec/spec_helper.rb"]
8
+ end
9
+
10
+ namespace :spec do
11
+
12
+ desc "Run all specifications verbosely"
13
+ Spec::Rake::SpecTask.new(:verbose) do |t|
14
+ t.libs << "lib"
15
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
16
+ end
17
+
18
+ desc "Run specific specification verbosely (specify SPEC)"
19
+ Spec::Rake::SpecTask.new(:select) do |t|
20
+ t.libs << "lib"
21
+ t.spec_files = [ENV["SPEC"]]
22
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
23
+ end
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: growl
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.3
5
+ platform: ruby
6
+ authors:
7
+ - TJ Holowaychuk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-25 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: growlnotify bindings
17
+ email: tj@vision-media.ca
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - lib/growl/growl.rb
24
+ - lib/growl/images/error.png
25
+ - lib/growl/images/info.png
26
+ - lib/growl/images/ok.png
27
+ - lib/growl/images/warning.png
28
+ - lib/growl/version.rb
29
+ - lib/growl.rb
30
+ - README.rdoc
31
+ - tasks/docs.rake
32
+ - tasks/gemspec.rake
33
+ - tasks/spec.rake
34
+ files:
35
+ - examples/growl.rb
36
+ - growl.gemspec
37
+ - History.rdoc
38
+ - lib/growl/growl.rb
39
+ - lib/growl/images/error.png
40
+ - lib/growl/images/info.png
41
+ - lib/growl/images/ok.png
42
+ - lib/growl/images/warning.png
43
+ - lib/growl/version.rb
44
+ - lib/growl.rb
45
+ - Manifest
46
+ - Rakefile
47
+ - README.rdoc
48
+ - spec/fixtures/icon.icns
49
+ - spec/fixtures/image.png
50
+ - spec/growl_spec.rb
51
+ - spec/spec_helper.rb
52
+ - tasks/docs.rake
53
+ - tasks/gemspec.rake
54
+ - tasks/spec.rake
55
+ has_rdoc: true
56
+ homepage: http://github.com/visionmedia/growl
57
+ licenses: []
58
+
59
+ post_install_message:
60
+ rdoc_options:
61
+ - --line-numbers
62
+ - --inline-source
63
+ - --title
64
+ - Growl
65
+ - --main
66
+ - README.rdoc
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "1.2"
80
+ version:
81
+ requirements: []
82
+
83
+ rubyforge_project: growl
84
+ rubygems_version: 1.3.5
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: growlnotify bindings
88
+ test_files: []
89
+