guard 0.3.0 → 0.3.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/README.rdoc CHANGED
@@ -4,40 +4,39 @@ Guard is a command line tool that easily handle events on files modifications.
4
4
 
5
5
  == Features
6
6
 
7
- - {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support on Mac OS X 10.5+ (without RubyCocoa!, {rb-fsevent gem, >= 0.3.5}[https://rubygems.org/gems/rb-fsevent] required)
8
- - {Inotify}[http://en.wikipedia.org/wiki/Inotify] support on Linux ({rb-inotify gem, >= 0.5.1}[https://rubygems.org/gems/rb-inotify] required)
9
- - Polling for others (help us to support more systems)
10
- - Super fast change detection (when polling not used)
11
- - Automatic files modifications detection (even new files are detected)
12
- - Growl notification ({growlnotify}[http://growl.info/documentation/growlnotify.php] & {growl gem}[https://rubygems.org/gems/growl] required)
13
- - Libnotify notification ({libnotify gem}[https://rubygems.org/gems/libnotify] required)
14
- - Tested on Ruby 1.8.6, 1.8.7 & 1.9.2
7
+ - {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support on Mac OS X 10.5+ (without RubyCocoa!, {rb-fsevent gem, >= 0.3.5}[https://rubygems.org/gems/rb-fsevent] required).
8
+ - {Inotify}[http://en.wikipedia.org/wiki/Inotify] support on Linux ({rb-inotify gem, >= 0.5.1}[https://rubygems.org/gems/rb-inotify] required).
9
+ - Polling on the other operating systems (help us to support more OS).
10
+ - Automatic & Super fast (when polling is not used) files modifications detection (even new files are detected).
11
+ - Growl notifications ({growlnotify}[http://growl.info/documentation/growlnotify.php] & {growl gem}[https://rubygems.org/gems/growl] required).
12
+ - Libnotify notifications ({libnotify gem}[https://rubygems.org/gems/libnotify] required).
13
+ - Tested on Ruby 1.8.6, 1.8.7 & 1.9.2.
15
14
 
16
15
  == Install
17
16
 
18
17
  Install the gem:
19
18
 
20
- gem install guard
19
+ $ gem install guard
21
20
 
22
- Add it to your Gemfile (inside test group):
21
+ Add it to your Gemfile (inside the <tt>test</tt> group):
23
22
 
24
23
  gem 'guard'
25
24
 
26
25
  Generate an empty Guardfile with:
27
26
 
28
- guard init
27
+ $ guard init
29
28
 
30
- Add the guards you need (see available guards below)
29
+ Add the guards you need to your Guardfile (see the existing guards below).
31
30
 
32
31
  === On Mac OS X
33
32
 
34
- Install rb-fsevent for {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support:
33
+ Install the rb-fsevent gem for {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support:
35
34
 
36
- gem install rb-fsevent
35
+ $ gem install rb-fsevent
37
36
 
38
- Install growl for Growl notification support:
37
+ Install the Growl gem if you want notification support:
39
38
 
40
- gem install growl
39
+ $ gem install growl
41
40
 
42
41
  And add it to you Gemfile:
43
42
 
@@ -45,13 +44,13 @@ And add it to you Gemfile:
45
44
 
46
45
  === On Linux
47
46
 
48
- Install rb-inotify for {inotify}[http://en.wikipedia.org/wiki/Inotify] support:
47
+ Install the rb-inotify gem for {inotify}[http://en.wikipedia.org/wiki/Inotify] support:
49
48
 
50
- gem install rb-inotify
49
+ $ gem install rb-inotify
51
50
 
52
- Install libnotify for libonity notification support:
51
+ Install the Libnotify gem if you want notification support:
53
52
 
54
- gem install libnotify
53
+ $ gem install libnotify
55
54
 
56
55
  And add it to you Gemfile:
57
56
 
@@ -61,79 +60,67 @@ And add it to you Gemfile:
61
60
 
62
61
  Just launch Guard inside your Ruby / Rails project with:
63
62
 
64
- guard
63
+ $ guard [start]
65
64
 
66
65
  or if you use Bundler, to run the Guard executable specific to your bundle:
67
66
 
68
- bundle exec guard
67
+ $ bundle exec guard
69
68
 
70
69
  == Command line options
71
70
 
72
71
  Shell can be cleared after each change with:
73
72
 
74
- guard --clear
75
- guard -c # shortcut
73
+ $ guard --clear
74
+ $ guard -c # shortcut
76
75
 
77
- The guards to start can be specified by group (see Guardfile DSL below) specifying the `--group` (or `-g`) option:
76
+ Notifications (growl/libnotify) can be disabled with:
78
77
 
79
- guard --group group_name another_group_name
80
- guard -g group_name another_group_name # shortcut
78
+ $ guard --notify false
79
+ $ guard -n false # shortcut
80
+
81
+ The guards to start can be specified by group (see the Guardfile DSL below) specifying the <tt>--group</tt> (or <tt>-g</tt>) option:
82
+
83
+ $ guard --group group_name another_group_name
84
+ $ guard -g group_name another_group_name # shortcut
81
85
 
82
86
  Options list is available with:
83
87
 
84
- guard help [TASK]
88
+ $ guard help [TASK]
85
89
 
86
90
  == Signal handlers
87
91
 
88
92
  Signal handlers are used to interact with Guard:
89
93
 
90
- - Ctrl-C - Quit Guard (call each guard's run_all method, in the same order they are declared in the Guarfile)
91
- - Ctrl-\ - Call each guard's run_all method, in the same order they are declared in the Guarfile
92
- - Ctrl-Z - Call each guard's reload method, in the same order they are declared in the Guarfile
94
+ - <tt>Ctrl-C</tt> - Calls each guard's <tt>stop</tt> method, in the same order they are declared in the Guardfile, and then quits Guard itself.
95
+ - <tt>Ctrl-\\</tt> - Calls each guard's <tt>run_all</tt> method, in the same order they are declared in the Guardfile.
96
+ - <tt>Ctrl-Z</tt> - Calls each guard's <tt>reload</tt> method, in the same order they are declared in the Guardfile.
93
97
 
94
98
  == Available Guards
95
99
 
96
- - {guard-bundler}[https://github.com/guard/guard-bundler] by {Yann Lugrin}[https://github.com/yannlugrin]
97
- - {guard-coffeescript}[https://github.com/guard/guard-coffeescript] by {Michael Kessler}[https://github.com/netzpirat]
98
- - {guard-compass}[https://github.com/guard/guard-compass] by {Olivier Amblet}[https://github.com/oliamb]
99
- - {guard-cucumber}[https://github.com/guard/guard-cucumber] by {Michael Kessler}[https://github.com/netzpirat]
100
- - {guard-ego}[https://github.com/guard/guard-ego] by {Fabio Kuhn}[https://github.com/mordaroso]
101
- - {guard-jammit}[https://github.com/guard/guard-jammit] by {Pelle Braendgaard}[https://github.com/pelle]
102
- - {guard-less}[https://github.com/guard/guard-less] by {Brendan Erwin}[https://github.com/brendanjerwin]
103
- - {guard-livereload}[https://github.com/guard/guard-livereload] by {Thibaud Guillaume-Gentil}[https://github.com/thibaudgg]
104
- - {guard-minitest}[https://github.com/guard/guard-minitest] by {Yann Lugrin}[https://github.com/yannlugrin]
105
- - {guard-nanoc}[https://github.com/guard/guard-nanoc] by {Yann Lugrin}[https://github.com/yannlugrin]
106
- - {guard-passenger}[https://github.com/guard/guard-passenger] by {Fabio Kuhn}[https://github.com/mordaroso]
107
- - {guard-rspec}[https://github.com/guard/guard-rspec] by {Thibaud Guillaume-Gentil}[https://github.com/thibaudgg]
108
- - {guard-sass}[https://github.com/guard/guard-sass] by {Joshua Hawxwell}[https://github.com/hawx]
109
- - {guard-shell}[https://github.com/guard/guard-shell] by {Joshua Hawxwell}[https://github.com/hawx]
110
- - {guard-soca}[https://github.com/guard/guard-soca] by {Luke Amdor}[https://github.com/rubbish]
111
- - {guard-spork}[https://github.com/guard/guard-spork] by {Thibaud Guillaume-Gentil}[https://github.com/thibaudgg]
112
- - {guard-stendhal}[https://github.com/guard/guard-stendhal] by {Josep Mª Bach}[https://github.com/txus]
113
- - {guard-test}[https://github.com/guard/guard-test] by {Rémy Coutable}[https://github.com/rymai]
100
+ {Available Guards list}[https://github.com/guard/guard/wiki/List-of-available-Guards] (on the wiki now)
114
101
 
115
102
  === Add a guard to your Guardfile
116
103
 
117
- Add it to your Gemfile (inside test group):
104
+ Add it to your Gemfile (inside the <tt>test</tt> group):
118
105
 
119
106
  gem '<guard-name>'
120
107
 
121
- Add guard definition to your Guardfile by running this command:
108
+ Insert default guard's definition to your Guardfile by running this command:
122
109
 
123
- guard init <guard-name>
110
+ $ guard init <guard-name>
124
111
 
125
112
  You are good to go!
126
113
 
127
114
  == Guardfile DSL
128
115
 
129
- The Guardfile DSL consists of just three simple main methods: `guard`, `watch` & `group`.
116
+ The Guardfile DSL consists of just three simple methods: <tt>guard</tt>, <tt>watch</tt> & <tt>group</tt>.
130
117
 
131
118
  Required:
132
- - The `guard` method allows you to add a guard with an optional options hash.
133
- - The `watch` method allows you to define which files are supervised per this guard. A optional block can be added to overwrite path sent to run_on_change guard method or launch simple command.
119
+ - The <tt>guard</tt> method allows you to add a guard with an optional hash of options.
120
+ - The <tt>watch</tt> method allows you to define which files are supervised by this guard. An optional block can be added to overwrite the paths sent to the <tt>run_on_change</tt> guard method or to launch any arbitrary command.
134
121
 
135
122
  Optional:
136
- - The `group` method allows you to group several guards. Groups to run can be specified with the Guard DSL option `--group` (or `-g`). This comes in handy especially when you have a huge Guardfile and want to focus your development.
123
+ - The <tt>group</tt> method allows you to group several guards together. Groups to be run can be specified with the Guard DSL option <tt>--group</tt> (or <tt>-g</tt>). This comes in handy especially when you have a huge Guardfile and want to focus your development on a certain part.
137
124
 
138
125
  Example:
139
126
 
@@ -142,9 +129,9 @@ Example:
142
129
  watch('Gemfile')
143
130
  end
144
131
 
145
- guard 'rspec' do
132
+ guard 'rspec', :cli => '--color --format doc' do
146
133
  # Regexp watch patterns are matched with Regexp#match
147
- watch(%r{^spec/(.+)_spec\.rb})
134
+ watch(%r{^spec/.+_spec\.rb})
148
135
  watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
149
136
  watch(%r{^spec/models/.+\.rb}) { ["spec/models", "spec/acceptance"] }
150
137
  watch(%r{^spec/.+\.rb}) { `say hello` }
@@ -156,17 +143,17 @@ Example:
156
143
 
157
144
  group 'frontend' do
158
145
  guard 'coffeescript', :output => 'public/javascripts/compiled' do
159
- watch(%r{app/coffeescripts/.+\.coffee})
146
+ watch(%r{^app/coffeescripts/.+\.coffee})
160
147
  end
161
148
 
162
149
  guard 'livereload' do
163
- watch(%r{app/.+\.(erb|haml)})
150
+ watch(%r{^app/.+\.(erb|haml)})
164
151
  end
165
152
  end
166
153
 
167
- == Create a guard
154
+ == Create a new guard
168
155
 
169
- Create a new guard is very easy, just create a new gem with this basic structure:
156
+ Creating a new guard is very easy, just create a new gem (<tt>bundle gem</tt> if you use Bundler) with this basic structure:
170
157
 
171
158
  lib/
172
159
  guard/
@@ -175,7 +162,7 @@ Create a new guard is very easy, just create a new gem with this basic structure
175
162
  Guardfile (needed for guard init <guard-name>)
176
163
  guard-name.rb
177
164
 
178
- lib/guard/guard-name.rb inherit from guard/guard and should overwrite at least one of the five guard methods. Example:
165
+ <tt>Guard::GuardName</tt> (in <tt>lib/guard/guard-name.rb</tt>) must inherit from <tt>Guard::Guard</tt> and should overwrite at least one of the five basic <tt>Guard::Guard</tt> instance methods. Example:
179
166
 
180
167
  require 'guard'
181
168
  require 'guard/guard'
@@ -183,42 +170,42 @@ lib/guard/guard-name.rb inherit from guard/guard and should overwrite at least o
183
170
  module Guard
184
171
  class GuardName < Guard
185
172
 
186
- def initialize(watchers = [], options = {})
173
+ def initialize(watchers=[], options={})
187
174
  super
188
175
  # init stuff here, thx!
189
176
  end
190
177
 
191
- # ================
192
- # = Guard method =
193
- # ================
178
+ # =================
179
+ # = Guard methods =
180
+ # =================
194
181
 
195
- # If one of those methods raise an exception, the Guard instance
196
- # will be removed from the active guard.
182
+ # If one of those methods raise an exception, the Guard::GuardName instance
183
+ # will be removed from the active guards.
197
184
 
198
- # Call once when guard starts
185
+ # Called once when Guard starts
199
186
  # Please override initialize method to init stuff
200
187
  def start
201
188
  true
202
189
  end
203
190
 
204
- # Call with Ctrl-C signal (when Guard quit)
191
+ # Called on Ctrl-C signal (when Guard quits)
205
192
  def stop
206
193
  true
207
194
  end
208
195
 
209
- # Call with Ctrl-Z signal
196
+ # Called on Ctrl-Z signal
210
197
  # This method should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
211
198
  def reload
212
199
  true
213
200
  end
214
201
 
215
- # Call with Ctrl-/ signal
202
+ # Called on Ctrl-/ signal
216
203
  # This method should be principally used for long action like running all specs/tests/...
217
204
  def run_all
218
205
  true
219
206
  end
220
207
 
221
- # Call on file(s) modifications
208
+ # Called on file(s) modifications
222
209
  def run_on_change(paths)
223
210
  true
224
211
  end
@@ -226,12 +213,12 @@ lib/guard/guard-name.rb inherit from guard/guard and should overwrite at least o
226
213
  end
227
214
  end
228
215
 
229
- Looks at available guards code for more concrete example.
216
+ Please take a look at the existing guards' source code (see the list above) for more concrete example.
230
217
 
231
218
  == Development
232
219
 
233
- - Source hosted at {GitHub}[https://github.com/guard/guard]
234
- - Report issues/Questions/Feature requests on {GitHub Issues}[https://github.com/guard/guard/issues]
220
+ - Source hosted at {GitHub}[https://github.com/guard/guard].
221
+ - Report Issues/Questions/Feature requests on {GitHub Issues}[https://github.com/guard/guard/issues].
235
222
 
236
223
  Pull requests are very welcome! Make sure your patches are well tested. Please create a topic branch for every separate change
237
224
  you make.
data/lib/guard.rb CHANGED
@@ -17,6 +17,9 @@ module Guard
17
17
  @options = options
18
18
  @listener = Listener.select_and_init
19
19
  @guards = []
20
+
21
+ Notifier.turn_off unless options[:notify]
22
+
20
23
  self
21
24
  end
22
25
 
@@ -50,7 +53,7 @@ module Guard
50
53
  new_modified_files = listener.modified_files([Dir.pwd + '/'], :all => true)
51
54
  listener.update_last_event
52
55
  unless new_modified_files.empty?
53
- run_on_change_for_all_guards(new_modified_files)
56
+ run { run_on_change_for_all_guards(new_modified_files) }
54
57
  end
55
58
  end
56
59
 
@@ -82,20 +85,16 @@ module Guard
82
85
 
83
86
  def get_guard_class(name)
84
87
  require "guard/#{name.downcase}"
85
- klasses = []
86
- ObjectSpace.each_object(Class) do |klass|
87
- klasses << klass if klass.to_s.downcase.match(/^guard::#{name.downcase}/)
88
- end
89
- klasses.first
88
+ self.const_get(self.constants.find{|klass_name| klass_name.to_s.downcase == name.downcase })
90
89
  rescue LoadError
91
90
  UI.error "Could not find gem 'guard-#{name}', please add it in your Gemfile."
92
91
  end
93
92
 
94
93
  def locate_guard(name)
95
- `gem open guard-#{name} --latest --command echo`.chomp
94
+ `gem which guard/#{name}`.chomp
96
95
  rescue
97
96
  UI.error "Could not find 'guard-#{name}' gem path."
98
97
  end
99
98
 
100
99
  end
101
- end
100
+ end
data/lib/guard/cli.rb CHANGED
@@ -4,22 +4,23 @@ require 'guard/version'
4
4
  module Guard
5
5
  class CLI < Thor
6
6
  default_task :start
7
-
8
- method_option :clear, :type => :boolean, :default => false, :aliases => '-c', :banner => "Auto clear shell before each change/run_all/reload"
9
- method_option :debug, :type => :boolean, :default => false, :aliases => '-d', :banner => "Print debug messages"
10
- method_option :group, :type => :array, :default => [], :aliases => '-g', :banner => "Run only the passed groups"
11
-
7
+
8
+ method_option :clear, :type => :boolean, :default => false, :aliases => '-c', :banner => "Auto clear shell before each change/run_all/reload"
9
+ method_option :notify, :type => :boolean, :default => true, :aliases => '-n', :banner => "Notifications feature (growl/libnotify)"
10
+ method_option :debug, :type => :boolean, :default => false, :aliases => '-d', :banner => "Print debug messages"
11
+ method_option :group, :type => :array, :default => [], :aliases => '-g', :banner => "Run only the passed groups"
12
+
12
13
  desc "start", "Starts Guard"
13
14
  def start
14
15
  ::Guard.start(options)
15
16
  end
16
-
17
+
17
18
  desc "version", "Prints Guard's version information"
18
19
  def version
19
20
  ::Guard::UI.info "Guard version #{Guard::VERSION}"
20
21
  end
21
22
  map %w(-v --version) => :version
22
-
23
+
23
24
  desc "init [GUARD]", "Generates a Guardfile into the current working directory, or insert the given GUARD"
24
25
  def init(guard_name = nil)
25
26
  if !File.exist?("Guardfile")
@@ -29,12 +30,12 @@ module Guard
29
30
  ::Guard::UI.error "Guardfile already exists at #{Dir.pwd}/Guardfile"
30
31
  exit 1
31
32
  end
32
-
33
+
33
34
  if guard_name
34
35
  guard_class = ::Guard.get_guard_class(guard_name)
35
36
  guard_class.init(guard_name)
36
37
  end
37
38
  end
38
-
39
+
39
40
  end
40
41
  end
@@ -60,6 +60,7 @@ module Guard
60
60
  update_last_event
61
61
 
62
62
  unless files.empty?
63
+ files.uniq!
63
64
  files.map! { |file| file.gsub("#{Dir.pwd}/", '') }
64
65
  callback.call(files)
65
66
  files.clear
@@ -3,9 +3,13 @@ require 'pathname'
3
3
 
4
4
  module Guard
5
5
  module Notifier
6
-
6
+
7
+ def self.turn_off
8
+ @disable = true
9
+ end
10
+
7
11
  def self.notify(message, options = {})
8
- unless ENV["GUARD_ENV"] == "test"
12
+ unless @disable || ENV["GUARD_ENV"] == "test"
9
13
  image = options[:image] || :success
10
14
  title = options[:title] || "Guard"
11
15
  case Config::CONFIG['target_os']
@@ -20,9 +24,9 @@ module Guard
20
24
  end
21
25
  end
22
26
  end
23
-
27
+
24
28
  private
25
-
29
+
26
30
  def self.image_path(image)
27
31
  images_path = Pathname.new(File.dirname(__FILE__)).join('../../images')
28
32
  case image
@@ -37,7 +41,7 @@ module Guard
37
41
  image
38
42
  end
39
43
  end
40
-
44
+
41
45
  def self.growl_installed?
42
46
  @installed ||= begin
43
47
  require 'growl'
@@ -47,7 +51,7 @@ module Guard
47
51
  false
48
52
  end
49
53
  end
50
-
54
+
51
55
  def self.libnotify_installed?
52
56
  @installed ||= begin
53
57
  require 'libnotify'
@@ -57,6 +61,6 @@ module Guard
57
61
  false
58
62
  end
59
63
  end
60
-
64
+
61
65
  end
62
66
  end
data/lib/guard/ui.rb CHANGED
@@ -1,46 +1,46 @@
1
1
  module Guard
2
2
  module UI
3
3
  class << self
4
-
4
+
5
5
  def info(message, options = {})
6
6
  unless ENV["GUARD_ENV"] == "test"
7
7
  reset_line if options[:reset]
8
8
  puts reset_color(message) if message != ''
9
9
  end
10
10
  end
11
-
11
+
12
12
  def error(message, options = {})
13
13
  unless ENV["GUARD_ENV"] == "test"
14
14
  reset_line if options[:reset]
15
15
  puts "ERROR: #{message}"
16
16
  end
17
17
  end
18
-
18
+
19
19
  def debug(message, options = {})
20
20
  unless ENV["GUARD_ENV"] == "test"
21
21
  reset_line if options[:reset]
22
22
  puts "DEBUG: #{message}" if ::Guard.options && ::Guard.options[:debug]
23
23
  end
24
24
  end
25
-
25
+
26
26
  def reset_line
27
- print "\r\e "
27
+ print "\r\e[0m"
28
28
  end
29
-
29
+
30
30
  def clear
31
31
  system("clear;")
32
32
  end
33
-
33
+
34
34
  private
35
-
35
+
36
36
  def reset_color(text)
37
37
  color(text, "\e[0m")
38
38
  end
39
-
39
+
40
40
  def color(text, color_code)
41
41
  "#{color_code}#{text}\e[0m"
42
42
  end
43
-
43
+
44
44
  end
45
45
  end
46
46
  end
data/lib/guard/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Guard
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Thibaud Guillaume-Gentil
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-19 00:00:00 +01:00
18
+ date: 2011-04-14 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -42,12 +42,12 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: 31
45
+ hash: 27
46
46
  segments:
47
47
  - 2
48
- - 4
48
+ - 5
49
49
  - 0
50
- version: 2.4.0
50
+ version: 2.5.0
51
51
  type: :development
52
52
  version_requirements: *id002
53
53
  - !ruby/object:Gem::Dependency
@@ -58,12 +58,12 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- hash: 9
61
+ hash: 23
62
62
  segments:
63
63
  - 0
64
- - 1
65
- - 9
66
- version: 0.1.9
64
+ - 2
65
+ - 0
66
+ version: 0.2.0
67
67
  type: :development
68
68
  version_requirements: *id003
69
69
  - !ruby/object:Gem::Dependency
@@ -82,22 +82,6 @@ dependencies:
82
82
  version: 0.14.6
83
83
  type: :runtime
84
84
  version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
- name: open_gem
87
- prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- hash: 3
94
- segments:
95
- - 1
96
- - 4
97
- - 2
98
- version: 1.4.2
99
- type: :runtime
100
- version_requirements: *id005
101
85
  description: Guard is a command line tool to easily handle events on files modifications.
102
86
  email:
103
87
  - thibaud@thibaud.me