guard 2.10.5 → 2.11.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/guard.rb +0 -3
  3. data/lib/guard/aruba_adapter.rb +6 -6
  4. data/lib/guard/cli.rb +5 -0
  5. data/lib/guard/commander.rb +1 -1
  6. data/lib/guard/commands/all.rb +2 -2
  7. data/lib/guard/commands/notification.rb +1 -1
  8. data/lib/guard/commands/reload.rb +2 -2
  9. data/lib/guard/commands/show.rb +1 -1
  10. data/lib/guard/deprecated/evaluator.rb +3 -1
  11. data/lib/guard/deprecated/guard.rb +57 -2
  12. data/lib/guard/dsl.rb +2 -3
  13. data/lib/guard/dsl_describer.rb +8 -20
  14. data/lib/guard/guardfile/evaluator.rb +5 -5
  15. data/lib/guard/guardfile/generator.rb +3 -3
  16. data/lib/guard/internals/debugging.rb +5 -5
  17. data/lib/guard/internals/session.rb +19 -8
  18. data/lib/guard/internals/state.rb +0 -13
  19. data/lib/guard/jobs/pry_wrapper.rb +5 -5
  20. data/lib/guard/notifier.rb +43 -219
  21. data/lib/guard/plugin_util.rb +1 -1
  22. data/lib/guard/terminal.rb +3 -2
  23. data/lib/guard/ui.rb +7 -2
  24. data/lib/guard/version.rb +1 -1
  25. data/lib/guard/watcher.rb +3 -3
  26. metadata +30 -15
  27. data/lib/guard/notifier/detected.rb +0 -87
  28. data/lib/guard/notifiers/base.rb +0 -221
  29. data/lib/guard/notifiers/emacs.rb +0 -99
  30. data/lib/guard/notifiers/file_notifier.rb +0 -54
  31. data/lib/guard/notifiers/gntp.rb +0 -111
  32. data/lib/guard/notifiers/growl.rb +0 -104
  33. data/lib/guard/notifiers/libnotify.rb +0 -86
  34. data/lib/guard/notifiers/notifysend.rb +0 -110
  35. data/lib/guard/notifiers/rb_notifu.rb +0 -100
  36. data/lib/guard/notifiers/terminal_notifier.rb +0 -90
  37. data/lib/guard/notifiers/terminal_title.rb +0 -31
  38. data/lib/guard/notifiers/tmux.rb +0 -335
  39. data/lib/guard/sheller.rb +0 -143
@@ -1,143 +0,0 @@
1
- require "open3"
2
-
3
- module Guard
4
- # The Guard sheller abstract the actual subshell
5
- # calls and allow easier stubbing.
6
- #
7
- class Sheller
8
- attr_reader :status
9
-
10
- # Creates a new Guard::Sheller object.
11
- #
12
- # @param [String] args a command to run in a subshell
13
- # @param [Array<String>] args an array of command parts to run in a subshell
14
- # @param [*String] args a list of command parts to run in a subshell
15
- #
16
- def initialize(*args)
17
- fail ArgumentError, "no command given" if args.empty?
18
- @command = args
19
- @ran = false
20
- end
21
-
22
- # Shortcut for new(command).run
23
- #
24
- def self.run(*args)
25
- new(*args).run
26
- end
27
-
28
- # Shortcut for new(command).run.stdout
29
- #
30
- def self.stdout(*args)
31
- new(*args).stdout
32
- end
33
-
34
- # Shortcut for new(command).run.stderr
35
- #
36
- def self.stderr(*args)
37
- new(*args).stderr
38
- end
39
-
40
- # Runs the command.
41
- #
42
- # @return [Boolean] whether or not the command succeeded.
43
- #
44
- def run
45
- unless ran?
46
- status, output, errors = self.class._system_with_capture(*@command)
47
- @ran = true
48
- @stdout = output
49
- @stderr = errors
50
- @status = status
51
- end
52
-
53
- ok?
54
- end
55
-
56
- # Returns true if the command has already been run, false otherwise.
57
- #
58
- # @return [Boolean] whether or not the command has already been run
59
- #
60
- def ran?
61
- @ran
62
- end
63
-
64
- # Returns true if the command succeeded, false otherwise.
65
- #
66
- # @return [Boolean] whether or not the command succeeded
67
- #
68
- def ok?
69
- run unless ran?
70
-
71
- @status && @status.success?
72
- end
73
-
74
- # Returns the command's output.
75
- #
76
- # @return [String] the command output
77
- #
78
- def stdout
79
- run unless ran?
80
-
81
- @stdout
82
- end
83
-
84
- # Returns the command's error output.
85
- #
86
- # @return [String] the command output
87
- #
88
- def stderr
89
- run unless ran?
90
-
91
- @stderr
92
- end
93
-
94
- # No output capturing
95
- #
96
- # NOTE: `$stdout.puts system('cls')` on Windows won't work like
97
- # it does for on systems with ansi terminals, so we need to be
98
- # able to call Kernel.system directly.
99
- def self.system(*args)
100
- _system_with_no_capture(*args)
101
- end
102
-
103
- def self._system_with_no_capture(*args)
104
- Kernel.system(*args)
105
- result = $?
106
- errors = (result == 0) || "Guard failed to run: #{args.inspect}"
107
- [result, nil, errors]
108
- end
109
-
110
- def self._system_with_capture(*args)
111
- # We use popen3, because it started working on recent versions
112
- # of JRuby, while JRuby doesn't handle options to Kernel.system
113
- args = _shellize_if_needed(args)
114
-
115
- stdout, stderr, status = nil
116
- Open3.popen3(*args) do |_stdin, _stdout, _stderr, _thr|
117
- stdout = _stdout.read
118
- stderr = _stderr.read
119
- status = _thr.value
120
- end
121
-
122
- [status, stdout, stderr]
123
- rescue Errno::ENOENT, IOError => e
124
- [nil, nil, "Guard::Sheller failed (#{e.inspect})"]
125
- end
126
-
127
- # Only needed on JRUBY, because MRI properly detects ';' and metachars
128
- def self._shellize_if_needed(args)
129
- return args unless RUBY_PLATFORM == "java"
130
- return args unless args.size == 1
131
- return args unless /[;<>]/ =~ args.first
132
-
133
- # NOTE: guard basically only uses UNIX commands anyway
134
- # while JRuby doesn't support options to Kernel.system and doesn't
135
- # automatically shell when there's a metacharacter in the command
136
- #
137
- # So ... I'm assuming /bin/sh exists - if not, PRs are welcome,
138
- # because I have no clue what to do if /bin/sh doesn't exist.
139
- # (use ENV["RUBYSHELL"] ? Detect cmd.exe ?)
140
- ["/bin/sh", "-c", args.first]
141
- end
142
- end
143
- end