Class: Facter::Core::Execution::Posix
- Inherits:
-
Base
- Object
- Base
- Facter::Core::Execution::Posix
show all
- Defined in:
- lib/facter/custom_facts/core/execution/posix.rb
Overview
Constant Summary
collapse
- DEFAULT_SEARCH_PATHS =
['/sbin', '/usr/sbin'].freeze
- ABSOLUTE_PATH_REGEX =
%r{^/}.freeze
- DOUBLE_QUOTED_COMMAND =
/\A"(.+?)"(?:\s+(.*))?/.freeze
- SINGLE_QUOTED_COMMAND =
/\A'(.+?)'(?:\s+(.*))?/.freeze
Constants inherited
from Base
Base::DEFAULT_EXECUTION_TIMEOUT, Base::STDERR_MESSAGE, Base::VALID_OPTIONS
Instance Method Summary
collapse
Methods inherited from Base
#execute, #execute_command, #initialize, #with_env
Instance Method Details
#absolute_path?(path) ⇒ Boolean
30
31
32
|
# File 'lib/facter/custom_facts/core/execution/posix.rb', line 30
def absolute_path?(path)
!!(path =~ ABSOLUTE_PATH_REGEX)
end
|
#expand_command(command) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/facter/custom_facts/core/execution/posix.rb', line 37
def expand_command(command)
exe = nil
args = nil
match = command.match(DOUBLE_QUOTED_COMMAND) || command.match(SINGLE_QUOTED_COMMAND)
if match
exe, args = match.captures
else
exe, args = command.split(/ /, 2)
end
return unless exe && (expanded = which(exe))
expanded = expanded.dup
expanded = +"'#{expanded}'" if /\s/.match?(expanded)
expanded << " #{args}" if args
expanded
end
|
#search_paths ⇒ Object
9
10
11
12
13
14
|
# File 'lib/facter/custom_facts/core/execution/posix.rb', line 9
def search_paths
ENV['PATH'].split(File::PATH_SEPARATOR) + DEFAULT_SEARCH_PATHS
end
|
#which(bin) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/facter/custom_facts/core/execution/posix.rb', line 16
def which(bin)
if absolute_path?(bin)
return bin if File.executable?(bin) && FileTest.file?(bin)
else
search_paths.each do |dir|
dest = File.join(dir, bin)
return dest if File.executable?(dest) && FileTest.file?(dest)
end
end
nil
end
|