guard 0.6.2 → 0.6.3
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 +15 -8
- data/README.md +19 -1
- data/lib/guard/dsl.rb +15 -3
- data/lib/guard/listener.rb +13 -5
- data/lib/guard/version.rb +1 -1
- metadata +11 -11
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## 0.6.3 - September 1, 2011
|
|
2
|
+
|
|
3
|
+
### New features:
|
|
4
|
+
|
|
5
|
+
- Pull request [#130](https://github.com/guard/guard/pull/130): Adds ignore_paths option to DSL. ([@ianwhite][])
|
|
6
|
+
- Pull request [#128](https://github.com/guard/guard/pull/128): Users can add additional settings to ~/.guard.rb that augment the existing Guardfile. ([@tpope][])
|
|
7
|
+
|
|
1
8
|
## 0.6.2 - August 17, 2011
|
|
2
9
|
|
|
3
10
|
### Bugs fixes:
|
|
@@ -5,12 +12,12 @@
|
|
|
5
12
|
- Re-add the possibility to use the `growl` gem since the `growl_notify` gem this is currently known to not work in conjunction with Spork. ([@netzpirat][])
|
|
6
13
|
- Ensure that scoped groups and group name are symbolized before checking for inclusion. ([@rymai][])
|
|
7
14
|
|
|
8
|
-
### New features
|
|
15
|
+
### New features:
|
|
9
16
|
|
|
10
17
|
- Groups are now stored in a @groups variable (will be used for future features). ([@rymai][])
|
|
11
18
|
- Guards will now receive their group in the options hash at initialization (will be used for future features). ([@rymai][])
|
|
12
19
|
|
|
13
|
-
### Improvement
|
|
20
|
+
### Improvement:
|
|
14
21
|
|
|
15
22
|
- Explain the growl/growl_notify differences in the README. ([@netzpirat][])
|
|
16
23
|
|
|
@@ -28,11 +35,11 @@
|
|
|
28
35
|
- Pull request [#107](https://github.com/guard/guard/pull/107): Small spelling fix. ([@dnagir][])
|
|
29
36
|
- Dir.glob now ignores files that don't need to be watched. ([@rymai][])
|
|
30
37
|
|
|
31
|
-
### New features
|
|
38
|
+
### New features:
|
|
32
39
|
|
|
33
40
|
- Pull request [#112](https://github.com/guard/guard/pull/112): Add `list` command to CLI. ([@docwhat][])
|
|
34
41
|
|
|
35
|
-
### Improvements
|
|
42
|
+
### Improvements:
|
|
36
43
|
|
|
37
44
|
- Pull request [#99](https://github.com/guard/guard/pull/99): [OS X] Switch from growl gem to growl_notify gem. ([@johnbintz][])
|
|
38
45
|
- Pull request [#115](https://github.com/guard/guard/pull/115): [Linux] Add ':transient => true' to default libnotify options. ([@zonque][])
|
|
@@ -51,12 +58,12 @@
|
|
|
51
58
|
|
|
52
59
|
## 0.5.0 - July 2, 2011
|
|
53
60
|
|
|
54
|
-
### New features
|
|
61
|
+
### New features:
|
|
55
62
|
|
|
56
63
|
- Guard::Ego is now part of Guard, so Guardfile is automagically re-evaluated when modified. ([@thibaudgg][])
|
|
57
64
|
- Pull request [#91](https://github.com/guard/guard/pull/91): Show Guards in Guardfile with the `guard -T`. ([@johnbintz][])
|
|
58
65
|
|
|
59
|
-
### Improvements
|
|
66
|
+
### Improvements:
|
|
60
67
|
|
|
61
68
|
- Issue [#98](https://github.com/guard/guard/issues/98): Multiple calls per watch event on linux with rb-inotify. ([@jeffutter][] & [@netzpirat][])
|
|
62
69
|
- Pull request [#94](https://github.com/guard/guard/pull/94): Show backtrace in terminal when a problem with a watch action occurs. ([@capotej][])
|
|
@@ -78,7 +85,7 @@
|
|
|
78
85
|
|
|
79
86
|
## 0.4.1 - June 7, 2011
|
|
80
87
|
|
|
81
|
-
### Improvements
|
|
88
|
+
### Improvements:
|
|
82
89
|
|
|
83
90
|
- Pull request [#77](https://github.com/guard/guard/pull/77): Refactor `get_guard_class` to first try the constant and fallback to require + various tweaks. ([@mislav][])
|
|
84
91
|
- Notifier improvement, don't use system notification library if could not be required. ([@yannlugrin][])
|
|
@@ -94,7 +101,7 @@
|
|
|
94
101
|
- Pull request [#73](https://github.com/guard/guard/pull/73): Allow DSL's `group` method to accept a Symbol as group name. ([@johnbintz][])
|
|
95
102
|
- Pull request [#51](https://github.com/guard/guard/pull/51): Allow options (like `:priority`) to be passed through to the Notifier. ([@indirect][] & [@netzpirat][])
|
|
96
103
|
|
|
97
|
-
### Improvements
|
|
104
|
+
### Improvements:
|
|
98
105
|
|
|
99
106
|
- Pull request [#74](https://github.com/guard/guard/pull/74): Added link definitions to make the CHANGELOG more DRY! That's for sure now, we have the cleanest CHANGELOG ever! (even the link definitions are sorted alphabetically!) ([@pcreux][])
|
|
100
107
|
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Guard [](http://travis-ci.org/guard/guard)
|
|
2
2
|
=====
|
|
3
3
|
|
|
4
4
|
Guard is a command line tool that easily handle events on files modifications.
|
|
@@ -255,10 +255,13 @@ Optional:
|
|
|
255
255
|
|
|
256
256
|
* The `#watch` 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 guard's `#run_on_change` method or to launch any arbitrary command.
|
|
257
257
|
* The `#group` method allows you to group several guards together. Groups to be 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 on a certain part. Guards that don't belong to a group are considered global and are always run.
|
|
258
|
+
* The `#ignore_paths` method allows you to ignore top level directories altogether. This comes is handy when you have large amounts of non-source data in you project. By default .bundle, .git, log, tmp, and vendor are ignored. Currently it is only possible to ignore the immediate descendants of the watched directory.
|
|
258
259
|
|
|
259
260
|
Example:
|
|
260
261
|
|
|
261
262
|
``` ruby
|
|
263
|
+
ignore_paths 'foo', 'bar'
|
|
264
|
+
|
|
262
265
|
group 'backend' do
|
|
263
266
|
guard 'bundler' do
|
|
264
267
|
watch('Gemfile')
|
|
@@ -331,6 +334,21 @@ Group frontend:
|
|
|
331
334
|
livereload
|
|
332
335
|
```
|
|
333
336
|
|
|
337
|
+
User config file
|
|
338
|
+
----------------
|
|
339
|
+
|
|
340
|
+
If a .guard.rb is found in your home directory, it will be appended to
|
|
341
|
+
the Guardfile. This can be used for tasks you want guard to handle but
|
|
342
|
+
other users probably don't. For example, indexing your source tree with
|
|
343
|
+
[Ctags](http://ctags.sourceforge.net):
|
|
344
|
+
|
|
345
|
+
``` ruby
|
|
346
|
+
guard 'shell' do
|
|
347
|
+
watch(%r{^(?:app|lib)/.+\.rb$}) { `ctags -R` }
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
|
|
334
352
|
Create a new guard
|
|
335
353
|
------------------
|
|
336
354
|
|
data/lib/guard/dsl.rb
CHANGED
|
@@ -7,7 +7,8 @@ module Guard
|
|
|
7
7
|
options.is_a?(Hash) or raise ArgumentError.new("evaluate_guardfile not passed a Hash!")
|
|
8
8
|
|
|
9
9
|
@@options = options.dup
|
|
10
|
-
|
|
10
|
+
fetch_guardfile_contents
|
|
11
|
+
instance_eval_guardfile(guardfile_contents_with_user_config)
|
|
11
12
|
|
|
12
13
|
UI.error "No guards found in Guardfile, please add at least one." if !::Guard.guards.nil? && ::Guard.guards.empty?
|
|
13
14
|
end
|
|
@@ -72,14 +73,17 @@ module Guard
|
|
|
72
73
|
UI.error "The command file(#{@@options[:guardfile]}) seems to be empty."
|
|
73
74
|
exit 1
|
|
74
75
|
end
|
|
75
|
-
|
|
76
|
-
guardfile_contents
|
|
77
76
|
end
|
|
78
77
|
|
|
79
78
|
def guardfile_contents
|
|
80
79
|
@@options ? @@options[:guardfile_contents] : ""
|
|
81
80
|
end
|
|
82
81
|
|
|
82
|
+
def guardfile_contents_with_user_config
|
|
83
|
+
config = File.read(user_config_path) if File.exist?(user_config_path)
|
|
84
|
+
[guardfile_contents, config].join("\n")
|
|
85
|
+
end
|
|
86
|
+
|
|
83
87
|
def guardfile_path
|
|
84
88
|
@@options ? @@options[:guardfile_path] : ""
|
|
85
89
|
end
|
|
@@ -102,6 +106,10 @@ module Guard
|
|
|
102
106
|
File.expand_path(File.join("~", ".Guardfile"))
|
|
103
107
|
end
|
|
104
108
|
|
|
109
|
+
def user_config_path
|
|
110
|
+
File.expand_path(File.join("~", ".guard.rb"))
|
|
111
|
+
end
|
|
112
|
+
|
|
105
113
|
end
|
|
106
114
|
|
|
107
115
|
def group(name, &guard_definition)
|
|
@@ -126,5 +134,9 @@ module Guard
|
|
|
126
134
|
@watchers << ::Guard::Watcher.new(pattern, action)
|
|
127
135
|
end
|
|
128
136
|
|
|
137
|
+
def ignore_paths(*paths)
|
|
138
|
+
UI.info "Ignoring paths: #{paths.join(', ')}"
|
|
139
|
+
::Guard.listener.ignore_paths.push(*paths)
|
|
140
|
+
end
|
|
129
141
|
end
|
|
130
142
|
end
|
data/lib/guard/listener.rb
CHANGED
|
@@ -9,8 +9,9 @@ module Guard
|
|
|
9
9
|
autoload :Polling, 'guard/listeners/polling'
|
|
10
10
|
|
|
11
11
|
class Listener
|
|
12
|
+
DefaultIgnorePaths = %w[. .. .bundle .git log tmp vendor]
|
|
12
13
|
|
|
13
|
-
attr_reader :directory
|
|
14
|
+
attr_reader :directory, :ignore_paths
|
|
14
15
|
|
|
15
16
|
def self.select_and_init(*a)
|
|
16
17
|
if mac? && Darwin.usable?
|
|
@@ -29,6 +30,8 @@ module Guard
|
|
|
29
30
|
@directory = directory.to_s
|
|
30
31
|
@sha1_checksums_hash = {}
|
|
31
32
|
@relativize_paths = options.fetch(:relativize_paths, true)
|
|
33
|
+
@ignore_paths = DefaultIgnorePaths
|
|
34
|
+
@ignore_paths |= options[:ignore_paths] if options[:ignore_paths]
|
|
32
35
|
update_last_event
|
|
33
36
|
end
|
|
34
37
|
|
|
@@ -77,14 +80,19 @@ module Guard
|
|
|
77
80
|
def relativize_paths?
|
|
78
81
|
!!@relativize_paths
|
|
79
82
|
end
|
|
83
|
+
|
|
84
|
+
# return children of the passed dirs that are not in the ignore_paths list
|
|
85
|
+
def exclude_ignored_paths(dirs, ignore_paths = self.ignore_paths)
|
|
86
|
+
Dir.glob(dirs.map { |d| "#{d.sub(%r{/+$}, '')}/*" }, File::FNM_DOTMATCH).reject do |path|
|
|
87
|
+
ignore_paths.include?(File.basename(path))
|
|
88
|
+
end
|
|
89
|
+
end
|
|
80
90
|
|
|
81
91
|
private
|
|
82
92
|
|
|
83
93
|
def potentially_modified_files(dirs, options={})
|
|
84
|
-
paths =
|
|
85
|
-
|
|
86
|
-
end
|
|
87
|
-
|
|
94
|
+
paths = exclude_ignored_paths(dirs)
|
|
95
|
+
|
|
88
96
|
if options[:all]
|
|
89
97
|
paths.inject([]) do |array, path|
|
|
90
98
|
if File.file?(path)
|
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: 0.6.
|
|
4
|
+
version: 0.6.3
|
|
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: 2011-
|
|
12
|
+
date: 2011-09-01 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70194363346280 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70194363346280
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rspec
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70194363334300 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 2.6.0
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70194363334300
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: guard-rspec
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70194363333680 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ~>
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: 0.3.1
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70194363333680
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: thor
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70194363333100 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ~>
|
|
@@ -54,7 +54,7 @@ dependencies:
|
|
|
54
54
|
version: 0.14.6
|
|
55
55
|
type: :runtime
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70194363333100
|
|
58
58
|
description: Guard is a command line tool to easily handle events on file system modifications.
|
|
59
59
|
email:
|
|
60
60
|
- thibaud@thibaud.me
|
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
108
108
|
version: 1.3.6
|
|
109
109
|
requirements: []
|
|
110
110
|
rubyforge_project: guard
|
|
111
|
-
rubygems_version: 1.8.
|
|
111
|
+
rubygems_version: 1.8.9
|
|
112
112
|
signing_key:
|
|
113
113
|
specification_version: 3
|
|
114
114
|
summary: Guard keeps an eye on your file modifications
|