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
     |