guard 1.3.3 → 1.4.0
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 +6 -0
- data/README.md +49 -10
- data/lib/guard/notifier.rb +8 -3
- data/lib/guard/notifiers/emacs.rb +5 -5
- data/lib/guard/notifiers/growl_notify.rb +1 -1
- data/lib/guard/notifiers/notifysend.rb +1 -1
- data/lib/guard/notifiers/tmux.rb +69 -0
- data/lib/guard/version.rb +1 -1
- metadata +4 -3
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 1.4.0 - 26 September, 2012
|
2
|
+
|
3
|
+
- [#331][] Add tmux notifier. ([@royvandewater][])
|
4
|
+
|
1
5
|
## 1.3.3 - 20 September, 2012
|
2
6
|
|
3
7
|
- Add Guard application icon to GNTP notifier. ([@netzpirat][])
|
@@ -595,6 +599,7 @@ The Listen integration has been supervised by [@thibaudgg][] and executed by [@M
|
|
595
599
|
[#316]: https://github.com/guard/guard/issues/316
|
596
600
|
[#317]: https://github.com/guard/guard/issues/317
|
597
601
|
[#324]: https://github.com/guard/guard/issues/324
|
602
|
+
[#331]: https://github.com/guard/guard/issues/331
|
598
603
|
[@Gazer]: https://github.com/Gazer
|
599
604
|
[@Maher4Ever]: https://github.com/Maher4Ever
|
600
605
|
[@alandipert]: https://github.com/alandipert
|
@@ -648,6 +653,7 @@ The Listen integration has been supervised by [@thibaudgg][] and executed by [@M
|
|
648
653
|
[@philomory]: https://github.com/philomory
|
649
654
|
[@pirukire]: https://github.com/pirukire
|
650
655
|
[@rmm5t]: https://github.com/rmm5t
|
656
|
+
[@royvandewater]: https://github.com/royvandewater
|
651
657
|
[@rupert654]: https://github.com/rupert654
|
652
658
|
[@rymai]: https://github.com/rymai
|
653
659
|
[@scottdavis]: https://github.com/scottdavis
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Features
|
|
18
18
|
|
19
19
|
* File system changes handled by our awesome [Listen](https://github.com/guard/listen) gem.
|
20
20
|
* Support for visual system notifications.
|
21
|
-
* Huge eco-system with [more than
|
21
|
+
* Huge eco-system with [more than 150](https://rubygems.org/search?query=guard-) guard plugins.
|
22
22
|
* Tested against Ruby 1.8.7, 1.9.2, 1.9.3, REE and the latest versions of JRuby & Rubinius.
|
23
23
|
|
24
24
|
Screencast
|
@@ -52,17 +52,52 @@ Generate an empty `Guardfile` with:
|
|
52
52
|
$ guard init
|
53
53
|
```
|
54
54
|
|
55
|
-
|
56
|
-
[
|
55
|
+
**It's important that you always run Guard through Bundler to avoid errors.** If you're getting sick of typing `bundle exec` all
|
56
|
+
the time, try the [Rubygems Bundler](https://github.com/mpapis/rubygems-bundler).
|
57
|
+
|
58
|
+
## OS X
|
59
|
+
|
60
|
+
You may want to install the [rb-fsevent](https://github.com/thibaudgg/rb-fsevent) gem to make use of file change events
|
61
|
+
and don't rely on polling by adding the gem to your `Gemfile` and install it with Bundler:
|
57
62
|
|
58
63
|
```ruby
|
59
64
|
group :development do
|
60
|
-
gem '
|
65
|
+
gem 'rb-fsevent', :require => false
|
61
66
|
end
|
62
67
|
```
|
63
68
|
|
64
|
-
|
65
|
-
|
69
|
+
## Linux
|
70
|
+
|
71
|
+
You may want to install the [rb-inotify](https://github.com/nex3/rb-inotify) gem to make use of file change events and
|
72
|
+
don't rely on polling by adding the gem to your `Gemfile` and install it with Bundler:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
group :development do
|
76
|
+
gem 'rb-inotify', :require => false
|
77
|
+
end
|
78
|
+
```
|
79
|
+
|
80
|
+
## Windows
|
81
|
+
|
82
|
+
You may want to install the [wdm](https://github.com/Maher4Ever/wdm) gem to make use of file change events and don't
|
83
|
+
rely on polling by adding the gem to your `Gemfile` and install it with Bundler:
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
group :development do
|
87
|
+
gem 'wdm', :require => false
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
91
|
+
Please note that you have to use at least on Ruby 1.9.2 for using WDM.
|
92
|
+
|
93
|
+
If you want colors in your terminal, you'll have to add the [win32console](https://rubygems.org/gems/win32console) gem
|
94
|
+
to your `Gemfile` and install it with Bundler:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
group :development do
|
98
|
+
gem 'win32console'
|
99
|
+
end
|
100
|
+
```
|
66
101
|
|
67
102
|
### System notifications
|
68
103
|
|
@@ -169,10 +204,6 @@ group :development do
|
|
169
204
|
end
|
170
205
|
```
|
171
206
|
|
172
|
-
#### Emacs
|
173
|
-
|
174
|
-
* Runs on any platform with Emacs + emacsclient (http://www.emacswiki.org/emacs/EmacsClient)
|
175
|
-
|
176
207
|
#### Terminal Notifier
|
177
208
|
|
178
209
|
* Runs on Mac OS X 10.8 only
|
@@ -188,6 +219,14 @@ group :development do
|
|
188
219
|
end
|
189
220
|
```
|
190
221
|
|
222
|
+
#### Emacs
|
223
|
+
|
224
|
+
* Runs on any platform with Emacs + emacsclient (http://www.emacswiki.org/emacs/EmacsClient)
|
225
|
+
|
226
|
+
### Tmux
|
227
|
+
|
228
|
+
* To use Tmux notifications, you have to start Guard within a [tmux](http://tmux.sourceforge.net/) session.
|
229
|
+
|
191
230
|
Add Guard plugins
|
192
231
|
-----------------
|
193
232
|
|
data/lib/guard/notifier.rb
CHANGED
@@ -12,6 +12,9 @@ module Guard
|
|
12
12
|
# * GrowlNotify
|
13
13
|
# * Libnotify
|
14
14
|
# * rb-notifu
|
15
|
+
# * emacs
|
16
|
+
# * Terminal Notifier
|
17
|
+
# * Tmux
|
15
18
|
#
|
16
19
|
# Please see the documentation of each notifier for more information about the requirements
|
17
20
|
# and configuration possibilities.
|
@@ -43,6 +46,7 @@ module Guard
|
|
43
46
|
require 'guard/notifiers/rb_notifu'
|
44
47
|
require 'guard/notifiers/emacs'
|
45
48
|
require 'guard/notifiers/terminal_notifier'
|
49
|
+
require 'guard/notifiers/tmux'
|
46
50
|
|
47
51
|
extend self
|
48
52
|
|
@@ -56,7 +60,8 @@ module Guard
|
|
56
60
|
[:notifysend, ::Guard::Notifier::NotifySend],
|
57
61
|
[:notifu, ::Guard::Notifier::Notifu],
|
58
62
|
[:emacs, ::Guard::Notifier::Emacs],
|
59
|
-
[:terminal_notifier, ::Guard::Notifier::TerminalNotifier]
|
63
|
+
[:terminal_notifier, ::Guard::Notifier::TerminalNotifier],
|
64
|
+
[:tmux, ::Guard::Notifier::Tmux]
|
60
65
|
]
|
61
66
|
|
62
67
|
# Get the available notifications.
|
@@ -124,7 +129,7 @@ module Guard
|
|
124
129
|
return turn_off if name == :off
|
125
130
|
|
126
131
|
notifier = get_notifier_module(name)
|
127
|
-
|
132
|
+
|
128
133
|
if notifier && notifier.available?(silent)
|
129
134
|
self.notifications = notifications << { :name => name, :options => options }
|
130
135
|
true
|
@@ -166,7 +171,7 @@ module Guard
|
|
166
171
|
notifier = NOTIFIERS.detect { |n| n.first == name }
|
167
172
|
notifier ? notifier.last : notifier
|
168
173
|
end
|
169
|
-
|
174
|
+
|
170
175
|
# Auto detect the available notification library. This goes through
|
171
176
|
# the list of supported notification gems and picks the first that
|
172
177
|
# is available.
|
@@ -5,9 +5,9 @@ module Guard
|
|
5
5
|
|
6
6
|
# Default options for EmacsClient
|
7
7
|
DEFAULTS = {
|
8
|
-
:client
|
8
|
+
:client => 'emacsclient',
|
9
9
|
:success => 'ForestGreen',
|
10
|
-
:failed
|
10
|
+
:failed => 'Firebrick',
|
11
11
|
:default => 'Black',
|
12
12
|
}
|
13
13
|
|
@@ -25,9 +25,9 @@ module Guard
|
|
25
25
|
# @return [Boolean] the availability status
|
26
26
|
#
|
27
27
|
def available?(silent = false)
|
28
|
-
result = `#{DEFAULTS[:client]} --eval '1' 2> /dev/null || echo 'N/A'`
|
28
|
+
result = `#{ DEFAULTS[:client] } --eval '1' 2> /dev/null || echo 'N/A'`
|
29
29
|
|
30
|
-
if result.chomp! ==
|
30
|
+
if result.chomp! == 'N/A'
|
31
31
|
false
|
32
32
|
else
|
33
33
|
true
|
@@ -45,7 +45,7 @@ module Guard
|
|
45
45
|
# @option options [String, Integer] priority specify an int or named key (default is 0)
|
46
46
|
#
|
47
47
|
def notify(type, title, message, image, options = { })
|
48
|
-
system(%(#{DEFAULTS[:client]} --eval "(set-face-background 'modeline \\"#{emacs_color(type)}\\")"))
|
48
|
+
system(%(#{ DEFAULTS[:client] } --eval "(set-face-background 'modeline \\"#{ emacs_color(type) }\\")"))
|
49
49
|
end
|
50
50
|
|
51
51
|
# Get the Emacs color for the notification type.
|
@@ -41,7 +41,7 @@ module Guard
|
|
41
41
|
begin
|
42
42
|
if ::GrowlNotify.application_name != 'Guard'
|
43
43
|
::GrowlNotify.config do |c|
|
44
|
-
c.notifications =
|
44
|
+
c.notifications = %w(success pending failed notify)
|
45
45
|
c.default_notifications = 'notify'
|
46
46
|
c.application_name = 'Guard'
|
47
47
|
end
|
@@ -76,7 +76,7 @@ module Guard
|
|
76
76
|
#
|
77
77
|
def to_command_string(command, supported, options = {})
|
78
78
|
options.reduce(command) do |cmd, (flag, value)|
|
79
|
-
supported.include?(flag) ? cmd + " -#{flag} '#{value}'" : cmd
|
79
|
+
supported.include?(flag) ? cmd + " -#{ flag } '#{ value }'" : cmd
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Guard
|
2
|
+
module Notifier
|
3
|
+
|
4
|
+
# Default options for Tmux
|
5
|
+
|
6
|
+
# Changes the color of the Tmux status bar
|
7
|
+
#
|
8
|
+
# @example Add the `:tmux` notifier to your `Guardfile`
|
9
|
+
# notification :tmux
|
10
|
+
#
|
11
|
+
module Tmux
|
12
|
+
extend self
|
13
|
+
|
14
|
+
DEFAULTS = {
|
15
|
+
:client => 'tmux',
|
16
|
+
:tmux_environment => 'TMUX',
|
17
|
+
:success => 'green',
|
18
|
+
:failed => 'red',
|
19
|
+
:default => 'green'
|
20
|
+
}
|
21
|
+
|
22
|
+
# Test if currently running in a Tmux session
|
23
|
+
#
|
24
|
+
# @param [Boolean] silent true if no error messages should be shown
|
25
|
+
# @return [Boolean] the availability status
|
26
|
+
#
|
27
|
+
def available?(silent = false)
|
28
|
+
if ENV[DEFAULTS[:tmux_environment]].nil?
|
29
|
+
::Guard::UI.error 'The :tmux notifier runs only on when Guard is executed inside of a tmux session.' unless silent
|
30
|
+
false
|
31
|
+
else
|
32
|
+
true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Show a system notification.
|
37
|
+
#
|
38
|
+
# @param [String] type the notification type. Either 'success', 'pending', 'failed' or 'notify'
|
39
|
+
# @param [String] title the notification title
|
40
|
+
# @param [String] message the notification message body
|
41
|
+
# @param [String] image the path to the notification image
|
42
|
+
# @param [Hash] options additional notification library options
|
43
|
+
# @option options [Boolean] sticky make the notification sticky
|
44
|
+
# @option options [String, Integer] priority specify an int or named key (default is 0)
|
45
|
+
#
|
46
|
+
def notify(type, title, message, image, options = { })
|
47
|
+
color = tmux_color type, options
|
48
|
+
system("#{ DEFAULTS[:client] } set -g status-left-bg #{ color }")
|
49
|
+
end
|
50
|
+
|
51
|
+
# Get the Tmux color for the notification type.
|
52
|
+
# You can configure your own color by overwriting the defaults.
|
53
|
+
#
|
54
|
+
# @param [String] type the notification type
|
55
|
+
# @return [String] the name of the emacs color
|
56
|
+
#
|
57
|
+
def tmux_color(type, options = { })
|
58
|
+
case type
|
59
|
+
when 'success'
|
60
|
+
options[:success] || DEFAULTS[:success]
|
61
|
+
when 'failed'
|
62
|
+
options[:failed] || DEFAULTS[:failed]
|
63
|
+
else
|
64
|
+
options[:default] || DEFAULTS[:default]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/guard/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- lib/guard/notifiers/notifysend.rb
|
127
127
|
- lib/guard/notifiers/rb_notifu.rb
|
128
128
|
- lib/guard/notifiers/terminal_notifier.rb
|
129
|
+
- lib/guard/notifiers/tmux.rb
|
129
130
|
- lib/guard/runner.rb
|
130
131
|
- lib/guard/templates/Guardfile
|
131
132
|
- lib/guard/ui.rb
|
@@ -152,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
152
153
|
version: '0'
|
153
154
|
segments:
|
154
155
|
- 0
|
155
|
-
hash:
|
156
|
+
hash: 1379407495203457243
|
156
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
158
|
none: false
|
158
159
|
requirements:
|