class NativePackageInstaller::ExecutableFinder
Public Class Methods
Source
# File lib/native-package-installer/executable-finder.rb, line 25 def exist?(basename) new(basename).exist? end
Source
# File lib/native-package-installer/executable-finder.rb, line 21 def find(basename) new(basename).find end
Source
# File lib/native-package-installer/executable-finder.rb, line 30 def initialize(basename) @basename = basename @appended_paths = [] end
Public Instance Methods
Source
# File lib/native-package-installer/executable-finder.rb, line 54 def append_path(path) @appended_paths << path end
Source
# File lib/native-package-installer/executable-finder.rb, line 50 def exist? not find.nil? end
Source
# File lib/native-package-installer/executable-finder.rb, line 35 def find extensions = detect_extensions paths.each do |path| executable_file = File.join(path, @basename) return executable_file if executable?(executable_file) extensions.each do |extension| executable_file_with_extension = executable_file + extension if executable?(executable_file_with_extension) return executable_file_with_extension end end end nil end
Private Instance Methods
Source
# File lib/native-package-installer/executable-finder.rb, line 69 def detect_extensions exts = RbConfig::CONFIG["EXECUTABLE_EXTS"] return exts.split if exts ext = RbConfig::CONFIG["EXEEXT"] return [ext] if ext [] end
Source
# File lib/native-package-installer/executable-finder.rb, line 77 def executable?(path) begin stat = File.stat(path) rescue SystemCallError false else stat.file? and stat.executable? end end
Source
# File lib/native-package-installer/executable-finder.rb, line 59 def paths path_env = ENV["PATH"] if path_env base_paths = path_env.split(File::PATH_SEPARATOR) else base_paths = ["/usr/local/bin", "/usr/bin", "/bin"] end base_paths + @appended_paths end