guard 2.0.0.pre → 2.0.0.pre.2

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/README.md CHANGED
@@ -23,7 +23,7 @@ Before you file an issue, make sure you have read the _[known issues](#issues)_
23
23
  * File system changes handled by our awesome [Listen](https://github.com/guard/listen) gem.
24
24
  * Support for visual system notifications.
25
25
  * Huge eco-system with [more than 220](https://rubygems.org/search?query=guard-) Guard plugins.
26
- * Tested against Ruby 1.9.2, 1.9.3, 2.0.0, JRuby (1.9 mode) & Rubinius (1.9 mode).
26
+ * Tested against Ruby 1.9.3, 2.0.0, JRuby (1.9 mode) & Rubinius (1.9 mode).
27
27
 
28
28
  #### Screencast
29
29
 
@@ -603,11 +603,10 @@ used the `watch` method to monitor a directory, but you are not interested in ch
603
603
  the ignore method to exclude them.
604
604
 
605
605
  This comes in handy when you have large amounts of non-source data in you project. By default
606
- [`.rbx`, `.bundle`, `.git`, `.svn`, `log`, `tmp`, `vendor`](https://github.com/guard/listen/blob/master/lib/listen/directory_record.rb#L14)
606
+ [`.rbx`, `.bundle`, `.DS_Store`, `.git`, `.hg` ,`.svn`, `bundle`, `log`, `tmp`, `vendor/bundle`](https://github.com/guard/listen/blob/master/lib/listen/silencer.rb#L5-L9)
607
607
  are ignored.
608
608
 
609
- Please note that method only accept regexps. More on the
610
- [Listen README](https://github.com/guard/listen#note-on-the-patterns-for-ignoring-and-filtering-paths).
609
+ Please note that method only accept regexps. See [Listen README](https://github.com/guard/listen#ignore--ignore).
611
610
 
612
611
  To append to the default ignored files and directories, use the `ignore` method:
613
612
 
@@ -615,7 +614,7 @@ To append to the default ignored files and directories, use the `ignore` method:
615
614
  ignore %r{^ignored/path/}, /public/
616
615
  ```
617
616
 
618
- To _replace_ to default ignored files and directories, use the `ignore!` method:
617
+ To _replace_ any existing ignored files and directories, use the `ignore!` method:
619
618
 
620
619
  ```ruby
621
620
  ignore! /data/
@@ -623,22 +622,7 @@ ignore! /data/
623
622
 
624
623
  ### filter
625
624
 
626
- The `filter` method allows you to focus by filtering files and directories without having to specify them by hand in the
627
- `watch` method. E.g. if you are watching multiple directories but only interested in changes to the Ruby files, then use
628
- the `filter` method.
629
-
630
- Please note that method only accept regexps. More on the
631
- [Listen README](https://github.com/guard/listen#note-on-the-patterns-for-ignoring-and-filtering-paths).
632
-
633
- ```ruby
634
- filter /\.txt$/, /.*\.zip/
635
- ```
636
-
637
- To _replace_ any existing filter, use the `filter!` method:
638
-
639
- ```ruby
640
- filter! /\.js$/
641
- ```
625
+ Alias of the [ignore](https://github.com/guard/guard#ignore) method.
642
626
 
643
627
  ### logger
644
628
 
@@ -119,6 +119,8 @@ module Guard
119
119
  # @return [Array<Group>] the filtered group(s)
120
120
  #
121
121
  def groups(filter = nil)
122
+ @groups ||= []
123
+
122
124
  return @groups if filter.nil?
123
125
 
124
126
  filtered_groups = case filter
@@ -223,8 +223,9 @@ module Guard
223
223
  # @param [Regexp] regexps a pattern (or list of patterns) for ignoring paths
224
224
  #
225
225
  def ignore(*regexps)
226
- ::Guard.listener = ::Guard.listener.ignore(*regexps) if ::Guard.listener
226
+ ::Guard.listener.ignore(*regexps) if ::Guard.listener
227
227
  end
228
+ alias filter ignore
228
229
 
229
230
  # Replaces ignored paths globally
230
231
  #
@@ -234,32 +235,11 @@ module Guard
234
235
  # @param [Regexp] regexps a pattern (or list of patterns) for ignoring paths
235
236
  #
236
237
  def ignore!(*regexps)
237
- ::Guard.listener = ::Guard.listener.ignore!(*regexps) if ::Guard.listener
238
- end
239
-
240
- # Filters certain paths globally.
241
- #
242
- # @example Filter some files
243
- # filter /\.txt$/, /.*\.zip/
244
- #
245
- # @param [Regexp] regexps a pattern (or list of patterns) for filtering
246
- # paths
247
- #
248
- def filter(*regexps)
249
- ::Guard.listener = ::Guard.listener.filter(*regexps) if ::Guard.listener
250
- end
251
-
252
- # Replaces filtered paths globally.
253
- #
254
- # @example Filter only these files
255
- # filter! /\.txt$/, /.*\.zip/
256
- #
257
- # @param [Regexp] regexps a pattern (or list of patterns) for filtering
258
- # paths
259
- #
260
- def filter!(*regexps)
261
- ::Guard.listener = ::Guard.listener.filter!(*regexps) if ::Guard.listener
238
+ @ignore_regexps ||= []
239
+ @ignore_regexps << regexps
240
+ ::Guard.listener.ignore!(@ignore_regexps) if ::Guard.listener
262
241
  end
242
+ alias filter! ignore!
263
243
 
264
244
  # Configures the Guard logger.
265
245
  #
@@ -159,21 +159,35 @@ module Guard
159
159
  # * Restore prompt after each evaluation.
160
160
  #
161
161
  def _add_hooks
162
+ _add_load_guard_rc_hook
163
+ _add_load_project_guard_rc_hook
164
+ _add_restore_visibility_hook if _stty_exists?
165
+ end
166
+
167
+ # Add a `when_started` hook that loads a global .guardrc if it exists.
168
+ #
169
+ def _add_load_guard_rc_hook
162
170
  Pry.config.hooks.add_hook :when_started, :load_guard_rc do
163
171
  (self.class.options[:guard_rc] || GUARD_RC).tap do |p|
164
172
  load p if File.exist?(File.expand_path(p))
165
173
  end
166
174
  end
175
+ end
167
176
 
177
+ # Add a `when_started` hook that loads a project .guardrc if it exists.
178
+ #
179
+ def _add_load_project_guard_rc_hook
168
180
  Pry.config.hooks.add_hook :when_started, :load_project_guard_rc do
169
181
  project_guard_rc = Dir.pwd + '/.guardrc'
170
182
  load project_guard_rc if File.exist?(project_guard_rc)
171
183
  end
184
+ end
172
185
 
173
- if _stty_exists?
174
- Pry.config.hooks.add_hook :after_eval, :restore_visibility do
175
- system("stty echo 2>#{ DEV_NULL }")
176
- end
186
+ # Add a `after_eval` hook that restores visibility after a command is eval.
187
+ #
188
+ def _add_restore_visibility_hook
189
+ Pry.config.hooks.add_hook :after_eval, :restore_visibility do
190
+ system("stty echo 2>#{ DEV_NULL }")
177
191
  end
178
192
  end
179
193
 
@@ -243,13 +257,30 @@ module Guard
243
257
  end
244
258
  end
245
259
 
246
- # Configure the pry prompt to see `guard` instead of
260
+ # Configures the pry prompt to see `guard` instead of
247
261
  # `pry`.
248
262
  #
249
263
  def _configure_prompt
250
264
  Pry.config.prompt = [_prompt('>'), _prompt('*')]
251
265
  end
252
266
 
267
+ # Returns the plugins scope, or the groups scope ready for display in the
268
+ # prompt.
269
+ #
270
+ def _scope_for_prompt
271
+ [:plugins, :groups].each do |scope_name|
272
+ return _join_scope(scope_name) unless ::Guard.scope[scope_name].empty?
273
+ end
274
+
275
+ ''
276
+ end
277
+
278
+ # Joins the scope corresponding to the given scope name with commas.
279
+ #
280
+ def _join_scope_for_prompt(scope_name)
281
+ ::Guard.scope[scope_name].map(&:title).join(',')
282
+ end
283
+
253
284
  # Returns a proc that will return itself a string ending with the given
254
285
  # `ending_char` when called.
255
286
  #
@@ -258,16 +289,9 @@ module Guard
258
289
  history = pry.input_array.size
259
290
  process = ::Guard.listener.paused? ? 'pause' : 'guard'
260
291
  clip = Pry.view_clip(target_self)
261
- level = ":#{ nest_level }" unless nest_level.zero?
262
- scope = if !::Guard.scope[:plugins].empty?
263
- "{#{ ::Guard.scope[:plugins].map(&:title).join(',') }} "
264
- elsif !::Guard.scope[:groups].empty?
265
- "{#{ ::Guard.scope[:groups].map(&:title).join(',') }} "
266
- else
267
- ''
268
- end
269
-
270
- "[#{ history }] #{ scope }#{ process }(#{ clip })#{ level }#{ending_char} "
292
+ level = ":#{ nest_level }" unless nest_level.zero?
293
+
294
+ "[#{ history }] #{ _scope_for_prompt }#{ process }(#{ clip })#{ level }#{ ending_char } "
271
295
  end
272
296
  end
273
297
 
@@ -177,7 +177,7 @@ module Guard
177
177
  end
178
178
 
179
179
  listen_args = @watchdirs + [listener_options]
180
- @listener = Listen.to(*listen_args).change(&listener_callback)
180
+ @listener = Listen.to(*listen_args, &listener_callback)
181
181
  end
182
182
 
183
183
  # Sets up traps to catch signals used to control Guard.
@@ -51,10 +51,7 @@ module Guard
51
51
  # @option options [String] plugin manually define the calling plugin
52
52
  #
53
53
  def info(message, options = {})
54
- filter(options[:plugin]) do |plugin|
55
- reset_line if options[:reset]
56
- logger.info(message, plugin)
57
- end
54
+ _filtered_logger_message(message, :info, nil, options)
58
55
  end
59
56
 
60
57
  # Show a yellow warning message that is prefixed with WARNING.
@@ -64,10 +61,7 @@ module Guard
64
61
  # @option options [String] plugin manually define the calling plugin
65
62
  #
66
63
  def warning(message, options = {})
67
- filter(options[:plugin]) do |plugin|
68
- reset_line if options[:reset]
69
- logger.warn(color(message, :yellow), plugin)
70
- end
64
+ _filtered_logger_message(message, :warn, :yellow, options)
71
65
  end
72
66
 
73
67
  # Show a red error message that is prefixed with ERROR.
@@ -77,10 +71,7 @@ module Guard
77
71
  # @option options [String] plugin manually define the calling plugin
78
72
  #
79
73
  def error(message, options = {})
80
- filter(options[:plugin]) do |plugin|
81
- reset_line if options[:reset]
82
- logger.error(color(message, :red), plugin)
83
- end
74
+ _filtered_logger_message(message, :error, :red, options)
84
75
  end
85
76
 
86
77
  # Show a red deprecation message that is prefixed with DEPRECATION.
@@ -91,12 +82,7 @@ module Guard
91
82
  # @option options [String] plugin manually define the calling plugin
92
83
  #
93
84
  def deprecation(message, options = {})
94
- return unless ::Guard.options.show_deprecations
95
-
96
- filter(options[:plugin]) do |plugin|
97
- reset_line if options[:reset]
98
- logger.warn(color(message, :yellow), plugin)
99
- end
85
+ warning(message, options) if ::Guard.options.show_deprecations
100
86
  end
101
87
 
102
88
  # Show a debug message that is prefixed with DEBUG and a timestamp.
@@ -106,10 +92,7 @@ module Guard
106
92
  # @option options [String] plugin manually define the calling plugin
107
93
  #
108
94
  def debug(message, options = {})
109
- filter(options[:plugin]) do |plugin|
110
- reset_line if options[:reset]
111
- logger.debug(color(message, :yellow), plugin)
112
- end
95
+ _filtered_logger_message(message, :debug, :yellow, options)
113
96
  end
114
97
 
115
98
  # Reset a line.
@@ -138,24 +121,27 @@ module Guard
138
121
  # @param [String] action the action to show
139
122
  # @param [Hash] scopes hash with a guard or a group scope
140
123
  #
141
- def action_with_scopes(action, scopes)
142
- plugins = scopes[:plugins] || []
143
- groups = scopes[:groups] || []
144
-
145
- if plugins.empty? && groups.empty?
146
- plugins = ::Guard.scope[:plugins] || []
147
- groups = ::Guard.scope[:groups] || []
148
- end
149
-
150
- scope_message ||= plugins.map(&:title).join(', ') unless plugins.empty?
151
- scope_message ||= groups.map(&:title).join(', ') unless groups.empty?
152
- scope_message ||= 'all'
124
+ def action_with_scopes(action, scope)
125
+ first_non_blank_scope = _first_non_blank_scope(scope)
126
+ scope_message = first_non_blank_scope.map(&:title).join(', ') unless first_non_blank_scope.nil?
153
127
 
154
- info "#{ action } #{ scope_message }"
128
+ info "#{ action } #{ scope_message || 'all' }"
155
129
  end
156
130
 
157
131
  private
158
132
 
133
+ # Returns the first non-blank scope by searching in the given `scope`
134
+ # hash and in Guard.scope. Returns nil if no non-blank scope is found.
135
+ #
136
+ def _first_non_blank_scope(scope)
137
+ [:plugins, :groups].each do |scope_name|
138
+ s = scope[scope_name] || ::Guard.scope[scope_name]
139
+ return s if !s.nil? && !s.empty?
140
+ end
141
+
142
+ nil
143
+ end
144
+
159
145
  # Filters log messages depending on either the
160
146
  # `:only`` or `:except` option.
161
147
  #
@@ -163,7 +149,7 @@ module Guard
163
149
  # @yield When the message should be logged
164
150
  # @yieldparam [String] param the calling plugin name
165
151
  #
166
- def filter(plugin)
152
+ def _filter(plugin)
167
153
  only = options.only
168
154
  except = options.except
169
155
  plugin = plugin || calling_plugin_name
@@ -173,6 +159,22 @@ module Guard
173
159
  end
174
160
  end
175
161
 
162
+ # Display a message of the type `method` and with the color `color_name`
163
+ # (no color by default) conditionnaly given a `plugin_name`.
164
+ #
165
+ # @param [String] plugin_name the calling plugin name
166
+ # @option options [Boolean] reset whether to clean the output before
167
+ # @option options [String] plugin manually define the calling plugin
168
+ #
169
+ def _filtered_logger_message(message, method, color_name, options = {})
170
+ message = color(message, color_name) if color_name
171
+
172
+ _filter(options[:plugin]) do |plugin|
173
+ reset_line if options[:reset]
174
+ logger.send(method, message, plugin)
175
+ end
176
+ end
177
+
176
178
  # Tries to extract the calling Guard plugin name
177
179
  # from the call stack.
178
180
  #
@@ -1,3 +1,3 @@
1
1
  module Guard
2
- VERSION = '2.0.0.pre'
2
+ VERSION = '2.0.0.pre.2'
3
3
  end
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.0.pre
4
+ version: 2.0.0.pre.2
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-09-12 00:00:00.000000000 Z
11
+ date: 2013-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: 2.0.0.beta.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
40
+ version: 2.0.0.beta.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement