guard 2.7.0 → 2.7.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.
- checksums.yaml +4 -4
- data/bin/guard +7 -2
- data/lib/guard.rb +16 -5
- data/lib/guard.rb.orig +210 -0
- data/lib/guard/aruba_adapter.rb +59 -0
- data/lib/guard/cli.rb +1 -1
- data/lib/guard/commander.rb +3 -1
- data/lib/guard/commands/scope.rb +1 -1
- data/lib/guard/deprecated_methods.rb +16 -0
- data/lib/guard/deprecator.rb +15 -0
- data/lib/guard/dsl_describer.rb +0 -2
- data/lib/guard/guardfile/evaluator.rb +2 -2
- data/lib/guard/interactor.rb.orig +6 -1
- data/lib/guard/jobs/pry_wrapper.rb +1 -0
- data/lib/guard/jobs/stdin.rb.orig +46 -0
- data/lib/guard/notifiers/emacs.rb +3 -8
- data/lib/guard/notifiers/emacs.rb.orig +103 -0
- data/lib/guard/plugin_util.rb +5 -3
- data/lib/guard/runner.rb +34 -31
- data/lib/guard/setuper.rb +24 -11
- data/lib/guard/setuper.rb.orig +56 -20
- data/lib/guard/sheller.rb +47 -11
- data/lib/guard/sheller.rb.orig +107 -0
- data/lib/guard/tags +182 -107
- data/lib/guard/terminal.rb +11 -0
- data/lib/guard/terminal.rb.orig +0 -0
- data/lib/guard/ui.rb +21 -2
- data/lib/guard/ui.rb.orig +11 -1
- data/lib/guard/version.rb +1 -1
- data/lib/guard/version.rb.orig +1 -1
- data/lib/guard/watcher.rb.orig +119 -0
- metadata +10 -9
- data/lib/guard/cli.rb.orig +0 -215
- data/lib/guard/dsl_describer.rb.orig +0 -184
- data/lib/guard/guard.rb.orig +0 -42
- data/lib/guard/guardfile/evaluator.rb.orig +0 -275
- data/lib/guard/jobs/pry_wrapper.rb.orig +0 -293
- data/lib/guard/plugin_util.rb.orig +0 -178
- data/lib/guard/runner.rb.orig +0 -200
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c86565038c0d17ebb30f6cc008bd4daa3ec3146
|
4
|
+
data.tar.gz: 7de5a07cdad205ab62306ecab6f044222406dd1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72ae5a7b063bb4fa07fcfe0dc7b7673dd97a1d3099d4dcf846b7cf3c62040f9a4850a32168df6545eb80a7e62bfdc0f20bc1967239c376a6559a96e95050ebc2
|
7
|
+
data.tar.gz: 0e182edbd7934d9524c6261c2db55b1d3cd9b4c9ed8aea9dd66ece1cffd9534f6226abd9b3e705caaea1543891bd36f2e783714435a3577a94824023f6617808
|
data/bin/guard
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "guard"
|
4
|
-
require "guard/cli"
|
5
4
|
|
6
|
-
|
5
|
+
begin
|
6
|
+
require "guard/aruba_adapter"
|
7
|
+
rescue LoadError => e
|
8
|
+
abort "#{e.inspect} - perhaps you need to run using `bundle exec`?"
|
9
|
+
end
|
10
|
+
|
11
|
+
Guard::ArubaAdapter.new(ARGV.dup).execute!
|
data/lib/guard.rb
CHANGED
@@ -20,22 +20,25 @@ require "guard/reevaluator"
|
|
20
20
|
# Also Guard plugins should use this namespace.
|
21
21
|
#
|
22
22
|
module Guard
|
23
|
-
|
24
|
-
DEV_NULL = WINDOWS ? "NUL" : "/dev/null"
|
23
|
+
DEV_NULL = Gem.win_platform? ? "NUL" : "/dev/null"
|
25
24
|
|
26
25
|
extend Commander
|
27
26
|
extend DeprecatedMethods
|
28
27
|
extend Setuper
|
29
28
|
|
30
29
|
class << self
|
31
|
-
attr_accessor :runner, :listener, :lock, :running
|
32
|
-
|
33
30
|
# Called by Pry scope command
|
34
|
-
attr_reader :scope
|
35
31
|
|
36
32
|
def scope=(new_scope)
|
37
33
|
@scope = new_scope
|
34
|
+
@scope.dup.freeze
|
35
|
+
end
|
36
|
+
|
37
|
+
def scope
|
38
|
+
fail "::Guard.setup() not called" if @scope.nil?
|
39
|
+
@scope.dup.freeze
|
38
40
|
end
|
41
|
+
attr_reader :runner, :listener
|
39
42
|
|
40
43
|
# Smart accessor for retrieving specific plugins at once.
|
41
44
|
#
|
@@ -137,6 +140,8 @@ module Guard
|
|
137
140
|
@groups.select { |group| group.name == filter.to_sym }
|
138
141
|
when Regexp
|
139
142
|
@groups.select { |group| group.name.to_s =~ filter }
|
143
|
+
else
|
144
|
+
fail "Invalid filter: #{filter.inspect}"
|
140
145
|
end
|
141
146
|
end
|
142
147
|
|
@@ -176,6 +181,12 @@ module Guard
|
|
176
181
|
instance
|
177
182
|
end
|
178
183
|
|
184
|
+
# Used by runner to remove a failed plugin
|
185
|
+
def remove_plugin(plugin)
|
186
|
+
# TODO: coverage/aruba
|
187
|
+
@plugins.delete(plugin)
|
188
|
+
end
|
189
|
+
|
179
190
|
# Add a Guard plugin group.
|
180
191
|
#
|
181
192
|
# @param [String] name the group name
|
data/lib/guard.rb.orig
ADDED
@@ -0,0 +1,210 @@
|
|
1
|
+
require "rbconfig"
|
2
|
+
|
3
|
+
require "guard/commander"
|
4
|
+
require "guard/deprecated_methods"
|
5
|
+
require "guard/deprecator"
|
6
|
+
require "guard/dsl"
|
7
|
+
require "guard/group"
|
8
|
+
require "guard/guardfile"
|
9
|
+
require "guard/interactor"
|
10
|
+
require "guard/notifier"
|
11
|
+
require "guard/plugin_util"
|
12
|
+
require "guard/runner"
|
13
|
+
require "guard/setuper"
|
14
|
+
require "guard/sheller"
|
15
|
+
require "guard/ui"
|
16
|
+
require "guard/watcher"
|
17
|
+
require "guard/reevaluator"
|
18
|
+
|
19
|
+
# Guard is the main module for all Guard related modules and classes.
|
20
|
+
# Also Guard plugins should use this namespace.
|
21
|
+
#
|
22
|
+
module Guard
|
23
|
+
DEV_NULL = Gem.win_platform? ? "NUL" : "/dev/null"
|
24
|
+
|
25
|
+
extend Commander
|
26
|
+
extend DeprecatedMethods
|
27
|
+
extend Setuper
|
28
|
+
|
29
|
+
class << self
|
30
|
+
# Called by Pry scope command
|
31
|
+
|
32
|
+
def scope=(new_scope)
|
33
|
+
@scope = new_scope
|
34
|
+
@scope.dup.freeze
|
35
|
+
end
|
36
|
+
|
37
|
+
def scope
|
38
|
+
fail "::Guard.setup() not called" if @scope.nil?
|
39
|
+
@scope.dup.freeze
|
40
|
+
end
|
41
|
+
attr_reader :runner, :listener
|
42
|
+
|
43
|
+
# Smart accessor for retrieving specific plugins at once.
|
44
|
+
#
|
45
|
+
# @see Guard.plugin
|
46
|
+
# @see Guard.group
|
47
|
+
# @see Guard.groups
|
48
|
+
#
|
49
|
+
# @example Filter plugins by String or Symbol
|
50
|
+
# Guard.plugins('rspec')
|
51
|
+
# Guard.plugins(:rspec)
|
52
|
+
#
|
53
|
+
# @example Filter plugins by Regexp
|
54
|
+
# Guard.plugins(/rsp.+/)
|
55
|
+
#
|
56
|
+
# @example Filter plugins by Hash
|
57
|
+
# Guard.plugins(name: 'rspec', group: 'backend')
|
58
|
+
#
|
59
|
+
# @param [String, Symbol, Regexp, Hash] filter the filter to apply to the
|
60
|
+
# plugins
|
61
|
+
# @return [Plugin, Array<Plugin>] the filtered plugin(s)
|
62
|
+
#
|
63
|
+
def plugins(filter = nil)
|
64
|
+
@plugins ||= []
|
65
|
+
|
66
|
+
return @plugins if filter.nil?
|
67
|
+
|
68
|
+
filtered_plugins = case filter
|
69
|
+
when String, Symbol
|
70
|
+
@plugins.select do |plugin|
|
71
|
+
plugin.name == filter.to_s.downcase.gsub("-", "")
|
72
|
+
end
|
73
|
+
when Regexp
|
74
|
+
@plugins.select do |plugin|
|
75
|
+
plugin.name =~ filter
|
76
|
+
end
|
77
|
+
when Hash
|
78
|
+
@plugins.select do |plugin|
|
79
|
+
filter.all? do |k, v|
|
80
|
+
case k
|
81
|
+
when :name
|
82
|
+
plugin.name == v.to_s.downcase.gsub("-", "")
|
83
|
+
when :group
|
84
|
+
plugin.group.name == v.to_sym
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
filtered_plugins
|
91
|
+
end
|
92
|
+
|
93
|
+
# Smart accessor for retrieving a specific plugin.
|
94
|
+
#
|
95
|
+
# @see Guard.plugins
|
96
|
+
# @see Guard.group
|
97
|
+
# @see Guard.groups
|
98
|
+
#
|
99
|
+
# @example Find a plugin by String or Symbol
|
100
|
+
# Guard.plugin('rspec')
|
101
|
+
# Guard.plugin(:rspec)
|
102
|
+
#
|
103
|
+
# @example Find a plugin by Regexp
|
104
|
+
# Guard.plugin(/rsp.+/)
|
105
|
+
#
|
106
|
+
# @example Find a plugin by Hash
|
107
|
+
# Guard.plugin(name: 'rspec', group: 'backend')
|
108
|
+
#
|
109
|
+
# @param [String, Symbol, Regexp, Hash] filter the filter for finding the
|
110
|
+
# plugin the Guard plugin
|
111
|
+
# @return [Plugin, nil] the plugin found, nil otherwise
|
112
|
+
#
|
113
|
+
def plugin(filter)
|
114
|
+
plugins(filter).first
|
115
|
+
end
|
116
|
+
|
117
|
+
# Smart accessor for retrieving specific groups at once.
|
118
|
+
#
|
119
|
+
# @see Guard.plugin
|
120
|
+
# @see Guard.plugins
|
121
|
+
# @see Guard.group
|
122
|
+
#
|
123
|
+
# @example Filter groups by String or Symbol
|
124
|
+
# Guard.groups('backend')
|
125
|
+
# Guard.groups(:backend)
|
126
|
+
#
|
127
|
+
# @example Filter groups by Regexp
|
128
|
+
# Guard.groups(/(back|front)end/)
|
129
|
+
#
|
130
|
+
# @param [String, Symbol, Regexp] filter the filter to apply to the Groups
|
131
|
+
# @return [Array<Group>] the filtered group(s)
|
132
|
+
#
|
133
|
+
def groups(filter = nil)
|
134
|
+
@groups ||= []
|
135
|
+
|
136
|
+
return @groups if filter.nil?
|
137
|
+
|
138
|
+
case filter
|
139
|
+
when String, Symbol
|
140
|
+
@groups.select { |group| group.name == filter.to_sym }
|
141
|
+
when Regexp
|
142
|
+
@groups.select { |group| group.name.to_s =~ filter }
|
143
|
+
else
|
144
|
+
fail "Invalid filter: #{filter.inspect}"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# Smart accessor for retrieving a specific group.
|
149
|
+
#
|
150
|
+
# @see Guard.plugin
|
151
|
+
# @see Guard.plugins
|
152
|
+
# @see Guard.groups
|
153
|
+
#
|
154
|
+
# @example Find a group by String or Symbol
|
155
|
+
# Guard.group('backend')
|
156
|
+
# Guard.group(:backend)
|
157
|
+
#
|
158
|
+
# @example Find a group by Regexp
|
159
|
+
# Guard.group(/(back|front)end/)
|
160
|
+
#
|
161
|
+
# @param [String, Symbol, Regexp] filter the filter for finding the group
|
162
|
+
# @return [Group] the group found, nil otherwise
|
163
|
+
#
|
164
|
+
def group(filter)
|
165
|
+
groups(filter).first
|
166
|
+
end
|
167
|
+
|
168
|
+
# Add a Guard plugin to use.
|
169
|
+
#
|
170
|
+
# @param [String] name the Guard name
|
171
|
+
# @param [Hash] options the plugin options (see Plugin documentation)
|
172
|
+
# @option options [String] group the group to which the plugin belongs
|
173
|
+
# @option options [Array<Watcher>] watchers the list of declared watchers
|
174
|
+
# @option options [Array<Hash>] callbacks the list of callbacks
|
175
|
+
# @return [Plugin] the added Guard plugin
|
176
|
+
# @see Plugin
|
177
|
+
#
|
178
|
+
def add_plugin(name, options = {})
|
179
|
+
instance = ::Guard::PluginUtil.new(name).initialize_plugin(options)
|
180
|
+
@plugins << instance
|
181
|
+
instance
|
182
|
+
end
|
183
|
+
|
184
|
+
# Used by runner to remove a failed plugin
|
185
|
+
def remove_plugin(plugin)
|
186
|
+
# TODO: coverage/aruba
|
187
|
+
@plugins.delete(plugin)
|
188
|
+
end
|
189
|
+
|
190
|
+
# Add a Guard plugin group.
|
191
|
+
#
|
192
|
+
# @param [String] name the group name
|
193
|
+
# @option options [Boolean] halt_on_fail if a task execution
|
194
|
+
# should be halted for all Guard plugins in this group if
|
195
|
+
# one Guard throws `:task_has_failed`
|
196
|
+
# @return [Group] the group added (or retrieved from the `@groups`
|
197
|
+
# variable if already present)
|
198
|
+
#
|
199
|
+
# @see Group
|
200
|
+
#
|
201
|
+
def add_group(name, options = {})
|
202
|
+
unless (group = group(name))
|
203
|
+
group = ::Guard::Group.new(name, options)
|
204
|
+
@groups << group
|
205
|
+
end
|
206
|
+
|
207
|
+
group
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require "guard/cli"
|
2
|
+
|
3
|
+
module Guard
|
4
|
+
class ArubaAdapter
|
5
|
+
def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR,
|
6
|
+
kernel = Kernel)
|
7
|
+
@argv = argv
|
8
|
+
@stdin = stdin
|
9
|
+
@stdout = stdout
|
10
|
+
@stderr = stderr
|
11
|
+
@kernel = kernel
|
12
|
+
|
13
|
+
if ENV["INSIDE_ARUBA_TEST"] == "1"
|
14
|
+
::Guard::UI.options = ::Guard::UI.options.merge(flush_seconds: 0)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def execute!
|
19
|
+
exit_code = execute
|
20
|
+
# Proxy our exit code back to the injected kernel.
|
21
|
+
@kernel.exit(exit_code)
|
22
|
+
end
|
23
|
+
|
24
|
+
def execute
|
25
|
+
# Thor accesses these streams directly rather than letting
|
26
|
+
# them be injected, so we replace them...
|
27
|
+
$stderr = @stderr
|
28
|
+
$stdin = @stdin
|
29
|
+
$stdout = @stdout
|
30
|
+
|
31
|
+
# Run our normal Thor app the way we know and love.
|
32
|
+
::Guard::CLI.start(@argv)
|
33
|
+
|
34
|
+
# Thor::Base#start does not have a return value, assume
|
35
|
+
# success if no exception is raised.
|
36
|
+
0
|
37
|
+
rescue StandardError => e
|
38
|
+
# The ruby interpreter would pipe this to STDERR and exit 1 in the case
|
39
|
+
# of an unhandled exception
|
40
|
+
b = e.backtrace
|
41
|
+
b.unshift("#{b.shift}: #{e.message} (#{e.class})")
|
42
|
+
@stderr.puts(b.map { |s| "\tfrom #{s}" }.join("\n"))
|
43
|
+
1
|
44
|
+
rescue SystemExit => e
|
45
|
+
e.status
|
46
|
+
ensure
|
47
|
+
# flush the logger so the output doesn't appear in next CLI invocation
|
48
|
+
::Guard.listener.stop if ::Guard.listener
|
49
|
+
::Guard::UI.logger.flush
|
50
|
+
::Guard::UI.logger.close
|
51
|
+
::Guard::UI.reset_logger
|
52
|
+
|
53
|
+
# ...then we put them back.
|
54
|
+
$stderr = STDERR
|
55
|
+
$stdin = STDIN
|
56
|
+
$stdout = STDOUT
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/lib/guard/cli.rb
CHANGED
@@ -141,7 +141,7 @@ module Guard
|
|
141
141
|
# @see Guard::VERSION
|
142
142
|
#
|
143
143
|
def version
|
144
|
-
|
144
|
+
$stdout.puts "Guard version #{ ::Guard::VERSION }"
|
145
145
|
end
|
146
146
|
|
147
147
|
desc "init [GUARDS]", "Generates a Guardfile at the current directory"\
|
data/lib/guard/commander.rb
CHANGED
@@ -24,7 +24,9 @@ module Guard
|
|
24
24
|
::Guard::UI.debug "Guard starts all plugins"
|
25
25
|
runner.run(:start)
|
26
26
|
listener.start
|
27
|
-
|
27
|
+
|
28
|
+
watched = ::Guard.watchdirs.join("', '")
|
29
|
+
::Guard::UI.info "Guard is now watching at '#{ watched }'"
|
28
30
|
|
29
31
|
_interactor_loop
|
30
32
|
end
|
data/lib/guard/commands/scope.rb
CHANGED
@@ -51,5 +51,21 @@ module Guard
|
|
51
51
|
UI.deprecation(Deprecator::GUARD_GEM_NAMES_DEPRECATION)
|
52
52
|
PluginUtil.plugin_names
|
53
53
|
end
|
54
|
+
|
55
|
+
def running
|
56
|
+
UI.deprecation(Deprecator::GUARD_RUNNING_DEPRECATION)
|
57
|
+
nil
|
58
|
+
end
|
59
|
+
|
60
|
+
def lock
|
61
|
+
UI.deprecation(Deprecator::GUARD_LOCK_DEPRECATION)
|
62
|
+
end
|
63
|
+
|
64
|
+
def evaluator
|
65
|
+
UI.deprecation(Deprecator::GUARD_EVALUATOR_DEPRECATION)
|
66
|
+
# TODO: this will be changed to the following when scope is reworked
|
67
|
+
# ::Guard.session.evaluator
|
68
|
+
::Guard.instance_variable_get(:@evaluator)
|
69
|
+
end
|
54
70
|
end
|
55
71
|
end
|
data/lib/guard/deprecator.rb
CHANGED
@@ -118,5 +118,20 @@ module Guard
|
|
118
118
|
|
119
119
|
#{MORE_INFO_ON_UPGRADING_TO_GUARD_2 % "#changes-in-guardguard"}
|
120
120
|
EOS
|
121
|
+
|
122
|
+
GUARD_RUNNING_DEPRECATION = <<-EOS.gsub(/^\s*/, "")
|
123
|
+
Starting with Guard 2.7.1 it was discovered that Guard.running was never
|
124
|
+
initialized or used internally.
|
125
|
+
EOS
|
126
|
+
|
127
|
+
GUARD_LOCK_DEPRECATION = <<-EOS.gsub(/^\s*/, "")
|
128
|
+
Starting with Guard 2.7.1 it was discovered that this accessor was never
|
129
|
+
initialized or used internally.
|
130
|
+
EOS
|
131
|
+
|
132
|
+
GUARD_EVALUATOR_DEPRECATION = <<-EOS.gsub(/^\s*/, "")
|
133
|
+
Starting with Guard 2.7.1 ::Guard.session.evaluator should be used
|
134
|
+
instead.
|
135
|
+
EOS
|
121
136
|
end
|
122
137
|
end
|
data/lib/guard/dsl_describer.rb
CHANGED
@@ -50,8 +50,8 @@ module Guard
|
|
50
50
|
#
|
51
51
|
def evaluate_guardfile
|
52
52
|
_fetch_guardfile_contents
|
53
|
-
::Guard.add_builtin_plugins(guardfile_path)
|
54
53
|
_instance_eval_guardfile(guardfile_contents)
|
54
|
+
::Guard.add_builtin_plugins(guardfile_path)
|
55
55
|
end
|
56
56
|
|
57
57
|
# Re-evaluates the `Guardfile` to update
|
@@ -221,7 +221,7 @@ module Guard
|
|
221
221
|
def _after_reevaluate_guardfile
|
222
222
|
::Guard::Notifier.turn_on if ::Guard::Notifier.enabled?
|
223
223
|
|
224
|
-
if !::Guard.send(:
|
224
|
+
if !::Guard.send(:_pluginless_guardfile?)
|
225
225
|
::Guard::Notifier.notify(
|
226
226
|
"No plugins found in Guardfile, please add at least one.",
|
227
227
|
title: "Guard re-evaluate",
|