guard 0.10.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +19 -1
- data/README.md +1 -1
- data/lib/guard.rb +3 -3
- data/lib/guard/cli.rb +17 -2
- data/lib/guard/dsl.rb +1 -2
- data/lib/guard/dsl_describer.rb +1 -1
- data/lib/guard/interactor.rb +2 -0
- data/lib/guard/interactors/readline.rb +2 -2
- data/lib/guard/listener.rb +20 -14
- data/lib/guard/ui.rb +12 -0
- data/lib/guard/version.rb +1 -1
- data/lib/guard/watcher.rb +22 -8
- data/lib/vendor/darwin/ext/extconf.rb +4 -1
- metadata +29 -26
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,22 @@
|
|
1
|
+
## 1.0.0 - 19 January, 2012
|
2
|
+
|
3
|
+
### Improvements
|
4
|
+
|
5
|
+
- Add Gemnasium dependency status image to README. ([@laserlemon][])
|
6
|
+
- Update vendor/darwin. ([@thibaudgg][])
|
7
|
+
- [#223](https://github.com/guard/guard/issues/223): Warn if Guard isn't launched with `bundle exec`. (Proposed by [@thibaudgg][], done by [@netzpirat][])
|
8
|
+
|
9
|
+
### Bug fixes
|
10
|
+
|
11
|
+
- [#226](https://github.com/guard/guard/issues/226): Use a direct file descriptor with stty. ([@netzpirat][])
|
12
|
+
- [#218](https://github.com/guard/guard/issues/174): Watching directory with `-A` option only reports a deleted file the first time around. ([@rymai][])
|
13
|
+
- [#174](https://github.com/guard/guard/issues/174): Not creating timestamps for new files with `-A` option. ([@rymai][])
|
14
|
+
- [#216](https://github.com/guard/guard/issues/216): Fix exit-status codes for Guard. ([@Maher4Ever][])
|
15
|
+
- [#213 & 214](https://github.com/guard/guard/issues/214): Fixes the "ERROR: No guards found in Guardfile" message wrongly displayed when running `guard list`. ([@pirukire][])
|
16
|
+
|
1
17
|
## 0.10.0 - 1 January, 2012
|
2
18
|
|
3
|
-
###
|
19
|
+
### Improvements
|
4
20
|
|
5
21
|
- Improved Readline constraints. ([@netzpirat][])
|
6
22
|
- Stop & start all guards on Guardfile reevaluation. ([@thibaudgg][])
|
@@ -397,6 +413,7 @@
|
|
397
413
|
[@johnbintz]: https://github.com/johnbintz
|
398
414
|
[@jrsacks]: https://github.com/jrsacks
|
399
415
|
[@koshigoe]: https://github.com/koshigoe
|
416
|
+
[@laserlemon]: https://github.com/laserlemon
|
400
417
|
[@limeyd]: https://github.com/limeyd
|
401
418
|
[@madtrick]: https://github.com/madtrick
|
402
419
|
[@Maher4Ever]: https://github.com/Maher4Ever
|
@@ -410,6 +427,7 @@
|
|
410
427
|
[@niklas]: https://github.com/niklas
|
411
428
|
[@oliamb]: https://github.com/oliamb
|
412
429
|
[@pcreux]: https://github.com/pcreux
|
430
|
+
[@pirukire]: https://github.com/pirukire
|
413
431
|
[@rmm5t]: https://github.com/rmm5t
|
414
432
|
[@rymai]: https://github.com/rymai
|
415
433
|
[@scottdavis]: https://github.com/scottdavis
|
data/README.md
CHANGED
@@ -832,7 +832,7 @@ When you file an issue, please try to follow to these simple rules if applicable
|
|
832
832
|
* Add your `Guardfile` and `Gemfile` to the issue.
|
833
833
|
* Make sure that the issue is reproducible with your description.
|
834
834
|
|
835
|
-
Development
|
835
|
+
Development [![Dependency Status](https://gemnasium.com/guard/guard.png?branch=master)](https://gemnasium.com/guard/guard)
|
836
836
|
-----------
|
837
837
|
|
838
838
|
* Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/guard/master/frames).
|
data/lib/guard.rb
CHANGED
@@ -46,13 +46,13 @@ module Guard
|
|
46
46
|
elsif File.exist?(File.join(HOME_TEMPLATES, guard_name))
|
47
47
|
content = File.read('Guardfile')
|
48
48
|
template = File.read(File.join(HOME_TEMPLATES, guard_name))
|
49
|
-
|
49
|
+
|
50
50
|
File.open('Guardfile', 'wb') do |f|
|
51
51
|
f.puts(content)
|
52
52
|
f.puts("")
|
53
53
|
f.puts(template)
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
::Guard::UI.info "#{ guard_name } template added to Guardfile, feel free to edit it"
|
57
57
|
else
|
58
58
|
const_name = guard_name.downcase.gsub('-', '')
|
@@ -180,6 +180,7 @@ module Guard
|
|
180
180
|
setup(options)
|
181
181
|
|
182
182
|
Dsl.evaluate_guardfile(options)
|
183
|
+
UI.error 'No guards found in Guardfile, please add at least one.' if ::Guard.guards.empty?
|
183
184
|
|
184
185
|
options[:notify] && ENV['GUARD_NOTIFY'] != 'false' ? Notifier.turn_on : Notifier.turn_off
|
185
186
|
|
@@ -213,7 +214,6 @@ module Guard
|
|
213
214
|
|
214
215
|
interactor.stop if interactor
|
215
216
|
listener.stop
|
216
|
-
abort
|
217
217
|
end
|
218
218
|
|
219
219
|
# Reload all Guards currently enabled.
|
data/lib/guard/cli.rb
CHANGED
@@ -71,9 +71,11 @@ module Guard
|
|
71
71
|
# @see Guard.start
|
72
72
|
#
|
73
73
|
def start
|
74
|
+
verify_bundler_presence
|
74
75
|
::Guard.start(options)
|
75
76
|
rescue Interrupt
|
76
77
|
::Guard.stop
|
78
|
+
abort
|
77
79
|
end
|
78
80
|
|
79
81
|
desc 'list', 'Lists guards that can be used with init'
|
@@ -84,6 +86,7 @@ module Guard
|
|
84
86
|
# @see Guard::DslDescriber.list
|
85
87
|
#
|
86
88
|
def list
|
89
|
+
verify_bundler_presence
|
87
90
|
::Guard::DslDescriber.list(options)
|
88
91
|
end
|
89
92
|
|
@@ -95,7 +98,8 @@ module Guard
|
|
95
98
|
# @see Guard::VERSION
|
96
99
|
#
|
97
100
|
def version
|
98
|
-
|
101
|
+
verify_bundler_presence
|
102
|
+
::Guard::UI.info "Guard version #{ ::Guard::VERSION }"
|
99
103
|
end
|
100
104
|
|
101
105
|
desc 'init [GUARD]', 'Generates a Guardfile at the current working directory, or insert the given GUARD to an existing Guardfile'
|
@@ -108,6 +112,7 @@ module Guard
|
|
108
112
|
# @param [String] guard_name the name of the Guard to initialize
|
109
113
|
#
|
110
114
|
def init(guard_name = nil)
|
115
|
+
verify_bundler_presence
|
111
116
|
::Guard.initialize_template(guard_name)
|
112
117
|
end
|
113
118
|
|
@@ -115,13 +120,23 @@ module Guard
|
|
115
120
|
map %w(-T) => :show
|
116
121
|
|
117
122
|
# Shows all Guards and their options that are defined in
|
118
|
-
# the `Guardfile
|
123
|
+
# the `Guardfile`
|
119
124
|
#
|
120
125
|
# @see Guard::DslDescriber.show
|
121
126
|
#
|
122
127
|
def show
|
128
|
+
verify_bundler_presence
|
123
129
|
::Guard::DslDescriber.show(options)
|
124
130
|
end
|
125
131
|
|
132
|
+
private
|
133
|
+
|
134
|
+
# Verifies if Guard is run with `bundle exec` and
|
135
|
+
# shows a hint to do so if not.
|
136
|
+
#
|
137
|
+
def verify_bundler_presence
|
138
|
+
::Guard::UI.warning "You are using Guard outside of Bundler, this is dangerous and could not work. Using `bundle exec guard` is safer." unless ENV['BUNDLE_GEMFILE']
|
139
|
+
end
|
140
|
+
|
126
141
|
end
|
127
142
|
end
|
data/lib/guard/dsl.rb
CHANGED
@@ -100,8 +100,6 @@ module Guard
|
|
100
100
|
|
101
101
|
fetch_guardfile_contents
|
102
102
|
instance_eval_guardfile(guardfile_contents_with_user_config)
|
103
|
-
|
104
|
-
UI.error 'No guards found in Guardfile, please add at least one.' if !::Guard.guards.nil? && ::Guard.guards.empty?
|
105
103
|
end
|
106
104
|
|
107
105
|
# Re-evaluate the `Guardfile` to update the current Guard configuration.
|
@@ -117,6 +115,7 @@ module Guard
|
|
117
115
|
::Guard::Notifier.clear_notifications
|
118
116
|
@@options.delete(:guardfile_contents)
|
119
117
|
Dsl.evaluate_guardfile(@@options)
|
118
|
+
UI.error 'No guards found in Guardfile, please add at least one.' if ::Guard.guards.empty?
|
120
119
|
msg = 'Guardfile has been re-evaluated.'
|
121
120
|
UI.info(msg)
|
122
121
|
Notifier.notify(msg)
|
data/lib/guard/dsl_describer.rb
CHANGED
@@ -48,7 +48,7 @@ module Guard
|
|
48
48
|
evaluate_guardfile(options)
|
49
49
|
|
50
50
|
installed_guards = guardfile_structure.inject([]) do |installed, group|
|
51
|
-
group[:guards].each { |guard| installed << guard[:name] } if group[:guards]
|
51
|
+
group[:guards].each { |guard| installed << guard[:name].to_s } if group[:guards]
|
52
52
|
installed
|
53
53
|
end
|
54
54
|
|
data/lib/guard/interactor.rb
CHANGED
@@ -96,6 +96,7 @@ module Guard
|
|
96
96
|
# Kill interactor thread if not current
|
97
97
|
#
|
98
98
|
def stop
|
99
|
+
return if ENV['GUARD_ENV'] == 'test'
|
99
100
|
unless Thread.current == @thread
|
100
101
|
@thread.kill
|
101
102
|
end
|
@@ -122,6 +123,7 @@ module Guard
|
|
122
123
|
help
|
123
124
|
when :stop
|
124
125
|
::Guard.stop
|
126
|
+
exit
|
125
127
|
when :pause
|
126
128
|
::Guard.pause
|
127
129
|
when :reload
|
@@ -98,13 +98,13 @@ module Guard
|
|
98
98
|
# when stopping.
|
99
99
|
#
|
100
100
|
def store_terminal_settings
|
101
|
-
@stty_save = `stty -g`.chomp
|
101
|
+
@stty_save = `stty -g 2>/dev/null`.chomp
|
102
102
|
end
|
103
103
|
|
104
104
|
# Restore terminal settings
|
105
105
|
#
|
106
106
|
def restore_terminal_settings
|
107
|
-
system('stty', @stty_save)
|
107
|
+
system('stty', @stty_save, '2>/dev/null')
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
data/lib/guard/listener.rb
CHANGED
@@ -98,7 +98,7 @@ module Guard
|
|
98
98
|
#
|
99
99
|
def start
|
100
100
|
watch(@directory)
|
101
|
-
timestamp_files
|
101
|
+
timestamp_files if watch_all_modifications?
|
102
102
|
end
|
103
103
|
|
104
104
|
# Stop listening for events.
|
@@ -154,6 +154,7 @@ module Guard
|
|
154
154
|
def modified_files(dirs, options = {})
|
155
155
|
last_event = @last_event
|
156
156
|
files = []
|
157
|
+
|
157
158
|
if watch_all_modifications?
|
158
159
|
deleted_files = @file_timestamp_hash.collect do |path, ts|
|
159
160
|
unless File.exists?(path)
|
@@ -165,7 +166,10 @@ module Guard
|
|
165
166
|
files.concat(deleted_files.compact)
|
166
167
|
end
|
167
168
|
update_last_event
|
168
|
-
|
169
|
+
updated_files = potentially_modified_files(dirs, options).select do |path|
|
170
|
+
file_modified?(path, last_event)
|
171
|
+
end
|
172
|
+
files.concat(updated_files)
|
169
173
|
|
170
174
|
relativize_paths(files)
|
171
175
|
end
|
@@ -195,7 +199,7 @@ module Guard
|
|
195
199
|
def relativize_paths(paths)
|
196
200
|
return paths unless relativize_paths?
|
197
201
|
paths.map do |path|
|
198
|
-
|
202
|
+
path.gsub(%r{^(!)?#{ @directory }/},'\1')
|
199
203
|
end
|
200
204
|
end
|
201
205
|
|
@@ -219,7 +223,7 @@ module Guard
|
|
219
223
|
# Populate initial timestamp file hash to watch for deleted or moved files.
|
220
224
|
#
|
221
225
|
def timestamp_files
|
222
|
-
all_files.each {|path| set_file_timestamp_hash(path
|
226
|
+
all_files.each { |path| set_file_timestamp_hash(path) }
|
223
227
|
end
|
224
228
|
|
225
229
|
# Removes the ignored paths from the directory list.
|
@@ -273,10 +277,12 @@ module Guard
|
|
273
277
|
def file_modified?(path, last_event)
|
274
278
|
ctime = File.ctime(path).to_i
|
275
279
|
mtime = File.mtime(path).to_i
|
280
|
+
|
276
281
|
if [mtime, ctime].max == last_event.to_i
|
277
|
-
file_content_modified?(path
|
282
|
+
file_content_modified?(path)
|
278
283
|
elsif mtime > last_event.to_i
|
279
|
-
set_sha1_checksums_hash(path
|
284
|
+
set_sha1_checksums_hash(path)
|
285
|
+
set_file_timestamp_hash(path) if watch_all_modifications?
|
280
286
|
true
|
281
287
|
elsif watch_all_modifications?
|
282
288
|
ts = file_timestamp(path)
|
@@ -295,11 +301,11 @@ module Guard
|
|
295
301
|
# comparing the SHA1 checksum.
|
296
302
|
#
|
297
303
|
# @param [String] path the file path
|
298
|
-
# @param [String] sha1_checksum the checksum of the file
|
299
304
|
#
|
300
|
-
def file_content_modified?(path
|
301
|
-
|
302
|
-
|
305
|
+
def file_content_modified?(path)
|
306
|
+
checksum = sha1_checksum(path)
|
307
|
+
if @sha1_checksums_hash[path] != checksum
|
308
|
+
set_sha1_checksums_hash(path, checksum)
|
303
309
|
true
|
304
310
|
else
|
305
311
|
false
|
@@ -311,8 +317,8 @@ module Guard
|
|
311
317
|
# @param [String] path the file path
|
312
318
|
# @param [Integer] file_timestamp the files modified timestamp
|
313
319
|
#
|
314
|
-
def set_file_timestamp_hash(path,
|
315
|
-
|
320
|
+
def set_file_timestamp_hash(path, timestamp = nil)
|
321
|
+
@file_timestamp_hash[path] = timestamp ? timestamp : file_timestamp(path)
|
316
322
|
end
|
317
323
|
|
318
324
|
# Set the current checksum of a file.
|
@@ -320,8 +326,8 @@ module Guard
|
|
320
326
|
# @param [String] path the file path
|
321
327
|
# @param [String] sha1_checksum the checksum of the file
|
322
328
|
#
|
323
|
-
def set_sha1_checksums_hash(path,
|
324
|
-
@sha1_checksums_hash[path] = sha1_checksum
|
329
|
+
def set_sha1_checksums_hash(path, checksum = nil)
|
330
|
+
@sha1_checksums_hash[path] = checksum ? checksum : sha1_checksum(path)
|
325
331
|
end
|
326
332
|
|
327
333
|
# Gets a files modified timestamp
|
data/lib/guard/ui.rb
CHANGED
@@ -24,6 +24,18 @@ module Guard
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
# Show a yellow warning message that is prefixed with WARNING.
|
28
|
+
#
|
29
|
+
# @param [String] message the message to show
|
30
|
+
# @option options [Boolean] reset whether to clean the output before
|
31
|
+
#
|
32
|
+
def warning(message, options = { })
|
33
|
+
unless ENV['GUARD_ENV'] == 'test'
|
34
|
+
reset_line if options[:reset]
|
35
|
+
STDERR.puts color('WARNING: ', :yellow) + message
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
27
39
|
# Show a red error message that is prefixed with ERROR.
|
28
40
|
#
|
29
41
|
# @param [String] message the message to show
|
data/lib/guard/version.rb
CHANGED
data/lib/guard/watcher.rb
CHANGED
@@ -43,11 +43,11 @@ module Guard
|
|
43
43
|
def self.match_files(guard, files)
|
44
44
|
guard.watchers.inject([]) do |paths, watcher|
|
45
45
|
files.each do |file|
|
46
|
-
if matches = watcher.
|
46
|
+
if matches = watcher.match(file)
|
47
47
|
if watcher.action
|
48
48
|
result = watcher.call_action(matches)
|
49
49
|
if guard.options[:any_return]
|
50
|
-
paths << result
|
50
|
+
paths << result
|
51
51
|
elsif result.respond_to?(:empty?) && !result.empty?
|
52
52
|
paths << Array(result)
|
53
53
|
end
|
@@ -56,7 +56,7 @@ module Guard
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
guard.options[:any_return] ? paths : paths.flatten.map { |p| p.to_s }
|
61
61
|
end
|
62
62
|
end
|
@@ -70,21 +70,35 @@ module Guard
|
|
70
70
|
def self.match_files?(guards, files)
|
71
71
|
guards.any? do |guard|
|
72
72
|
guard.watchers.any? do |watcher|
|
73
|
-
files.any? { |file| watcher.
|
73
|
+
files.any? { |file| watcher.match(file) }
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
+
# @deprecated Use .match instead
|
79
|
+
#
|
80
|
+
def match_file?(file)
|
81
|
+
UI.info "Guard::Watcher.match_file? is deprecated, please use Guard::Watcher.match instead."
|
82
|
+
match(file)
|
83
|
+
end
|
84
|
+
|
78
85
|
# Test the watchers pattern against a file.
|
79
86
|
#
|
80
87
|
# @param [String] file the file to test
|
81
|
-
# @return [
|
88
|
+
# @return [Array<String>] an array of matches (or containing a single path if the pattern is a string)
|
82
89
|
#
|
83
|
-
def
|
90
|
+
def match(file)
|
91
|
+
f = file
|
92
|
+
deleted = file.start_with?('!')
|
93
|
+
f = deleted ? f[1..-1] : f
|
84
94
|
if @pattern.is_a?(Regexp)
|
85
|
-
|
95
|
+
if m = f.match(@pattern)
|
96
|
+
m = m.to_a
|
97
|
+
m[0] = file
|
98
|
+
m
|
99
|
+
end
|
86
100
|
else
|
87
|
-
|
101
|
+
f == @pattern ? [file] : nil
|
88
102
|
end
|
89
103
|
end
|
90
104
|
|
@@ -21,12 +21,15 @@ else
|
|
21
21
|
raise "Only Darwin systems greater than 8 (Mac OS X 10.5+) are supported" unless sdk_version
|
22
22
|
|
23
23
|
core_flags = %W{
|
24
|
-
-isysroot #{xcode_path}/SDKs/MacOSX#{sdk_version}.sdk
|
24
|
+
-isysroot "#{xcode_path}/SDKs/MacOSX#{sdk_version}.sdk"
|
25
25
|
-mmacosx-version-min=#{sdk_version} -mdynamic-no-pic -std=gnu99
|
26
26
|
}
|
27
27
|
|
28
28
|
cflags = core_flags + %w{-Os -pipe}
|
29
29
|
|
30
|
+
arch_sig = `uname -m`
|
31
|
+
cflags << '-arch i386' if arch_sig =~ /i386$/i
|
32
|
+
|
30
33
|
wflags = %w{
|
31
34
|
-Wmissing-prototypes -Wreturn-type -Wmissing-braces -Wparentheses -Wswitch
|
32
35
|
-Wunused-function -Wunused-label -Wunused-parameter -Wunused-variable
|
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: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &70098870288860 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.14.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70098870288860
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ffi
|
27
|
-
requirement: &
|
27
|
+
requirement: &70098870331220 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.5.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70098870331220
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
requirement: &
|
38
|
+
requirement: &70098870377140 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,62 +43,62 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70098870377140
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70098870399680 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.
|
54
|
+
version: 2.8.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70098870399680
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard-rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &70098870396740 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: 0.
|
65
|
+
version: 0.6.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70098870396740
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
|
-
requirement: &
|
71
|
+
requirement: &70098870407720 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ! '>='
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0
|
76
|
+
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70098870407720
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: redcarpet
|
82
|
-
requirement: &
|
82
|
+
requirement: &70098870444360 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
|
-
- -
|
85
|
+
- - ! '>='
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
87
|
+
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70098870444360
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: pry
|
93
|
-
requirement: &
|
93
|
+
requirement: &70098870442760 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - ! '>='
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 0
|
98
|
+
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70098870442760
|
102
102
|
description: Guard is a command line tool to easily handle events on file system modifications.
|
103
103
|
email:
|
104
104
|
- thibaud@thibaud.me
|
@@ -195,6 +195,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
195
195
|
- - ! '>='
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: '0'
|
198
|
+
segments:
|
199
|
+
- 0
|
200
|
+
hash: 3509592351307849355
|
198
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
202
|
none: false
|
200
203
|
requirements:
|