guard 2.0.3 → 2.0.4
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/guard/dsl.rb +1 -1
- data/lib/guard/guardfile/evaluator.rb +55 -38
- data/lib/guard/notifier.rb +1 -1
- data/lib/guard/notifiers/base.rb +4 -4
- data/lib/guard/notifiers/emacs.rb +8 -2
- data/lib/guard/notifiers/file_notifier.rb +1 -2
- data/lib/guard/notifiers/gntp.rb +1 -2
- data/lib/guard/notifiers/growl.rb +19 -13
- data/lib/guard/notifiers/growl_notify.rb +27 -22
- data/lib/guard/notifiers/libnotify.rb +1 -2
- data/lib/guard/notifiers/notifysend.rb +30 -26
- data/lib/guard/notifiers/rb_notifu.rb +1 -2
- data/lib/guard/notifiers/terminal_notifier.rb +8 -4
- data/lib/guard/notifiers/tmux.rb +21 -4
- data/lib/guard/options.rb +3 -3
- data/lib/guard/plugin/base.rb +4 -4
- data/lib/guard/setuper.rb +10 -10
- data/lib/guard/ui.rb +6 -6
- data/lib/guard/version.rb +1 -1
- data/lib/guard/watcher.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efd4e83bdc08e364c81e2d39245a9148e72534ba
|
4
|
+
data.tar.gz: 38e624d192902e6ca16f3851c9ef77503be1defa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09f3d2477a9454d0d02499c77f6c62ff21f79ec113b4b38907c13f384ee884cbca53df241f41db39041d8f532f0afbc7014f5eddb29671c48ce305ae214e7d95
|
7
|
+
data.tar.gz: a31602bbbdea1643e9ebebe118e881aa1a899f895e3896013997914ace5ccae7c783b6598fbfdac8bec28abb2981d775ecb7927d94c35fd9b699033417e1c743
|
data/README.md
CHANGED
@@ -172,7 +172,7 @@ $ bundle exec guard -c # shortcut
|
|
172
172
|
You can add the following snippet to your `~/.guardrc` to have the clear option always be enabled:
|
173
173
|
|
174
174
|
```
|
175
|
-
Guard.options
|
175
|
+
Guard.options[:clear] = true
|
176
176
|
```
|
177
177
|
|
178
178
|
#### `-n`/`--notify` option
|
data/lib/guard/dsl.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'guard/options'
|
2
|
+
|
1
3
|
module Guard
|
2
4
|
module Guardfile
|
3
5
|
|
@@ -16,7 +18,7 @@ module Guard
|
|
16
18
|
# @option opts [String] guardfile_contents a string representing the content of a valid Guardfile
|
17
19
|
#
|
18
20
|
def initialize(opts = {})
|
19
|
-
@options = ::Guard::Options.new(
|
21
|
+
@options = ::Guard::Options.new(opts.select { |k, _| [:guardfile, :guardfile_contents].include?(k.to_sym) })
|
20
22
|
end
|
21
23
|
|
22
24
|
# Evaluates the DSL methods in the `Guardfile`.
|
@@ -84,7 +86,7 @@ module Guard
|
|
84
86
|
# the Guardfile has been specified via the `:guardfile_contents` option.
|
85
87
|
#
|
86
88
|
def guardfile_path
|
87
|
-
options
|
89
|
+
options[:guardfile_path] || ''
|
88
90
|
end
|
89
91
|
|
90
92
|
# Gets the content of the `Guardfile` concatenated with the global
|
@@ -103,21 +105,12 @@ module Guard
|
|
103
105
|
|
104
106
|
private
|
105
107
|
|
106
|
-
# Gets the default path of the `Guardfile`. This returns the `Guardfile`
|
107
|
-
# from the current directory when existing, or the global `~/.Guardfile`.
|
108
|
-
#
|
109
|
-
# @return [String] the path to the Guardfile
|
110
|
-
#
|
111
|
-
def _guardfile_default_path
|
112
|
-
File.exist?(_local_guardfile_path) ? _local_guardfile_path : _home_guardfile_path
|
113
|
-
end
|
114
|
-
|
115
108
|
# Gets the content of the `Guardfile`.
|
116
109
|
#
|
117
110
|
# @return [String] the Guardfile content
|
118
111
|
#
|
119
112
|
def _guardfile_contents_without_user_config
|
120
|
-
options
|
113
|
+
options[:guardfile_contents] || ''
|
121
114
|
end
|
122
115
|
|
123
116
|
# Evaluates the content of the `Guardfile`.
|
@@ -125,7 +118,7 @@ module Guard
|
|
125
118
|
# @param [String] contents the content to evaluate.
|
126
119
|
#
|
127
120
|
def _instance_eval_guardfile(contents)
|
128
|
-
::Guard::Dsl.new.instance_eval(contents, options
|
121
|
+
::Guard::Dsl.new.instance_eval(contents, options[:guardfile_path], 1)
|
129
122
|
rescue => ex
|
130
123
|
::Guard::UI.error "Invalid Guardfile, original error is:\n#{ $! }"
|
131
124
|
raise ex
|
@@ -135,40 +128,65 @@ module Guard
|
|
135
128
|
# the options as `:guardfile_contents`.
|
136
129
|
#
|
137
130
|
def _fetch_guardfile_contents
|
138
|
-
|
139
|
-
::Guard::UI.info 'Using inline Guardfile.'
|
140
|
-
options.guardfile_path = 'Inline Guardfile'
|
141
|
-
|
142
|
-
elsif options.guardfile
|
143
|
-
if File.exist?(options.guardfile)
|
144
|
-
_read_guardfile(options.guardfile)
|
145
|
-
::Guard::UI.info "Using Guardfile at #{ options.guardfile }."
|
146
|
-
else
|
147
|
-
::Guard::UI.error "No Guardfile exists at #{ options.guardfile }."
|
148
|
-
exit 1
|
149
|
-
end
|
131
|
+
_use_inline_guardfile || _use_provided_guardfile || _use_default_guardfile
|
150
132
|
|
133
|
+
unless _guardfile_contents_usable?
|
134
|
+
::Guard::UI.error 'No Guard plugins found in Guardfile, please add at least one.'
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# Use the provided inline Guardfile if provided.
|
139
|
+
#
|
140
|
+
def _use_inline_guardfile
|
141
|
+
return false unless options[:guardfile_contents]
|
142
|
+
|
143
|
+
::Guard::UI.info 'Using inline Guardfile.'
|
144
|
+
options[:guardfile_path] = 'Inline Guardfile'
|
145
|
+
end
|
146
|
+
|
147
|
+
# Try to use the provided Guardfile. Exits Guard if the Guardfile cannot
|
148
|
+
# be found.
|
149
|
+
#
|
150
|
+
def _use_provided_guardfile
|
151
|
+
return false unless options[:guardfile]
|
152
|
+
|
153
|
+
options[:guardfile] = File.expand_path(options[:guardfile])
|
154
|
+
if File.exist?(options[:guardfile])
|
155
|
+
_read_guardfile(options[:guardfile])
|
156
|
+
::Guard::UI.info "Using Guardfile at #{ options[:guardfile] }."
|
157
|
+
true
|
151
158
|
else
|
152
|
-
|
153
|
-
|
154
|
-
else
|
155
|
-
::Guard::UI.error 'No Guardfile found, please create one with `guard init`.'
|
156
|
-
exit 1
|
157
|
-
end
|
159
|
+
::Guard::UI.error "No Guardfile exists at #{ options[:guardfile] }."
|
160
|
+
exit 1
|
158
161
|
end
|
162
|
+
end
|
159
163
|
|
160
|
-
|
161
|
-
|
164
|
+
# Try to use one of the default Guardfiles (local or home Guardfile).
|
165
|
+
# Exits Guard if no Guardfile is found.
|
166
|
+
#
|
167
|
+
def _use_default_guardfile
|
168
|
+
if guardfile_path = _find_default_guardfile
|
169
|
+
_read_guardfile(guardfile_path)
|
170
|
+
else
|
171
|
+
::Guard::UI.error 'No Guardfile found, please create one with `guard init`.'
|
172
|
+
exit 1
|
162
173
|
end
|
163
174
|
end
|
164
175
|
|
176
|
+
# Returns the first default Guardfile (either local or home Guardfile)
|
177
|
+
# or nil otherwise.
|
178
|
+
#
|
179
|
+
def _find_default_guardfile
|
180
|
+
[_local_guardfile_path, _home_guardfile_path].find { |path| File.exist?(path) }
|
181
|
+
end
|
182
|
+
|
165
183
|
# Reads the current `Guardfile` content.
|
166
184
|
#
|
167
185
|
# @param [String] guardfile_path the path to the Guardfile
|
168
186
|
#
|
169
187
|
def _read_guardfile(guardfile_path)
|
170
|
-
options
|
171
|
-
options
|
188
|
+
options[:guardfile_path] = guardfile_path
|
189
|
+
options[:guardfile_contents] = File.read(guardfile_path)
|
172
190
|
rescue => ex
|
173
191
|
::Guard::UI.error ex.inspect
|
174
192
|
::Guard::UI.error("Error reading file #{ guardfile_path }")
|
@@ -182,9 +200,8 @@ module Guard
|
|
182
200
|
::Guard.runner.run(:stop)
|
183
201
|
::Guard.reset_groups
|
184
202
|
::Guard.reset_plugins
|
203
|
+
::Guard.reset_scope
|
185
204
|
::Guard::Notifier.clear_notifiers
|
186
|
-
|
187
|
-
options.guardfile_contents
|
188
205
|
end
|
189
206
|
|
190
207
|
# Starts Guard and notification and show a message
|
@@ -218,7 +235,7 @@ module Guard
|
|
218
235
|
# @return [String] the path to the local Guardfile
|
219
236
|
#
|
220
237
|
def _local_guardfile_path
|
221
|
-
File.join(Dir.pwd, 'Guardfile')
|
238
|
+
File.expand_path(File.join(Dir.pwd, 'Guardfile'))
|
222
239
|
end
|
223
240
|
|
224
241
|
# The path to the `.Guardfile` that is located at
|
data/lib/guard/notifier.rb
CHANGED
@@ -91,7 +91,7 @@ module Guard
|
|
91
91
|
# Guard auto detects the first available library.
|
92
92
|
#
|
93
93
|
def turn_on
|
94
|
-
_auto_detect_notification if notifiers.empty? && (!::Guard.options || ::Guard.options
|
94
|
+
_auto_detect_notification if notifiers.empty? && (!::Guard.options || ::Guard.options[:notify])
|
95
95
|
|
96
96
|
if notifiers.empty?
|
97
97
|
turn_off
|
data/lib/guard/notifiers/base.rb
CHANGED
@@ -43,13 +43,13 @@ module Guard
|
|
43
43
|
# @return [Boolean] the availability status
|
44
44
|
#
|
45
45
|
def self.available?(opts = {})
|
46
|
-
|
46
|
+
if _supported_host?
|
47
|
+
true
|
48
|
+
else
|
47
49
|
hosts = supported_hosts.map { |host| HOSTS[host.to_sym] }.join(', ')
|
48
50
|
::Guard::UI.error "The :#{name} notifier runs only on #{hosts}." unless opts.fetch(:silent) { false }
|
49
|
-
|
51
|
+
false
|
50
52
|
end
|
51
|
-
|
52
|
-
true
|
53
53
|
end
|
54
54
|
|
55
55
|
# This method must be overriden.
|
@@ -19,9 +19,15 @@ module Guard
|
|
19
19
|
}
|
20
20
|
|
21
21
|
def self.available?(opts = {})
|
22
|
-
super
|
23
|
-
|
22
|
+
super and _emacs_client_available?(opts)
|
23
|
+
end
|
24
24
|
|
25
|
+
# @private
|
26
|
+
#
|
27
|
+
# @return [Boolean] whether or not the emacs client is available
|
28
|
+
#
|
29
|
+
def self._emacs_client_available?(opts)
|
30
|
+
result = `#{opts.fetch(:client, DEFAULTS[:client])} --eval '1' 2> #{DEV_NULL} || echo 'N/A'`
|
25
31
|
!%w(N/A 'N/A').include?(result.chomp!)
|
26
32
|
end
|
27
33
|
|
data/lib/guard/notifiers/gntp.rb
CHANGED
@@ -43,8 +43,25 @@ module Guard
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def self.available?(opts = {})
|
46
|
-
super
|
47
|
-
|
46
|
+
super and require_gem_safely(opts) and _register!(opts)
|
47
|
+
end
|
48
|
+
|
49
|
+
# @private
|
50
|
+
#
|
51
|
+
# Detects if the Growl gem is available and if not, displays an
|
52
|
+
# error message unless `opts[:silent]` is true.
|
53
|
+
#
|
54
|
+
# @return [Boolean] whether or not Growl is installed
|
55
|
+
#
|
56
|
+
def self._register!(opts)
|
57
|
+
if ::Growl.installed?
|
58
|
+
true
|
59
|
+
else
|
60
|
+
unless opts[:silent]
|
61
|
+
::Guard::UI.error "Please install the 'growlnotify' executable (available by installing the 'growl' gem)."
|
62
|
+
end
|
63
|
+
false
|
64
|
+
end
|
48
65
|
end
|
49
66
|
|
50
67
|
# Shows a system notification.
|
@@ -80,17 +97,6 @@ module Guard
|
|
80
97
|
::Growl.notify(message, opts)
|
81
98
|
end
|
82
99
|
|
83
|
-
# @private
|
84
|
-
#
|
85
|
-
def self._register!(options)
|
86
|
-
unless ::Growl.installed?
|
87
|
-
::Guard::UI.error "Please install the 'growlnotify' executable." unless options[:silent]
|
88
|
-
return false
|
89
|
-
end
|
90
|
-
|
91
|
-
true
|
92
|
-
end
|
93
|
-
|
94
100
|
end
|
95
101
|
|
96
102
|
end
|
@@ -32,8 +32,33 @@ module Guard
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def self.available?(opts = {})
|
35
|
-
super
|
36
|
-
|
35
|
+
super and require_gem_safely(opts) and _register!(opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
# @private
|
39
|
+
#
|
40
|
+
# Detects if the GrowlNotify gem is available and if not, displays an
|
41
|
+
# error message unless `opts[:silent]` is true. If it's available,
|
42
|
+
# GrowlNotify is configured for Guard.
|
43
|
+
#
|
44
|
+
# @return [Boolean] whether or not GrowlNotify is available
|
45
|
+
#
|
46
|
+
def self._register!(options)
|
47
|
+
if ::GrowlNotify.application_name != 'Guard'
|
48
|
+
::GrowlNotify.config do |c|
|
49
|
+
c.notifications = %w(success pending failed notify)
|
50
|
+
c.default_notifications = 'notify'
|
51
|
+
c.application_name = 'Guard'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
true
|
56
|
+
|
57
|
+
rescue ::GrowlNotify::GrowlNotFound
|
58
|
+
unless options[:silent]
|
59
|
+
::Guard::UI.error 'Please install Growl from http://growl.info'
|
60
|
+
end
|
61
|
+
false
|
37
62
|
end
|
38
63
|
|
39
64
|
# Shows a system notification.
|
@@ -62,26 +87,6 @@ module Guard
|
|
62
87
|
::GrowlNotify.send_notification(opts)
|
63
88
|
end
|
64
89
|
|
65
|
-
# @private
|
66
|
-
#
|
67
|
-
def self._register!(options)
|
68
|
-
if ::GrowlNotify.application_name != 'Guard'
|
69
|
-
::GrowlNotify.config do |c|
|
70
|
-
c.notifications = %w(success pending failed notify)
|
71
|
-
c.default_notifications = 'notify'
|
72
|
-
c.application_name = 'Guard'
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
true
|
77
|
-
|
78
|
-
rescue ::GrowlNotify::GrowlNotFound
|
79
|
-
unless options[:silent]
|
80
|
-
::Guard::UI.error 'Please install Growl from http://growl.info'
|
81
|
-
end
|
82
|
-
false
|
83
|
-
end
|
84
|
-
|
85
90
|
end
|
86
91
|
|
87
92
|
end
|
@@ -25,8 +25,33 @@ module Guard
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.available?(opts = {})
|
28
|
-
super
|
29
|
-
|
28
|
+
super and _register!(opts)
|
29
|
+
end
|
30
|
+
|
31
|
+
# @private
|
32
|
+
#
|
33
|
+
# @return [Boolean] whether or not the notify-send binary is available
|
34
|
+
#
|
35
|
+
def self._notifysend_binary_available?
|
36
|
+
!`which notify-send`.empty?
|
37
|
+
end
|
38
|
+
|
39
|
+
# @private
|
40
|
+
#
|
41
|
+
# Detects if the notify-send binary is available and if not, displays an
|
42
|
+
# error message unless `opts[:silent]` is true.
|
43
|
+
#
|
44
|
+
# @return [Boolean] whether or not the notify-send binary is available
|
45
|
+
#
|
46
|
+
def self._register!(opts)
|
47
|
+
if _notifysend_binary_available?
|
48
|
+
true
|
49
|
+
else
|
50
|
+
unless opts[:silent]
|
51
|
+
::Guard::UI.error 'The :notifysend notifier runs only on Linux, FreeBSD, OpenBSD and Solaris with the libnotify-bin package installed.'
|
52
|
+
end
|
53
|
+
false
|
54
|
+
end
|
30
55
|
end
|
31
56
|
|
32
57
|
# Shows a system notification.
|
@@ -69,36 +94,15 @@ module Guard
|
|
69
94
|
#
|
70
95
|
# @param [String] command the command execute
|
71
96
|
# @param [Array] supported list of supported option flags
|
72
|
-
# @param [Hash]
|
97
|
+
# @param [Hash] opts additional command options
|
73
98
|
# @return [Array<String>] the command and its options converted to a shell command.
|
74
99
|
#
|
75
|
-
def _to_arguments(command, supported,
|
76
|
-
|
100
|
+
def _to_arguments(command, supported, opts = {})
|
101
|
+
opts.reduce(command) do |cmd, (flag, value)|
|
77
102
|
supported.include?(flag) ? (cmd << "-#{ flag }" << value.to_s) : cmd
|
78
103
|
end
|
79
104
|
end
|
80
105
|
|
81
|
-
# @private
|
82
|
-
#
|
83
|
-
# @return [Boolean] whether or not the notify-send binary is available
|
84
|
-
#
|
85
|
-
def self._notifysend_binary_available?
|
86
|
-
!`which notify-send`.empty?
|
87
|
-
end
|
88
|
-
|
89
|
-
# @private
|
90
|
-
#
|
91
|
-
def self._register!(options)
|
92
|
-
unless _notifysend_binary_available?
|
93
|
-
unless options[:silent]
|
94
|
-
::Guard::UI.error 'The :notifysend notifier runs only on Linux, FreeBSD, OpenBSD and Solaris with the libnotify-bin package installed.'
|
95
|
-
end
|
96
|
-
false
|
97
|
-
end
|
98
|
-
|
99
|
-
true
|
100
|
-
end
|
101
|
-
|
102
106
|
end
|
103
107
|
|
104
108
|
end
|
@@ -32,8 +32,7 @@ module Guard
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def self.available?(opts = {})
|
35
|
-
super
|
36
|
-
_register!(opts) if require_gem_safely(opts)
|
35
|
+
super and require_gem_safely(opts) and _register!(opts)
|
37
36
|
end
|
38
37
|
|
39
38
|
# Shows a system notification.
|
@@ -62,11 +61,16 @@ module Guard
|
|
62
61
|
|
63
62
|
# @private
|
64
63
|
#
|
65
|
-
|
64
|
+
# Detects if the terminal-notifier-guard gem is available and if not,
|
65
|
+
# displays an error message unless `opts[:silent]` is true.
|
66
|
+
#
|
67
|
+
# @return [Boolean] whether or not the terminal-notifier-guard gem is available
|
68
|
+
#
|
69
|
+
def self._register!(opts)
|
66
70
|
if ::TerminalNotifier::Guard.available?
|
67
71
|
true
|
68
72
|
else
|
69
|
-
unless
|
73
|
+
unless opts[:silent]
|
70
74
|
::Guard::UI.error 'The :terminal_notifier only runs on Mac OS X 10.8 and later.'
|
71
75
|
end
|
72
76
|
false
|
data/lib/guard/notifiers/tmux.rb
CHANGED
@@ -35,15 +35,32 @@ module Guard
|
|
35
35
|
}
|
36
36
|
|
37
37
|
def self.available?(opts = {})
|
38
|
-
super
|
38
|
+
super and _register!(opts)
|
39
|
+
end
|
39
40
|
|
40
|
-
|
41
|
+
# @private
|
42
|
+
#
|
43
|
+
# @return [Boolean] whether or not a TMUX environment is available
|
44
|
+
#
|
45
|
+
def self._tmux_environment_available?(opts)
|
46
|
+
!ENV[opts.fetch(:tmux_environment, DEFAULTS[:tmux_environment])].nil?
|
47
|
+
end
|
48
|
+
|
49
|
+
# @private
|
50
|
+
#
|
51
|
+
# Detects if a TMUX environment is available and if not,
|
52
|
+
# displays an error message unless `opts[:silent]` is true.
|
53
|
+
#
|
54
|
+
# @return [Boolean] whether or not a TMUX environment is available
|
55
|
+
#
|
56
|
+
def self._register!(opts)
|
57
|
+
if _tmux_environment_available?(opts)
|
58
|
+
true
|
59
|
+
else
|
41
60
|
unless opts[:silent]
|
42
61
|
::Guard::UI.error 'The :tmux notifier runs only on when Guard is executed inside of a tmux session.'
|
43
62
|
end
|
44
63
|
false
|
45
|
-
else
|
46
|
-
true
|
47
64
|
end
|
48
65
|
end
|
49
66
|
|
data/lib/guard/options.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require '
|
1
|
+
require 'thor/core_ext/hash_with_indifferent_access'
|
2
2
|
|
3
3
|
module Guard
|
4
4
|
|
5
5
|
# A class that holds options. Can be instantiated with default options.
|
6
6
|
#
|
7
|
-
class Options <
|
7
|
+
class Options < Thor::CoreExt::HashWithIndifferentAccess
|
8
8
|
|
9
9
|
# Initializes an Guard::Options object. `default_opts` is merged into
|
10
10
|
# `opts`.
|
@@ -13,7 +13,7 @@ module Guard
|
|
13
13
|
# @param [Hash] default_opts the default options
|
14
14
|
#
|
15
15
|
def initialize(opts = {}, default_opts = {})
|
16
|
-
super(default_opts.
|
16
|
+
super(default_opts.merge(opts || {}))
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
data/lib/guard/plugin/base.rb
CHANGED
@@ -123,8 +123,8 @@ module Guard
|
|
123
123
|
# Returns the plugin's name (without "guard-").
|
124
124
|
#
|
125
125
|
# @example Name for Guard::RSpec
|
126
|
-
#
|
127
|
-
#
|
126
|
+
# Guard::RSpec.new.name
|
127
|
+
# #=> "rspec"
|
128
128
|
#
|
129
129
|
# @return [String]
|
130
130
|
#
|
@@ -135,8 +135,8 @@ module Guard
|
|
135
135
|
# Returns the plugin's class name without the Guard:: namespace.
|
136
136
|
#
|
137
137
|
# @example Title for Guard::RSpec
|
138
|
-
#
|
139
|
-
#
|
138
|
+
# Guard::RSpec.new.title
|
139
|
+
# #=> "RSpec"
|
140
140
|
#
|
141
141
|
# @return [String]
|
142
142
|
#
|
data/lib/guard/setuper.rb
CHANGED
@@ -45,13 +45,13 @@ module Guard
|
|
45
45
|
@watchdirs = [Dir.pwd]
|
46
46
|
@runner = ::Guard::Runner.new
|
47
47
|
|
48
|
-
if options
|
48
|
+
if options[:watchdir]
|
49
49
|
# Ensure we have an array
|
50
|
-
@watchdirs = Array(options
|
50
|
+
@watchdirs = Array(options[:watchdir]).map { |dir| File.expand_path dir }
|
51
51
|
end
|
52
52
|
|
53
53
|
::Guard::UI.clear(force: true)
|
54
|
-
_setup_debug if options
|
54
|
+
_setup_debug if options[:debug]
|
55
55
|
_setup_listener
|
56
56
|
_setup_signal_traps
|
57
57
|
|
@@ -61,7 +61,7 @@ module Guard
|
|
61
61
|
|
62
62
|
evaluate_guardfile
|
63
63
|
|
64
|
-
setup_scope(groups: options
|
64
|
+
setup_scope(groups: options[:group], plugins: options[:plugin])
|
65
65
|
|
66
66
|
_setup_notifier
|
67
67
|
|
@@ -71,7 +71,7 @@ module Guard
|
|
71
71
|
# Lazy initializer for Guard's options hash
|
72
72
|
#
|
73
73
|
def options
|
74
|
-
@options ||= ::Guard::Options.new(@opts
|
74
|
+
@options ||= ::Guard::Options.new(@opts, DEFAULT_OPTIONS)
|
75
75
|
end
|
76
76
|
|
77
77
|
# Lazy initializer for Guardfile evaluator
|
@@ -83,7 +83,7 @@ module Guard
|
|
83
83
|
# Lazy initializer the interactor unless the user has specified not to.
|
84
84
|
#
|
85
85
|
def interactor
|
86
|
-
return if options
|
86
|
+
return if options[:no_interactions] || !::Guard::Interactor.enabled
|
87
87
|
|
88
88
|
@interactor ||= ::Guard::Interactor.new
|
89
89
|
end
|
@@ -163,7 +163,7 @@ module Guard
|
|
163
163
|
#
|
164
164
|
def _setup_debug
|
165
165
|
Thread.abort_on_exception = true
|
166
|
-
::Guard::UI.options
|
166
|
+
::Guard::UI.options[:level] = :debug
|
167
167
|
_debug_command_execution
|
168
168
|
end
|
169
169
|
|
@@ -191,8 +191,8 @@ module Guard
|
|
191
191
|
end
|
192
192
|
|
193
193
|
listener_options = {}
|
194
|
-
|
195
|
-
listener_options[option
|
194
|
+
[:latency, :force_polling].each do |option|
|
195
|
+
listener_options[option] = options[option] if options[option]
|
196
196
|
end
|
197
197
|
|
198
198
|
listen_args = @watchdirs + [listener_options]
|
@@ -231,7 +231,7 @@ module Guard
|
|
231
231
|
# Enables or disables the notifier based on user's configurations.
|
232
232
|
#
|
233
233
|
def _setup_notifier
|
234
|
-
if options
|
234
|
+
if options[:notify] && ENV['GUARD_NOTIFY'] != 'false'
|
235
235
|
::Guard::Notifier.turn_on
|
236
236
|
else
|
237
237
|
::Guard::Notifier.turn_off
|
data/lib/guard/ui.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'lumberjack'
|
2
2
|
|
3
|
+
require 'guard/options'
|
3
4
|
require 'guard/ui/colors'
|
4
5
|
|
5
6
|
module Guard
|
@@ -20,8 +21,7 @@ module Guard
|
|
20
21
|
#
|
21
22
|
def logger
|
22
23
|
@logger ||= begin
|
23
|
-
|
24
|
-
Lumberjack::Logger.new(opts.delete(:device) { $stderr }, opts)
|
24
|
+
Lumberjack::Logger.new(options.fetch(:device) { $stderr }, options)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -82,7 +82,7 @@ module Guard
|
|
82
82
|
# @option options [String] plugin manually define the calling plugin
|
83
83
|
#
|
84
84
|
def deprecation(message, options = {})
|
85
|
-
warning(message, options) if ::Guard.options
|
85
|
+
warning(message, options) if ::Guard.options[:show_deprecations]
|
86
86
|
end
|
87
87
|
|
88
88
|
# Show a debug message that is prefixed with DEBUG and a timestamp.
|
@@ -104,7 +104,7 @@ module Guard
|
|
104
104
|
# Clear the output if clearable.
|
105
105
|
#
|
106
106
|
def clear(options = {})
|
107
|
-
if ::Guard.options
|
107
|
+
if ::Guard.options[:clear] && (@clearable || options[:force])
|
108
108
|
@clearable = false
|
109
109
|
system('clear;')
|
110
110
|
end
|
@@ -150,8 +150,8 @@ module Guard
|
|
150
150
|
# @yieldparam [String] param the calling plugin name
|
151
151
|
#
|
152
152
|
def _filter(plugin)
|
153
|
-
only = options
|
154
|
-
except = options
|
153
|
+
only = options[:only]
|
154
|
+
except = options[:except]
|
155
155
|
plugin = plugin || calling_plugin_name
|
156
156
|
|
157
157
|
if (!only && !except) || (only && only.match(plugin)) || (except && !except.match(plugin))
|
data/lib/guard/version.rb
CHANGED
data/lib/guard/watcher.rb
CHANGED
@@ -89,7 +89,7 @@ module Guard
|
|
89
89
|
# @return [Boolean] whether one of these files is the Guardfile
|
90
90
|
#
|
91
91
|
def self.match_guardfile?(files)
|
92
|
-
files.any? { |file|
|
92
|
+
files.any? { |file| File.expand_path(file) == ::Guard.evaluator.guardfile_path }
|
93
93
|
end
|
94
94
|
|
95
95
|
# Test the watchers pattern against a file.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thibaud Guillaume-Gentil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|