summaryrefslogtreecommitdiff
path: root/lib/mixlib/shellout
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2016-09-29 14:32:08 -0700
committerThom May <thom@chef.io>2016-10-07 11:12:29 +0100
commit9efca630e084e93fb1ac5eb9c9f04b74d81f4ed7 (patch)
tree82e5956c20f95d32e9025152c422e313965eb4d2 /lib/mixlib/shellout
parentad54419ab0f194c1d89ee8f3065a7a1f053ce6f2 (diff)
downloadmixlib-shellout-9efca630e084e93fb1ac5eb9c9f04b74d81f4ed7.tar.gz
Resolve most chefstyle warnings
Signed-off-by: Tim Smith <tsmith@chef.io>
Diffstat (limited to 'lib/mixlib/shellout')
-rw-r--r--lib/mixlib/shellout/unix.rb14
-rw-r--r--lib/mixlib/shellout/windows.rb60
-rw-r--r--lib/mixlib/shellout/windows/core_ext.rb128
3 files changed, 101 insertions, 101 deletions
diff --git a/lib/mixlib/shellout/unix.rb b/lib/mixlib/shellout/unix.rb
index 734a597..238273c 100644
--- a/lib/mixlib/shellout/unix.rb
+++ b/lib/mixlib/shellout/unix.rb
@@ -39,7 +39,7 @@ module Mixlib
def all_seconderies
ret = []
Etc.endgrent
- while ( g = Etc.getgrent ) do
+ while ( g = Etc.getgrent )
ret << g
end
Etc.endgrent
@@ -52,7 +52,7 @@ module Mixlib
def sgids
return nil unless using_login?
user_name = Etc.getpwuid(uid).name
- all_seconderies.select{|g| g.mem.include?(user_name)}.map{|g|g.gid}
+ all_seconderies.select { |g| g.mem.include?(user_name) }.map { |g| g.gid }
end
# The environment variables that are deduced from simulating logon
@@ -63,7 +63,7 @@ module Mixlib
# According to `man su`, the set fields are:
# $HOME, $SHELL, $USER, $LOGNAME, $PATH, and $IFS
# Values are copied from "shadow" package in Ubuntu 14.10
- {'HOME'=>entry.dir, 'SHELL'=>entry.shell, 'USER'=>entry.name, 'LOGNAME'=>entry.name, 'PATH'=>'/sbin:/bin:/usr/sbin:/usr/bin', 'IFS'=>"\t\n"}
+ { "HOME" => entry.dir, "SHELL" => entry.shell, "USER" => entry.name, "LOGNAME" => entry.name, "PATH" => "/sbin:/bin:/usr/sbin:/usr/bin", "IFS" => "\t\n" }
end
# Merges the two environments for the process
@@ -170,7 +170,7 @@ module Mixlib
def set_environment
# user-set variables should override the login ones
- process_environment.each do |env_var,value|
+ process_environment.each do |env_var, value|
ENV[env_var] = value
end
end
@@ -335,14 +335,14 @@ module Mixlib
set_cwd
begin
- command.kind_of?(Array) ? exec(*command, :close_others=>true) : exec(command, :close_others=>true)
+ command.kind_of?(Array) ? exec(*command, :close_others => true) : exec(command, :close_others => true)
- raise 'forty-two' # Should never get here
+ raise "forty-two" # Should never get here
rescue Exception => e
Marshal.dump(e, process_status_pipe.last)
process_status_pipe.last.flush
end
- process_status_pipe.last.close unless (process_status_pipe.last.closed?)
+ process_status_pipe.last.close unless process_status_pipe.last.closed?
exit!
end
end
diff --git a/lib/mixlib/shellout/windows.rb b/lib/mixlib/shellout/windows.rb
index 5b13dad..0c66c2e 100644
--- a/lib/mixlib/shellout/windows.rb
+++ b/lib/mixlib/shellout/windows.rb
@@ -18,8 +18,8 @@
# limitations under the License.
#
-require 'win32/process'
-require 'mixlib/shellout/windows/core_ext'
+require "win32/process"
+require "mixlib/shellout/windows/core_ext"
module Mixlib
class ShellOut
@@ -63,10 +63,10 @@ module Mixlib
:startup_info => {
:stdout => stdout_write,
:stderr => stderr_write,
- :stdin => stdin_read
+ :stdin => stdin_read,
},
- :environment => inherit_environment.map { |k,v| "#{k}=#{v}" },
- :close_handles => false
+ :environment => inherit_environment.map { |k, v| "#{k}=#{v}" },
+ :close_handles => false,
}
create_process_args[:cwd] = cwd if cwd
# default to local account database if domain is not specified
@@ -90,24 +90,24 @@ module Mixlib
# Wait for the process to finish, consuming output as we go
#
start_wait = Time.now
- while true
+ loop do
wait_status = WaitForSingleObject(process.process_handle, 0)
case wait_status
when WAIT_OBJECT_0
# Get process exit code
- exit_code = [0].pack('l')
+ exit_code = [0].pack("l")
unless GetExitCodeProcess(process.process_handle, exit_code)
raise get_last_error
end
@status = ThingThatLooksSortOfLikeAProcessStatus.new
- @status.exitstatus = exit_code.unpack('l').first
+ @status.exitstatus = exit_code.unpack("l").first
return self
when WAIT_TIMEOUT
# Kill the process
if (Time.now - start_wait) > timeout
begin
- require 'wmi-lite/wmi'
+ require "wmi-lite/wmi"
wmi = WmiLite::Wmi.new
Utils.kill_process_tree(process.process_id, wmi, logger)
Process.kill(:KILL, process.process_id)
@@ -118,13 +118,13 @@ module Mixlib
raise Mixlib::ShellOut::CommandTimeout, [
"command timed out:",
format_for_exception,
- Utils.format_process(process, app_name, command_line, timeout)
+ Utils.format_process(process, app_name, command_line, timeout),
].join("\n")
end
consume_output(open_streams, stdout_read, stderr_read)
else
- raise "Unknown response from WaitForSingleObject(#{process.process_handle}, #{timeout*1000}): #{wait_status}"
+ raise "Unknown response from WaitForSingleObject(#{process.process_handle}, #{timeout * 1000}): #{wait_status}"
end
end
@@ -212,7 +212,7 @@ module Mixlib
# https://github.com/opscode/mixlib-shellout/pull/2#issuecomment-4837859
# http://ss64.com/nt/syntax-esc.html
def _run_under_cmd(command)
- [ ENV['COMSPEC'], "cmd /c \"#{command}\"" ]
+ [ ENV["COMSPEC"], "cmd /c \"#{command}\"" ]
end
def _run_directly(command, exe)
@@ -220,7 +220,7 @@ module Mixlib
end
def unquoted_executable_path(command)
- command[0,command.index(/\s/) || command.length]
+ command[0, command.index(/\s/) || command.length]
end
def candidate_executable_for_command(command)
@@ -235,11 +235,11 @@ module Mixlib
def inherit_environment
result = {}
- ENV.each_pair do |k,v|
+ ENV.each_pair do |k, v|
result[k] = v
end
- environment.each_pair do |k,v|
+ environment.each_pair do |k, v|
if v == nil
result.delete(k)
else
@@ -266,15 +266,15 @@ module Mixlib
command.dup.each_char do |c|
case c
when "'", '"'
- if (!quote)
+ if !quote
quote = c
elsif quote == c
quote = nil
end
next
- when '>', '<', '|', '&', "\n"
+ when ">", "<", "|", "&", "\n"
return true unless quote
- when '%'
+ when "%"
return true if env
env = env_first_char = true
next
@@ -282,7 +282,7 @@ module Mixlib
next unless env
if env_first_char
env_first_char = false
- env = false and next if c !~ /[A-Za-z_]/
+ (env = false) && next if c !~ /[A-Za-z_]/
end
env = false if c !~ /[A-Za-z1-9_]/
end
@@ -291,13 +291,13 @@ module Mixlib
end
def self.pathext
- @pathext ||= ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') + [''] : ['']
+ @pathext ||= ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") + [""] : [""]
end
# which() mimicks the Unix which command
# FIXME: it is not working
def self.which(cmd)
- ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
+ ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
exe = find_executable("#{path}/#{cmd}")
return exe if exe
end
@@ -323,13 +323,13 @@ module Mixlib
def self.system_required_processes
[
- 'System Idle Process',
- 'System',
- 'spoolsv.exe',
- 'lsass.exe',
- 'csrss.exe',
- 'smss.exe',
- 'svchost.exe'
+ "System Idle Process",
+ "System",
+ "spoolsv.exe",
+ "lsass.exe",
+ "csrss.exe",
+ "smss.exe",
+ "svchost.exe",
]
end
@@ -358,13 +358,13 @@ module Mixlib
child_pid = instance.wmi_ole_object.processid
logger.debug([
"killing child process #{child_pid}::",
- "#{instance.wmi_ole_object.Name} of parent #{pid}"
+ "#{instance.wmi_ole_object.Name} of parent #{pid}",
].join) if logger
Process.kill(:KILL, instance.wmi_ole_object.processid)
rescue Errno::EIO, SystemCallError
logger.debug([
"Failed to kill child process #{child_pid}::",
- "#{instance.wmi_ole_object.Name} of parent #{pid}"
+ "#{instance.wmi_ole_object.Name} of parent #{pid}",
].join) if logger
end
diff --git a/lib/mixlib/shellout/windows/core_ext.rb b/lib/mixlib/shellout/windows/core_ext.rb
index 2fe2bf2..17faff2 100644
--- a/lib/mixlib/shellout/windows/core_ext.rb
+++ b/lib/mixlib/shellout/windows/core_ext.rb
@@ -17,7 +17,7 @@
# limitations under the License.
#
-require 'win32/process'
+require "win32/process"
# Add new constants for Logon
module Process::Constants
@@ -65,78 +65,78 @@ module Process
class << self
def create(args)
unless args.kind_of?(Hash)
- raise TypeError, 'hash keyword arguments expected'
+ raise TypeError, "hash keyword arguments expected"
end
- valid_keys = %w[
+ valid_keys = %w{
app_name command_line inherit creation_flags cwd environment
startup_info thread_inherit process_inherit close_handles with_logon
domain password
- ]
+ }
- valid_si_keys = %w[
+ valid_si_keys = %w{
startf_flags desktop title x y x_size y_size x_count_chars
y_count_chars fill_attribute sw_flags stdin stdout stderr
- ]
+ }
# Set default values
hash = {
- 'app_name' => nil,
- 'creation_flags' => 0,
- 'close_handles' => true
+ "app_name" => nil,
+ "creation_flags" => 0,
+ "close_handles" => true,
}
# Validate the keys, and convert symbols and case to lowercase strings.
- args.each{ |key, val|
+ args.each do |key, val|
key = key.to_s.downcase
unless valid_keys.include?(key)
raise ArgumentError, "invalid key '#{key}'"
end
hash[key] = val
- }
+ end
si_hash = {}
# If the startup_info key is present, validate its subkeys
- if hash['startup_info']
- hash['startup_info'].each{ |key, val|
+ if hash["startup_info"]
+ hash["startup_info"].each do |key, val|
key = key.to_s.downcase
unless valid_si_keys.include?(key)
raise ArgumentError, "invalid startup_info key '#{key}'"
end
si_hash[key] = val
- }
+ end
end
# The +command_line+ key is mandatory unless the +app_name+ key
# is specified.
- unless hash['command_line']
- if hash['app_name']
- hash['command_line'] = hash['app_name']
- hash['app_name'] = nil
+ unless hash["command_line"]
+ if hash["app_name"]
+ hash["command_line"] = hash["app_name"]
+ hash["app_name"] = nil
else
- raise ArgumentError, 'command_line or app_name must be specified'
+ raise ArgumentError, "command_line or app_name must be specified"
end
end
env = nil
# The env string should be passed as a string of ';' separated paths.
- if hash['environment']
- env = hash['environment']
+ if hash["environment"]
+ env = hash["environment"]
unless env.respond_to?(:join)
- env = hash['environment'].split(File::PATH_SEPARATOR)
+ env = hash["environment"].split(File::PATH_SEPARATOR)
end
- env = env.map{ |e| e + 0.chr }.join('') + 0.chr
- env.to_wide_string! if hash['with_logon']
+ env = env.map { |e| e + 0.chr }.join("") + 0.chr
+ env.to_wide_string! if hash["with_logon"]
end
# Process SECURITY_ATTRIBUTE structure
process_security = nil
- if hash['process_inherit']
+ if hash["process_inherit"]
process_security = SECURITY_ATTRIBUTES.new
process_security[:nLength] = 12
process_security[:bInheritHandle] = 1
@@ -145,7 +145,7 @@ module Process
# Thread SECURITY_ATTRIBUTE structure
thread_security = nil
- if hash['thread_inherit']
+ if hash["thread_inherit"]
thread_security = SECURITY_ATTRIBUTES.new
thread_security[:nLength] = 12
thread_security[:bInheritHandle] = 1
@@ -156,7 +156,7 @@ module Process
# will not work on JRuby because of the way it handles internal file
# descriptors.
#
- ['stdin', 'stdout', 'stderr'].each{ |io|
+ %w{stdin stdout stderr}.each do |io|
if si_hash[io]
if si_hash[io].respond_to?(:fileno)
handle = get_osfhandle(si_hash[io].fileno)
@@ -187,66 +187,66 @@ module Process
raise SystemCallError.new("SetHandleInformation", FFI.errno) unless bool
si_hash[io] = handle
- si_hash['startf_flags'] ||= 0
- si_hash['startf_flags'] |= STARTF_USESTDHANDLES
- hash['inherit'] = true
+ si_hash["startf_flags"] ||= 0
+ si_hash["startf_flags"] |= STARTF_USESTDHANDLES
+ hash["inherit"] = true
end
- }
+ end
procinfo = PROCESS_INFORMATION.new
startinfo = STARTUPINFO.new
unless si_hash.empty?
startinfo[:cb] = startinfo.size
- startinfo[:lpDesktop] = si_hash['desktop'] if si_hash['desktop']
- startinfo[:lpTitle] = si_hash['title'] if si_hash['title']
- startinfo[:dwX] = si_hash['x'] if si_hash['x']
- startinfo[:dwY] = si_hash['y'] if si_hash['y']
- startinfo[:dwXSize] = si_hash['x_size'] if si_hash['x_size']
- startinfo[:dwYSize] = si_hash['y_size'] if si_hash['y_size']
- startinfo[:dwXCountChars] = si_hash['x_count_chars'] if si_hash['x_count_chars']
- startinfo[:dwYCountChars] = si_hash['y_count_chars'] if si_hash['y_count_chars']
- startinfo[:dwFillAttribute] = si_hash['fill_attribute'] if si_hash['fill_attribute']
- startinfo[:dwFlags] = si_hash['startf_flags'] if si_hash['startf_flags']
- startinfo[:wShowWindow] = si_hash['sw_flags'] if si_hash['sw_flags']
+ startinfo[:lpDesktop] = si_hash["desktop"] if si_hash["desktop"]
+ startinfo[:lpTitle] = si_hash["title"] if si_hash["title"]
+ startinfo[:dwX] = si_hash["x"] if si_hash["x"]
+ startinfo[:dwY] = si_hash["y"] if si_hash["y"]
+ startinfo[:dwXSize] = si_hash["x_size"] if si_hash["x_size"]
+ startinfo[:dwYSize] = si_hash["y_size"] if si_hash["y_size"]
+ startinfo[:dwXCountChars] = si_hash["x_count_chars"] if si_hash["x_count_chars"]
+ startinfo[:dwYCountChars] = si_hash["y_count_chars"] if si_hash["y_count_chars"]
+ startinfo[:dwFillAttribute] = si_hash["fill_attribute"] if si_hash["fill_attribute"]
+ startinfo[:dwFlags] = si_hash["startf_flags"] if si_hash["startf_flags"]
+ startinfo[:wShowWindow] = si_hash["sw_flags"] if si_hash["sw_flags"]
startinfo[:cbReserved2] = 0
- startinfo[:hStdInput] = si_hash['stdin'] if si_hash['stdin']
- startinfo[:hStdOutput] = si_hash['stdout'] if si_hash['stdout']
- startinfo[:hStdError] = si_hash['stderr'] if si_hash['stderr']
+ startinfo[:hStdInput] = si_hash["stdin"] if si_hash["stdin"]
+ startinfo[:hStdOutput] = si_hash["stdout"] if si_hash["stdout"]
+ startinfo[:hStdError] = si_hash["stderr"] if si_hash["stderr"]
end
app = nil
cmd = nil
# Convert strings to wide character strings if present
- if hash['app_name']
- app = hash['app_name'].to_wide_string
+ if hash["app_name"]
+ app = hash["app_name"].to_wide_string
end
- if hash['command_line']
- cmd = hash['command_line'].to_wide_string
+ if hash["command_line"]
+ cmd = hash["command_line"].to_wide_string
end
- if hash['cwd']
- cwd = hash['cwd'].to_wide_string
+ if hash["cwd"]
+ cwd = hash["cwd"].to_wide_string
end
- inherit = hash['inherit'] ? 1 : 0
+ inherit = hash["inherit"] ? 1 : 0
- if hash['with_logon']
- logon = hash['with_logon'].to_wide_string
+ if hash["with_logon"]
+ logon = hash["with_logon"].to_wide_string
- if hash['password']
- passwd = hash['password'].to_wide_string
+ if hash["password"]
+ passwd = hash["password"].to_wide_string
else
- raise ArgumentError, 'password must be specified if with_logon is used'
+ raise ArgumentError, "password must be specified if with_logon is used"
end
- if hash['domain']
- domain = hash['domain'].to_wide_string
+ if hash["domain"]
+ domain = hash["domain"].to_wide_string
end
- hash['creation_flags'] |= CREATE_UNICODE_ENVIRONMENT
+ hash["creation_flags"] |= CREATE_UNICODE_ENVIRONMENT
winsta_name = FFI::MemoryPointer.new(:char, 256)
return_size = FFI::MemoryPointer.new(:ulong)
@@ -297,7 +297,7 @@ module Process
process_security, # Process attributes
thread_security, # Thread attributes
inherit, # Inherit handles
- hash['creation_flags'], # Creation Flags
+ hash["creation_flags"], # Creation Flags
env, # Environment
cwd, # Working directory
startinfo, # Startup Info
@@ -318,7 +318,7 @@ module Process
LOGON_WITH_PROFILE, # Logon flags
app, # App name
cmd, # Command line
- hash['creation_flags'], # Creation flags
+ hash["creation_flags"], # Creation flags
env, # Environment
cwd, # Working directory
startinfo, # Startup Info
@@ -336,7 +336,7 @@ module Process
process_security, # Process attributes
thread_security, # Thread attributes
inherit, # Inherit handles?
- hash['creation_flags'], # Creation flags
+ hash["creation_flags"], # Creation flags
env, # Environment
cwd, # Working directory
startinfo, # Startup Info
@@ -350,7 +350,7 @@ module Process
# Automatically close the process and thread handles in the
# PROCESS_INFORMATION struct unless explicitly told not to.
- if hash['close_handles']
+ if hash["close_handles"]
CloseHandle(procinfo[:hProcess])
CloseHandle(procinfo[:hThread])
# Clear these fields so callers don't attempt to close the handle