guard 1.0.0 → 1.0.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.
- data/CHANGELOG.md +17 -0
- data/README.md +50 -30
- data/bin/fsevent_watch_guard_guard +0 -0
- data/lib/guard.rb +44 -26
- data/lib/guard/cli.rb +23 -6
- data/lib/guard/dsl.rb +33 -15
- data/lib/guard/listener.rb +1 -1
- data/lib/guard/listeners/darwin.rb +1 -1
- data/lib/guard/notifier.rb +3 -1
- data/lib/guard/notifiers/notifysend.rb +81 -0
- data/lib/guard/version.rb +1 -1
- data/lib/guard/version.rbc +180 -0
- data/lib/vendor/darwin/README.rdoc +3 -2
- data/lib/vendor/darwin/bin/fsevent_watch +0 -0
- data/lib/vendor/darwin/ext/fsevent_watch/Info.plist +38 -0
- data/lib/vendor/darwin/ext/fsevent_watch/LICENSE +21 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch.xcodeproj/project.pbxproj +254 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/TSICTString.c +394 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/TSICTString.h +74 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/cli.c +160 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/cli.h +45 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/common.h +34 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/compat.c +20 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/compat.h +40 -0
- data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/main.c +509 -0
- data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/Common.xcconfig +82 -0
- data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/Debug.xcconfig +19 -0
- data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/Release.xcconfig +23 -0
- data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/fsevent_watch.xcconfig +17 -0
- data/lib/vendor/darwin/ext/rakefile.rb +47 -0
- data/lib/vendor/darwin/ext/rb-fsevent.xcconfig +33 -0
- data/lib/vendor/darwin/lib/rb-fsevent/version.rb +1 -1
- data/lib/vendor/darwin/rb-fsevent.gemspec +3 -2
- data/lib/vendor/darwin/spec/spec_helper.rb +1 -2
- metadata +40 -25
- data/lib/vendor/darwin/ext/extconf.rb +0 -64
- data/lib/vendor/darwin/ext/fsevent/fsevent_watch.c +0 -226
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
## Master
|
2
|
+
|
3
|
+
## 1.0.1 - 7 March, 2012
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
- [#236](https://github.com/guard/guard/pull/236) Add support for `notifysend`. ([@alandipert][])
|
8
|
+
- Update vendor/darwin to rb-fsevent 0.9.0. ([@thibaudgg][])
|
9
|
+
- [#249 & #250](https://github.com/guard/guard/issues/250) Fix programmatic examples that didn't work. ([@oreoshake][])
|
10
|
+
- [#238](https://github.com/guard/guard/issues/238) Don't try to load the FSEvents listener on older versions of OSX. ([@philomory][])
|
11
|
+
- [#233](https://github.com/guard/guard/issues/233) Guard::Listener.select_and_init requires hash. (reported by [@sunaku][], fixed by [@thibaudgg][])
|
12
|
+
- [#227 & #232](https://github.com/guard/guard/issues/232) Add the ability to initialize all guards at once. (proposed by [@rupert654][], done by [@Maher4Ever][])
|
13
|
+
|
1
14
|
## 1.0.0 - 19 January, 2012
|
2
15
|
|
3
16
|
### Improvements
|
@@ -385,6 +398,7 @@
|
|
385
398
|
- Improved listeners support (`rb-fsevent` & `rb-inotify`). ([@thibaudgg][])
|
386
399
|
- Added polling listening fallback. ([@thibaudgg][])
|
387
400
|
|
401
|
+
[@alandipert]: https://github.com/alandipert
|
388
402
|
[@anithri]: https://github.com/anithri
|
389
403
|
[@benolee]: https://github.com/benolee
|
390
404
|
[@brainopia]: https://github.com/brainopia
|
@@ -426,9 +440,12 @@
|
|
426
440
|
[@nicksieger]: https://github.com/nicksieger
|
427
441
|
[@niklas]: https://github.com/niklas
|
428
442
|
[@oliamb]: https://github.com/oliamb
|
443
|
+
[@oreoshake]: https://github.com/oreoshake
|
429
444
|
[@pcreux]: https://github.com/pcreux
|
445
|
+
[@philomory]: https://github.com/philomory
|
430
446
|
[@pirukire]: https://github.com/pirukire
|
431
447
|
[@rmm5t]: https://github.com/rmm5t
|
448
|
+
[@rupert654]: https://github.com/rupert654
|
432
449
|
[@rymai]: https://github.com/rymai
|
433
450
|
[@scottdavis]: https://github.com/scottdavis
|
434
451
|
[@semperos]: https://github.com/semperos
|
data/README.md
CHANGED
@@ -66,8 +66,31 @@ the time, try the [Rubygems Bundler](https://github.com/mpapis/rubygems-bundler)
|
|
66
66
|
You can configure Guard to make use of the following system notification libraries, but it's strongly recommended
|
67
67
|
to use either Ruby GNTP, Libnotify or Notifu:
|
68
68
|
|
69
|
+
#### Growl
|
70
|
+
|
71
|
+
* Runs on Mac OS X
|
72
|
+
* Supports all [Growl](http://growl.info/) versions
|
73
|
+
|
74
|
+
The [growl](https://rubygems.org/gems/growl) gem is compatible with all versions of Growl and uses a command line tool
|
75
|
+
[growlnotify](http://growl.info/extras.php#growlnotify) that must be separately downloaded and installed. The version of
|
76
|
+
the command line tool must match your Growl version. The `growl` gem does **not** support multiple notification
|
77
|
+
channels.
|
78
|
+
|
79
|
+
You have to download the installer for `growlnotify` from the [Growl download section](http://growl.info/downloads).
|
80
|
+
|
81
|
+
To use `growl` you have to add it to your `Gemfile` and run bundler:
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
group :development do
|
85
|
+
gem 'growl'
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
69
89
|
#### Ruby GNTP
|
70
90
|
|
91
|
+
**There's currently a bug in Growl that prevents displaying the icons through GNTP, see
|
92
|
+
[issue #231](https://github.com/guard/guard/issues/231). Use the growl gem until fixed.**
|
93
|
+
|
71
94
|
* Runs on Mac OS X, Linux and Windows
|
72
95
|
* Supports [Growl](http://growl.info/) version >= 1.3, [Growl for Linux](http://mattn.github.com/growl-for-linux/),
|
73
96
|
[Growl for Windows](http://www.growlforwindows.com/gfw/default.aspx) and
|
@@ -105,6 +128,10 @@ group :development do
|
|
105
128
|
end
|
106
129
|
```
|
107
130
|
|
131
|
+
If you are unable to build the `libnotify` gem on your system, Guard
|
132
|
+
also has a built in notifier - `notifysend` - that shells out to the
|
133
|
+
`notify-send` utility that comes with `libnotify-bin`.
|
134
|
+
|
108
135
|
#### Notifu
|
109
136
|
|
110
137
|
* Runs on Windows
|
@@ -120,26 +147,6 @@ group :development do
|
|
120
147
|
end
|
121
148
|
```
|
122
149
|
|
123
|
-
#### Growl
|
124
|
-
|
125
|
-
* Runs on Mac OS X
|
126
|
-
* Supports all [Growl](http://growl.info/) versions
|
127
|
-
|
128
|
-
The [growl](https://rubygems.org/gems/growl) gem is compatible with all versions of Growl and uses a command line tool
|
129
|
-
[growlnotify](http://growl.info/extras.php#growlnotify) that must be separately downloaded and installed. The version of
|
130
|
-
the command line tool must match your Growl version. The `growl` gem does **not** support multiple notification
|
131
|
-
channels.
|
132
|
-
|
133
|
-
You have to download the installer for `growlnotify` from the [Growl download section](http://growl.info/downloads).
|
134
|
-
|
135
|
-
To use `growl` you have to add it to your `Gemfile` and run bundler:
|
136
|
-
|
137
|
-
```ruby
|
138
|
-
group :development do
|
139
|
-
gem 'growl'
|
140
|
-
end
|
141
|
-
```
|
142
|
-
|
143
150
|
#### GrowlNotify
|
144
151
|
|
145
152
|
* Runs on Mac OS X
|
@@ -201,26 +208,41 @@ $ guard help start
|
|
201
208
|
|
202
209
|
### Init
|
203
210
|
|
204
|
-
You can generate
|
211
|
+
You can generate a Guardfile and have all installed guards be automatically added into
|
212
|
+
it by running the `init` task without any option:
|
205
213
|
|
206
214
|
```bash
|
207
215
|
$ guard init
|
208
216
|
```
|
209
217
|
|
210
|
-
|
211
|
-
|
218
|
+
You can also specify the name of an installed Guard to only get that Guard
|
219
|
+
in the generated Guardfile:
|
212
220
|
|
213
221
|
```bash
|
214
222
|
$ guard init <guard-name>
|
215
223
|
```
|
216
224
|
|
217
|
-
You can also define your own templates in `~/.guard/templates/` which can be appended in the same way to your existing
|
225
|
+
You can also define your own templates in `~/.guard/templates/` which can be appended in the same way to your existing
|
218
226
|
`Guardfile`:
|
219
227
|
|
220
228
|
```bash
|
221
229
|
$ guard init <template-name>
|
222
230
|
```
|
223
231
|
|
232
|
+
**Note**: If you already have a `Guardfile` in the current directory, the `init` task can be used
|
233
|
+
to append a supplied Guard template from an installed Guard to your existing
|
234
|
+
`Guardfile`.
|
235
|
+
|
236
|
+
#### `-b`/`--bare` option
|
237
|
+
|
238
|
+
You can generate an empty `Guardfile` by running the `init` task with the bare
|
239
|
+
option:
|
240
|
+
|
241
|
+
```bash
|
242
|
+
$ guard init --bare
|
243
|
+
$ guard init -b # shortcut
|
244
|
+
```
|
245
|
+
|
224
246
|
### Start
|
225
247
|
|
226
248
|
Just launch Guard inside your Ruby or Rails project with:
|
@@ -796,8 +818,7 @@ Evaluate a `Guardfile`:
|
|
796
818
|
require 'guard'
|
797
819
|
|
798
820
|
Guard.setup
|
799
|
-
Guard
|
800
|
-
Guard.start
|
821
|
+
Guard.start(:guardfile => '/path/to/Guardfile')
|
801
822
|
```
|
802
823
|
|
803
824
|
Evaluate a string as `Guardfile`:
|
@@ -813,8 +834,7 @@ guardfile = <<-EOF
|
|
813
834
|
end
|
814
835
|
EOF
|
815
836
|
|
816
|
-
Guard
|
817
|
-
Guard.start
|
837
|
+
Guard.start(:guardfile_contents => guardfile)
|
818
838
|
```
|
819
839
|
|
820
840
|
Issues
|
@@ -832,7 +852,7 @@ When you file an issue, please try to follow to these simple rules if applicable
|
|
832
852
|
* Add your `Guardfile` and `Gemfile` to the issue.
|
833
853
|
* Make sure that the issue is reproducible with your description.
|
834
854
|
|
835
|
-
Development [](https://gemnasium.com/guard/guard)
|
855
|
+
Development [](https://gemnasium.com/guard/guard)
|
836
856
|
-----------
|
837
857
|
|
838
858
|
* Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/guard/master/frames).
|
@@ -854,7 +874,7 @@ For questions please join us in our [Google group](http://groups.google.com/grou
|
|
854
874
|
Core Team
|
855
875
|
---------
|
856
876
|
|
857
|
-
* [Michael Kessler](https://github.com/netzpirat) ([@netzpirat](http://twitter.com/netzpirat))
|
877
|
+
* [Michael Kessler](https://github.com/netzpirat) ([@netzpirat](http://twitter.com/netzpirat)), sponsored by [mksoft.ch](https://mksoft.ch)
|
858
878
|
* [Rémy Coutable](https://github.com/rymai) ([@rymai](http://twitter.com/rymai))
|
859
879
|
* [Thibaud Guillaume-Gentil](https://github.com/thibaudgg) ([@thibaudgg](http://twitter.com/thibaudgg))
|
860
880
|
|
Binary file
|
data/lib/guard.rb
CHANGED
@@ -23,44 +23,62 @@ module Guard
|
|
23
23
|
class << self
|
24
24
|
attr_accessor :options, :interactor, :listener, :lock
|
25
25
|
|
26
|
-
# Creates the initial Guardfile template
|
27
|
-
#
|
26
|
+
# Creates the initial Guardfile template when it does not
|
27
|
+
# already exist.
|
28
28
|
#
|
29
|
-
# @see Guard::
|
29
|
+
# @see Guard::CLI.init
|
30
30
|
#
|
31
|
-
# @param [
|
31
|
+
# @param [Hash] options The options for creating a Guardfile
|
32
|
+
# @option options [Boolean] :abort_on_existence Whether to abort or not when a Guardfile already exists
|
32
33
|
#
|
33
|
-
def
|
34
|
+
def create_guardfile(options = {})
|
34
35
|
if !File.exist?('Guardfile')
|
35
36
|
::Guard::UI.info "Writing new Guardfile to #{ Dir.pwd }/Guardfile"
|
36
37
|
FileUtils.cp(GUARDFILE_TEMPLATE, 'Guardfile')
|
37
|
-
elsif
|
38
|
+
elsif options[:abort_on_existence]
|
38
39
|
::Guard::UI.error "Guardfile already exists at #{ Dir.pwd }/Guardfile"
|
39
|
-
|
40
|
+
abort
|
40
41
|
end
|
42
|
+
end
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
f.puts(content)
|
52
|
-
f.puts("")
|
53
|
-
f.puts(template)
|
54
|
-
end
|
44
|
+
# Adds the Guardfile template of a Guard implementation
|
45
|
+
# to an existing Guardfile.
|
46
|
+
#
|
47
|
+
# @see Guard::CLI.init
|
48
|
+
#
|
49
|
+
# @param [String] guard_name the name of the Guard or template to initialize
|
50
|
+
#
|
51
|
+
def initialize_template(guard_name)
|
52
|
+
guard_class = ::Guard.get_guard_class(guard_name, true)
|
55
53
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
54
|
+
if guard_class
|
55
|
+
guard_class.init(guard_name)
|
56
|
+
elsif File.exist?(File.join(HOME_TEMPLATES, guard_name))
|
57
|
+
content = File.read('Guardfile')
|
58
|
+
template = File.read(File.join(HOME_TEMPLATES, guard_name))
|
59
|
+
|
60
|
+
File.open('Guardfile', 'wb') do |f|
|
61
|
+
f.puts(content)
|
62
|
+
f.puts("")
|
63
|
+
f.puts(template)
|
60
64
|
end
|
65
|
+
|
66
|
+
::Guard::UI.info "#{ guard_name } template added to Guardfile, feel free to edit it"
|
67
|
+
else
|
68
|
+
const_name = guard_name.downcase.gsub('-', '')
|
69
|
+
UI.error "Could not load 'guard/#{ guard_name.downcase }' or '~/.guard/templates/#{ guard_name.downcase }' or find class Guard::#{ const_name.capitalize }"
|
61
70
|
end
|
62
71
|
end
|
63
72
|
|
73
|
+
# Adds the templates of all installed Guard implementations
|
74
|
+
# to an existing Guardfile.
|
75
|
+
#
|
76
|
+
# @see Guard::CLI.init
|
77
|
+
#
|
78
|
+
def initialize_all_templates
|
79
|
+
guard_gem_names.each {|g| initialize_template(g) }
|
80
|
+
end
|
81
|
+
|
64
82
|
# Initialize the Guard singleton:
|
65
83
|
#
|
66
84
|
# - Initialize the internal Guard state.
|
@@ -206,14 +224,14 @@ module Guard
|
|
206
224
|
# Stop Guard listening to file changes
|
207
225
|
#
|
208
226
|
def stop
|
209
|
-
UI.info 'Bye bye...', :reset => true
|
210
|
-
|
211
227
|
run_on_guards do |guard|
|
212
228
|
run_supervised_task(guard, :stop)
|
213
229
|
end
|
214
230
|
|
215
231
|
interactor.stop if interactor
|
216
232
|
listener.stop
|
233
|
+
|
234
|
+
UI.info 'Bye bye...', :reset => true
|
217
235
|
end
|
218
236
|
|
219
237
|
# Reload all Guards currently enabled.
|
data/lib/guard/cli.rb
CHANGED
@@ -102,18 +102,35 @@ module Guard
|
|
102
102
|
::Guard::UI.info "Guard version #{ ::Guard::VERSION }"
|
103
103
|
end
|
104
104
|
|
105
|
-
desc 'init [GUARD]', 'Generates a Guardfile at the current
|
105
|
+
desc 'init [GUARD]', 'Generates a Guardfile at the current directory (if it is not already there) and adds all installed guards or the given GUARD into it'
|
106
106
|
|
107
|
-
|
108
|
-
|
107
|
+
method_option :bare,
|
108
|
+
:type => :boolean,
|
109
|
+
:default => false,
|
110
|
+
:aliases => '-b',
|
111
|
+
:banner => 'Generate a bare Guardfile without adding any installed guard into it'
|
112
|
+
|
113
|
+
# Initializes the templates of all installed Guards and adds them
|
114
|
+
# to the `Guardfile` when no Guard name is passed. When passed
|
115
|
+
# a guard name is does the same but only for that Guard.
|
109
116
|
#
|
110
|
-
# @see Guard.initialize_template
|
117
|
+
# @see Guard::Guard.initialize_template
|
118
|
+
# @see Guard::Guard.initialize_all_templates
|
111
119
|
#
|
112
120
|
# @param [String] guard_name the name of the Guard to initialize
|
113
121
|
#
|
114
122
|
def init(guard_name = nil)
|
115
123
|
verify_bundler_presence
|
116
|
-
|
124
|
+
|
125
|
+
::Guard.create_guardfile(:abort_on_existence => options[:bare])
|
126
|
+
|
127
|
+
return if options[:bare]
|
128
|
+
|
129
|
+
if guard_name.nil?
|
130
|
+
::Guard::initialize_all_templates
|
131
|
+
else
|
132
|
+
::Guard.initialize_template(guard_name)
|
133
|
+
end
|
117
134
|
end
|
118
135
|
|
119
136
|
desc 'show', 'Show all defined Guards and their options'
|
@@ -135,7 +152,7 @@ module Guard
|
|
135
152
|
# shows a hint to do so if not.
|
136
153
|
#
|
137
154
|
def verify_bundler_presence
|
138
|
-
::Guard::UI.warning "You are using Guard outside of Bundler, this is dangerous and
|
155
|
+
::Guard::UI.warning "You are using Guard outside of Bundler, this is dangerous and may not work. Using `bundle exec guard` is safer." unless ENV['BUNDLE_GEMFILE']
|
139
156
|
end
|
140
157
|
|
141
158
|
end
|
data/lib/guard/dsl.rb
CHANGED
@@ -106,20 +106,40 @@ module Guard
|
|
106
106
|
#
|
107
107
|
def reevaluate_guardfile
|
108
108
|
::Guard.run do
|
109
|
-
|
110
|
-
::Guard.run_on_guards do |guard|
|
111
|
-
::Guard.run_supervised_task(guard, :stop)
|
112
|
-
end
|
113
|
-
::Guard.guards.clear
|
114
|
-
::Guard.reset_groups
|
115
|
-
::Guard::Notifier.clear_notifications
|
116
|
-
@@options.delete(:guardfile_contents)
|
109
|
+
before_reevaluate_guardfile
|
117
110
|
Dsl.evaluate_guardfile(@@options)
|
118
|
-
|
111
|
+
after_reevaluate_guardfile
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# Stop Guards and clear internal state
|
116
|
+
# before the Guardfile will be re-evaluated.
|
117
|
+
#
|
118
|
+
def before_reevaluate_guardfile
|
119
|
+
::Guard.run_on_guards do |guard|
|
120
|
+
::Guard.run_supervised_task(guard, :stop)
|
121
|
+
end
|
122
|
+
|
123
|
+
::Guard.guards.clear
|
124
|
+
::Guard.reset_groups
|
125
|
+
::Guard::Notifier.clear_notifications
|
126
|
+
|
127
|
+
@@options.delete(:guardfile_contents)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Start Guards and notification and show a message
|
131
|
+
# after the Guardfile has been re-evaluated.
|
132
|
+
#
|
133
|
+
def after_reevaluate_guardfile
|
134
|
+
::Guard::Notifier.turn_on if ::Guard::Notifier.enabled?
|
135
|
+
|
136
|
+
if ::Guard.guards.empty?
|
137
|
+
::Guard::Notifier.notify('No guards found in Guardfile, please add at least one.', :title => 'Guard re-evaluate', :image => :failed)
|
138
|
+
else
|
119
139
|
msg = 'Guardfile has been re-evaluated.'
|
120
|
-
UI.info(msg)
|
121
|
-
Notifier.notify(msg)
|
122
|
-
|
140
|
+
::Guard::UI.info(msg)
|
141
|
+
::Guard::Notifier.notify(msg, :title => 'Guard re-evaluate')
|
142
|
+
|
123
143
|
::Guard.run_on_guards do |guard|
|
124
144
|
::Guard.run_supervised_task(guard, :start)
|
125
145
|
end
|
@@ -134,7 +154,6 @@ module Guard
|
|
134
154
|
new.instance_eval(contents, @@options[:guardfile_path], 1)
|
135
155
|
rescue
|
136
156
|
UI.error "Invalid Guardfile, original error is:\n#{ $! }"
|
137
|
-
exit 1
|
138
157
|
end
|
139
158
|
|
140
159
|
# Test if the current `Guardfile` contains a specific Guard.
|
@@ -185,8 +204,7 @@ module Guard
|
|
185
204
|
end
|
186
205
|
|
187
206
|
unless guardfile_contents_usable?
|
188
|
-
UI.error
|
189
|
-
exit 1
|
207
|
+
UI.error 'No Guards found in Guardfile, please add at least one.'
|
190
208
|
end
|
191
209
|
end
|
192
210
|
|
data/lib/guard/listener.rb
CHANGED
@@ -32,7 +32,7 @@ module Guard
|
|
32
32
|
# @option options [String] watchdir the directory to watch
|
33
33
|
# @return [Guard::Listener] the chosen listener
|
34
34
|
#
|
35
|
-
def self.select_and_init(options =
|
35
|
+
def self.select_and_init(options = {})
|
36
36
|
watchdir = options && options[:watchdir] && File.expand_path(options[:watchdir])
|
37
37
|
watchdir = Dir.pwd unless watchdir
|
38
38
|
|
@@ -30,7 +30,7 @@ module Guard
|
|
30
30
|
# @return [Boolean] whether usable or not
|
31
31
|
#
|
32
32
|
def self.usable?(no_vendor = false)
|
33
|
-
return false unless RbConfig::CONFIG['target_os'] =~ /darwin/i
|
33
|
+
return false unless RbConfig::CONFIG['target_os'] =~ /darwin(9|1\d)/i
|
34
34
|
|
35
35
|
$LOAD_PATH << File.expand_path('../../../vendor/darwin/lib', __FILE__) unless no_vendor
|
36
36
|
require 'rb-fsevent'
|
data/lib/guard/notifier.rb
CHANGED
@@ -7,6 +7,7 @@ require 'guard/notifiers/gntp'
|
|
7
7
|
require 'guard/notifiers/growl'
|
8
8
|
require 'guard/notifiers/growl_notify'
|
9
9
|
require 'guard/notifiers/libnotify'
|
10
|
+
require 'guard/notifiers/notifysend'
|
10
11
|
require 'guard/notifiers/rb_notifu'
|
11
12
|
|
12
13
|
module Guard
|
@@ -47,6 +48,7 @@ module Guard
|
|
47
48
|
:growl => ::Guard::Notifier::Growl,
|
48
49
|
:growl_notify => ::Guard::Notifier::GrowlNotify,
|
49
50
|
:libnotify => ::Guard::Notifier::Libnotify,
|
51
|
+
:notifysend => ::Guard::Notifier::NotifySend,
|
50
52
|
:notifu => ::Guard::Notifier::Notifu
|
51
53
|
}
|
52
54
|
|
@@ -151,7 +153,7 @@ module Guard
|
|
151
153
|
# is available.
|
152
154
|
#
|
153
155
|
def auto_detect_notification
|
154
|
-
available = [:growl_notify, :gntp, :growl, :libnotify, :notifu].any? { |notifier| add_notification(notifier, { }, true) }
|
156
|
+
available = [:growl_notify, :gntp, :growl, :libnotify, :notifysend, :notifu].any? { |notifier| add_notification(notifier, { }, true) }
|
155
157
|
::Guard::UI.info('Guard could not detect any of the supported notification libraries.') unless available
|
156
158
|
end
|
157
159
|
|