mixlib-shellout 1.4.0-x86-mingw32 → 1.6.0.rc.0-x86-mingw32
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/README.md +2 -2
- data/lib/mixlib/shellout.rb +25 -6
- data/lib/mixlib/shellout/unix.rb +6 -5
- data/lib/mixlib/shellout/version.rb +1 -1
- data/lib/mixlib/shellout/windows.rb +3 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 090582646d44022c8d0f06d29b2a6bea06875aad
|
4
|
+
data.tar.gz: b9d6684c7b751462d6e4c2cea479f39474e3ee6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54b79dc8fa8a509cadf3e6738931b586819ba254d9d76c23cf8bad4492dde20dbca7975f57f91e7fe5f68c600d81640564044fd1cc1df3d6c8837857fa593c80
|
7
|
+
data.tar.gz: 674076ca9e875c2b2b55d604f6ce3279c99e87014002429e51e1d1eeaac245947dbbbddd3811d32df5ca17e97910687ffaed91f9de7e41950b961be7cfcc27dd
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ Invoke crontab to edit user cron:
|
|
37
37
|
crontab.run_command
|
38
38
|
|
39
39
|
## Windows Impersonation Example
|
40
|
-
Invoke
|
40
|
+
Invoke "whoami.exe" to demonstrate running a command as another user:
|
41
41
|
|
42
42
|
whomai = Mixlib::ShellOut.new("whoami.exe", :user => "username", :domain => "DOMAIN", :password => "password")
|
43
43
|
whoami.run_command
|
@@ -51,4 +51,4 @@ Apache 2 Licensed. See LICENSE for full details.
|
|
51
51
|
|
52
52
|
## See Also
|
53
53
|
* `Process.spawn` in Ruby 1.9
|
54
|
-
* [https://github.com/rtomayko/posix-spawn](posix-spawn)
|
54
|
+
* [https://github.com/rtomayko/posix-spawn](https://github.com/rtomayko/posix-spawn)
|
data/lib/mixlib/shellout.rb
CHANGED
@@ -53,10 +53,13 @@ module Mixlib
|
|
53
53
|
# to determine if the command was successful. Normally set via options to new
|
54
54
|
attr_accessor :valid_exit_codes
|
55
55
|
|
56
|
-
# When
|
57
|
-
# the subprocess is running.
|
58
|
-
|
59
|
-
|
56
|
+
# When live_stdout is set, the stdout of the subprocess will be copied to it
|
57
|
+
# as the subprocess is running.
|
58
|
+
attr_accessor :live_stdout
|
59
|
+
|
60
|
+
# When live_stderr is set, the stderr of the subprocess will be copied to it
|
61
|
+
# as the subprocess is running.
|
62
|
+
attr_accessor :live_stderr
|
60
63
|
|
61
64
|
# ShellOut will push data from :input down the stdin of the subprocss.
|
62
65
|
# Normally set via options passed to new.
|
@@ -147,7 +150,7 @@ module Mixlib
|
|
147
150
|
# cmd.run_command # etc.
|
148
151
|
def initialize(*command_args)
|
149
152
|
@stdout, @stderr = '', ''
|
150
|
-
@
|
153
|
+
@live_stdout = @live_stderr = nil
|
151
154
|
@input = nil
|
152
155
|
@log_level = :debug
|
153
156
|
@log_tag = nil
|
@@ -163,6 +166,18 @@ module Mixlib
|
|
163
166
|
@command = command_args.size == 1 ? command_args.first : command_args
|
164
167
|
end
|
165
168
|
|
169
|
+
# Returns the stream that both is being used by both live_stdout and live_stderr, or nil
|
170
|
+
def live_stream
|
171
|
+
live_stdout == live_stderr ? live_stdout : nil
|
172
|
+
end
|
173
|
+
|
174
|
+
# A shortcut for setting both live_stdout and live_stderr, so that both the
|
175
|
+
# stdout and stderr from the subprocess will be copied to the same stream as
|
176
|
+
# the subprocess is running.
|
177
|
+
def live_stream=(stream)
|
178
|
+
@live_stdout = @live_stderr = stream
|
179
|
+
end
|
180
|
+
|
166
181
|
# Set the umask that the subprocess will have. If given as a string, it
|
167
182
|
# will be converted to an integer by String#oct.
|
168
183
|
def umask=(new_umask)
|
@@ -286,7 +301,11 @@ module Mixlib
|
|
286
301
|
when 'returns'
|
287
302
|
self.valid_exit_codes = Array(setting)
|
288
303
|
when 'live_stream'
|
289
|
-
self.
|
304
|
+
self.live_stdout = self.live_stderr = setting
|
305
|
+
when 'live_stdout'
|
306
|
+
self.live_stdout = setting
|
307
|
+
when 'live_stderr'
|
308
|
+
self.live_stderr = setting
|
290
309
|
when 'input'
|
291
310
|
self.input = setting
|
292
311
|
when 'logger'
|
data/lib/mixlib/shellout/unix.rb
CHANGED
@@ -115,7 +115,7 @@ module Mixlib
|
|
115
115
|
# If the child dies very quickly, @child_pid may be a zombie, so handle
|
116
116
|
# ESRCH here.
|
117
117
|
@child_pgid = -Process.getpgid(@child_pid)
|
118
|
-
rescue Errno::ESRCH
|
118
|
+
rescue Errno::ESRCH, Errno::EPERM
|
119
119
|
@child_pgid = nil
|
120
120
|
end
|
121
121
|
|
@@ -278,7 +278,7 @@ module Mixlib
|
|
278
278
|
def read_stdout_to_buffer
|
279
279
|
while chunk = child_stdout.read_nonblock(READ_SIZE)
|
280
280
|
@stdout << chunk
|
281
|
-
@
|
281
|
+
@live_stdout << chunk if @live_stdout
|
282
282
|
end
|
283
283
|
rescue Errno::EAGAIN
|
284
284
|
rescue EOFError
|
@@ -288,6 +288,7 @@ module Mixlib
|
|
288
288
|
def read_stderr_to_buffer
|
289
289
|
while chunk = child_stderr.read_nonblock(READ_SIZE)
|
290
290
|
@stderr << chunk
|
291
|
+
@live_stderr << chunk if @live_stderr
|
291
292
|
end
|
292
293
|
rescue Errno::EAGAIN
|
293
294
|
rescue EOFError
|
@@ -345,12 +346,12 @@ module Mixlib
|
|
345
346
|
|
346
347
|
def reap_errant_child
|
347
348
|
return if attempt_reap
|
348
|
-
@terminate_reason = "Command
|
349
|
-
logger.error("Command
|
349
|
+
@terminate_reason = "Command exceeded allowed execution time, process terminated"
|
350
|
+
logger.error("Command exceeded allowed execution time, sending TERM") if logger
|
350
351
|
Process.kill(:TERM, child_pgid)
|
351
352
|
sleep 3
|
352
353
|
attempt_reap
|
353
|
-
logger.error("Command
|
354
|
+
logger.error("Command exceeded allowed execution time, sending KILL") if logger
|
354
355
|
Process.kill(:KILL, child_pgid)
|
355
356
|
reap
|
356
357
|
|
@@ -165,7 +165,9 @@ module Mixlib
|
|
165
165
|
|
166
166
|
if ready.first.include?(stderr_read)
|
167
167
|
begin
|
168
|
-
|
168
|
+
next_chunk = stderr_read.readpartial(READ_SIZE)
|
169
|
+
@stderr << next_chunk
|
170
|
+
@live_stderr << next_chunk if @live_stderr
|
169
171
|
rescue EOFError
|
170
172
|
stderr_read.close
|
171
173
|
open_streams.delete(stderr_read)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixlib-shellout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0.rc.0
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Opscode
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -82,9 +82,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
82
|
version: '0'
|
83
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
-
- - "
|
85
|
+
- - ">"
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
87
|
+
version: 1.3.1
|
88
88
|
requirements: []
|
89
89
|
rubyforge_project:
|
90
90
|
rubygems_version: 2.2.2
|