guard 0.7.0.rc1 → 0.7.0

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/lib/guard/dsl.rb CHANGED
@@ -1,148 +1,148 @@
1
- module Guard
2
- class Dsl
3
- class << self
4
- @@options = nil
5
-
6
- def evaluate_guardfile(options = {})
7
- options.is_a?(Hash) or raise ArgumentError.new("evaluate_guardfile not passed a Hash!")
8
-
9
- @@options = options.dup
10
- fetch_guardfile_contents
11
- instance_eval_guardfile(guardfile_contents_with_user_config)
12
-
13
- UI.error "No guards found in Guardfile, please add at least one." if !::Guard.guards.nil? && ::Guard.guards.empty?
14
- end
15
-
16
- def reevaluate_guardfile
17
- ::Guard.guards.clear
18
- @@options.delete(:guardfile_contents)
19
- Dsl.evaluate_guardfile(@@options)
20
- msg = "Guardfile has been re-evaluated."
21
- UI.info(msg)
22
- Notifier.notify(msg)
23
- end
24
-
25
- def instance_eval_guardfile(contents)
26
- begin
27
- new.instance_eval(contents, @@options[:guardfile_path], 1)
28
- rescue
29
- UI.error "Invalid Guardfile, original error is:\n#{$!}"
30
- exit 1
31
- end
32
- end
33
-
34
- def guardfile_include?(guard_name)
35
- guardfile_contents.match(/^guard\s*\(?\s*['":]#{guard_name}['"]?/)
36
- end
37
-
38
- def read_guardfile(guardfile_path)
39
- begin
40
- @@options[:guardfile_path] = guardfile_path
41
- @@options[:guardfile_contents] = File.read(guardfile_path)
42
- rescue
43
- UI.error("Error reading file #{guardfile_path}")
44
- exit 1
45
- end
46
- end
47
-
48
- def fetch_guardfile_contents
49
- # TODO: do we need .rc file interaction?
50
- if @@options[:guardfile_contents]
51
- UI.info "Using inline Guardfile."
52
- @@options[:guardfile_path] = 'Inline Guardfile'
53
-
54
- elsif @@options[:guardfile]
55
- if File.exist?(@@options[:guardfile])
56
- read_guardfile(@@options[:guardfile])
57
- UI.info "Using Guardfile at #{@@options[:guardfile]}."
58
- else
59
- UI.error "No Guardfile exists at #{@@options[:guardfile]}."
60
- exit 1
61
- end
62
-
63
- else
64
- if File.exist?(guardfile_default_path)
65
- read_guardfile(guardfile_default_path)
66
- else
67
- UI.error "No Guardfile found, please create one with `guard init`."
68
- exit 1
69
- end
70
- end
71
-
72
- unless guardfile_contents_usable?
73
- UI.error "The command file(#{@@options[:guardfile]}) seems to be empty."
74
- exit 1
75
- end
76
- end
77
-
78
- def guardfile_contents
79
- @@options ? @@options[:guardfile_contents] : ""
80
- end
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
-
87
- def guardfile_path
88
- @@options ? @@options[:guardfile_path] : ""
89
- end
90
-
91
- def guardfile_contents_usable?
92
- guardfile_contents && guardfile_contents.size >= 'guard :a'.size # smallest guard-definition
93
- end
94
-
95
- def guardfile_default_path
96
- File.exist?(local_guardfile_path) ? local_guardfile_path : home_guardfile_path
97
- end
98
-
99
- private
100
-
101
- def local_guardfile_path
102
- File.join(Dir.pwd, "Guardfile")
103
- end
104
-
105
- def home_guardfile_path
106
- File.expand_path(File.join("~", ".Guardfile"))
107
- end
108
-
109
- def user_config_path
110
- File.expand_path(File.join("~", ".guard.rb"))
111
- end
112
-
113
- end
114
-
115
- def group(name, &guard_definition)
116
- @groups = @@options[:group] || []
117
- name = name.to_sym
118
-
119
- if guard_definition && (@groups.empty? || @groups.map(&:to_sym).include?(name))
120
- @current_group = name
121
- guard_definition.call
122
- @current_group = nil
123
- end
124
- end
125
-
126
- def guard(name, options = {}, &watch_and_callback_definition)
127
- @watchers = []
128
- @callbacks = []
129
- watch_and_callback_definition.call if watch_and_callback_definition
130
- options.update(:group => (@current_group || :default))
131
- ::Guard.add_guard(name.to_s.downcase.to_sym, @watchers, @callbacks, options)
132
- end
133
-
134
- def watch(pattern, &action)
135
- @watchers << ::Guard::Watcher.new(pattern, action)
136
- end
137
-
138
- def callback(*args, &listener)
139
- listener, events = args.size > 1 ? args : [listener, args[0]]
140
- @callbacks << { :events => events, :listener => listener }
141
- end
142
-
143
- def ignore_paths(*paths)
144
- UI.info "Ignoring paths: #{paths.join(', ')}"
145
- ::Guard.listener.ignore_paths.push(*paths)
146
- end
147
- end
148
- end
1
+ module Guard
2
+ class Dsl
3
+ class << self
4
+ @@options = nil
5
+
6
+ def evaluate_guardfile(options = {})
7
+ options.is_a?(Hash) or raise ArgumentError.new("evaluate_guardfile not passed a Hash!")
8
+
9
+ @@options = options.dup
10
+ fetch_guardfile_contents
11
+ instance_eval_guardfile(guardfile_contents_with_user_config)
12
+
13
+ UI.error "No guards found in Guardfile, please add at least one." if !::Guard.guards.nil? && ::Guard.guards.empty?
14
+ end
15
+
16
+ def reevaluate_guardfile
17
+ ::Guard.guards.clear
18
+ @@options.delete(:guardfile_contents)
19
+ Dsl.evaluate_guardfile(@@options)
20
+ msg = "Guardfile has been re-evaluated."
21
+ UI.info(msg)
22
+ Notifier.notify(msg)
23
+ end
24
+
25
+ def instance_eval_guardfile(contents)
26
+ begin
27
+ new.instance_eval(contents, @@options[:guardfile_path], 1)
28
+ rescue
29
+ UI.error "Invalid Guardfile, original error is:\n#{$!}"
30
+ exit 1
31
+ end
32
+ end
33
+
34
+ def guardfile_include?(guard_name)
35
+ guardfile_contents.match(/^guard\s*\(?\s*['":]#{guard_name}['"]?/)
36
+ end
37
+
38
+ def read_guardfile(guardfile_path)
39
+ begin
40
+ @@options[:guardfile_path] = guardfile_path
41
+ @@options[:guardfile_contents] = File.read(guardfile_path)
42
+ rescue
43
+ UI.error("Error reading file #{guardfile_path}")
44
+ exit 1
45
+ end
46
+ end
47
+
48
+ def fetch_guardfile_contents
49
+ # TODO: do we need .rc file interaction?
50
+ if @@options[:guardfile_contents]
51
+ UI.info "Using inline Guardfile."
52
+ @@options[:guardfile_path] = 'Inline Guardfile'
53
+
54
+ elsif @@options[:guardfile]
55
+ if File.exist?(@@options[:guardfile])
56
+ read_guardfile(@@options[:guardfile])
57
+ UI.info "Using Guardfile at #{@@options[:guardfile]}."
58
+ else
59
+ UI.error "No Guardfile exists at #{@@options[:guardfile]}."
60
+ exit 1
61
+ end
62
+
63
+ else
64
+ if File.exist?(guardfile_default_path)
65
+ read_guardfile(guardfile_default_path)
66
+ else
67
+ UI.error "No Guardfile found, please create one with `guard init`."
68
+ exit 1
69
+ end
70
+ end
71
+
72
+ unless guardfile_contents_usable?
73
+ UI.error "The command file(#{@@options[:guardfile]}) seems to be empty."
74
+ exit 1
75
+ end
76
+ end
77
+
78
+ def guardfile_contents
79
+ @@options ? @@options[:guardfile_contents] : ""
80
+ end
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
+
87
+ def guardfile_path
88
+ @@options ? @@options[:guardfile_path] : ""
89
+ end
90
+
91
+ def guardfile_contents_usable?
92
+ guardfile_contents && guardfile_contents.size >= 'guard :a'.size # smallest guard-definition
93
+ end
94
+
95
+ def guardfile_default_path
96
+ File.exist?(local_guardfile_path) ? local_guardfile_path : home_guardfile_path
97
+ end
98
+
99
+ private
100
+
101
+ def local_guardfile_path
102
+ File.join(Dir.pwd, "Guardfile")
103
+ end
104
+
105
+ def home_guardfile_path
106
+ File.expand_path(File.join("~", ".Guardfile"))
107
+ end
108
+
109
+ def user_config_path
110
+ File.expand_path(File.join("~", ".guard.rb"))
111
+ end
112
+
113
+ end
114
+
115
+ def group(name, &guard_definition)
116
+ @groups = @@options[:group] || []
117
+ name = name.to_sym
118
+
119
+ if guard_definition && (@groups.empty? || @groups.map(&:to_sym).include?(name))
120
+ @current_group = name
121
+ guard_definition.call
122
+ @current_group = nil
123
+ end
124
+ end
125
+
126
+ def guard(name, options = {}, &watch_and_callback_definition)
127
+ @watchers = []
128
+ @callbacks = []
129
+ watch_and_callback_definition.call if watch_and_callback_definition
130
+ options.update(:group => (@current_group || :default))
131
+ ::Guard.add_guard(name.to_s.downcase.to_sym, @watchers, @callbacks, options)
132
+ end
133
+
134
+ def watch(pattern, &action)
135
+ @watchers << ::Guard::Watcher.new(pattern, action)
136
+ end
137
+
138
+ def callback(*args, &listener)
139
+ listener, events = args.size > 1 ? args : [listener, args[0]]
140
+ @callbacks << { :events => events, :listener => listener }
141
+ end
142
+
143
+ def ignore_paths(*paths)
144
+ UI.info "Ignoring paths: #{paths.join(', ')}"
145
+ ::Guard.listener.ignore_paths.push(*paths)
146
+ end
147
+ end
148
+ end
@@ -1,28 +1,28 @@
1
- require 'guard/dsl'
2
-
3
- module Guard
4
- class DslDescriber < Dsl
5
- @@guardfile_structure = [ { :guards => [] } ]
6
-
7
- class << self
8
- def guardfile_structure
9
- @@guardfile_structure
10
- end
11
- end
12
-
13
- private
14
- def group(name, &guard_definition)
15
- @@guardfile_structure << { :group => name.to_sym, :guards => [] }
16
-
17
- @group = true
18
- guard_definition.call
19
- @group = false
20
- end
21
-
22
- def guard(name, options = {}, &watch_definition)
23
- node = (@group ? @@guardfile_structure.last : @@guardfile_structure.first)
24
-
25
- node[:guards] << { :name => name, :options => options }
26
- end
27
- end
28
- end
1
+ require 'guard/dsl'
2
+
3
+ module Guard
4
+ class DslDescriber < Dsl
5
+ @@guardfile_structure = [ { :guards => [] } ]
6
+
7
+ class << self
8
+ def guardfile_structure
9
+ @@guardfile_structure
10
+ end
11
+ end
12
+
13
+ private
14
+ def group(name, &guard_definition)
15
+ @@guardfile_structure << { :group => name.to_sym, :guards => [] }
16
+
17
+ @group = true
18
+ guard_definition.call
19
+ @group = false
20
+ end
21
+
22
+ def guard(name, options = {}, &watch_definition)
23
+ node = (@group ? @@guardfile_structure.last : @@guardfile_structure.first)
24
+
25
+ node[:guards] << { :name => name, :options => options }
26
+ end
27
+ end
28
+ end
data/lib/guard/guard.rb CHANGED
@@ -1,58 +1,58 @@
1
- module Guard
2
- class Guard
3
- include Hook
4
-
5
- attr_accessor :watchers, :options, :group
6
-
7
- def initialize(watchers = [], options = {})
8
- @group = options.delete(:group) || :default
9
- @watchers, @options = watchers, options
10
- end
11
-
12
- # Guardfile template needed inside guard gem
13
- def self.init(name)
14
- if ::Guard::Dsl.guardfile_include?(name)
15
- ::Guard::UI.info "Guardfile already includes #{name} guard"
16
- else
17
- content = File.read('Guardfile')
18
- guard = File.read("#{::Guard.locate_guard(name)}/lib/guard/#{name}/templates/Guardfile")
19
- File.open('Guardfile', 'wb') do |f|
20
- f.puts(content)
21
- f.puts("")
22
- f.puts(guard)
23
- end
24
- ::Guard::UI.info "#{name} guard added to Guardfile, feel free to edit it"
25
- end
26
- end
27
-
28
- # ================
29
- # = Guard method =
30
- # ================
31
-
32
- # Call once when guard starts
33
- # Please override initialize method to init stuff
34
- def start
35
- true
36
- end
37
-
38
- # Call once when guard quit
39
- def stop
40
- true
41
- end
42
-
43
- # Should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
44
- def reload
45
- true
46
- end
47
-
48
- # Should be principally used for long action like running all specs/tests/...
49
- def run_all
50
- true
51
- end
52
-
53
- def run_on_change(paths)
54
- true
55
- end
56
-
57
- end
58
- end
1
+ module Guard
2
+ class Guard
3
+ include Hook
4
+
5
+ attr_accessor :watchers, :options, :group
6
+
7
+ def initialize(watchers = [], options = {})
8
+ @group = options.delete(:group) || :default
9
+ @watchers, @options = watchers, options
10
+ end
11
+
12
+ # Guardfile template needed inside guard gem
13
+ def self.init(name)
14
+ if ::Guard::Dsl.guardfile_include?(name)
15
+ ::Guard::UI.info "Guardfile already includes #{name} guard"
16
+ else
17
+ content = File.read('Guardfile')
18
+ guard = File.read("#{::Guard.locate_guard(name)}/lib/guard/#{name}/templates/Guardfile")
19
+ File.open('Guardfile', 'wb') do |f|
20
+ f.puts(content)
21
+ f.puts("")
22
+ f.puts(guard)
23
+ end
24
+ ::Guard::UI.info "#{name} guard added to Guardfile, feel free to edit it"
25
+ end
26
+ end
27
+
28
+ # ================
29
+ # = Guard method =
30
+ # ================
31
+
32
+ # Call once when guard starts
33
+ # Please override initialize method to init stuff
34
+ def start
35
+ true
36
+ end
37
+
38
+ # Call once when guard quit
39
+ def stop
40
+ true
41
+ end
42
+
43
+ # Should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
44
+ def reload
45
+ true
46
+ end
47
+
48
+ # Should be principally used for long action like running all specs/tests/...
49
+ def run_all
50
+ true
51
+ end
52
+
53
+ def run_on_change(paths)
54
+ true
55
+ end
56
+
57
+ end
58
+ end