Sha256: 0060d84abc91b9bf282d6547e6928e15496cb925ce4fd47b5e6795f077b7a073
Contents?: true
Size: 1.65 KB
Versions: 7
Compression:
Stored size: 1.65 KB
Contents
require 'fileutils' module FileUtils if const_defined?(:Win32Exts) Win32Exts.concat %w{.exe .com .bat .cmd} Win32Exts.uniq! else Win32Exts = %w{.exe .com .bat .cmd} end module_function # Looks for the first occurrence of _program_ within _path_. # # On the MS Windows platform, it looks for executables ending with .exe, # .bat and .com, which you may optionally include in the program name. # Returns <tt>nil</tt> if not found. # # CREDIT: Daniel J. Berger, Michael Granger # #-- # The which() method was adopted from Daniel J. Berger, via PTools # which in in turn was adopted fromt the FileWhich code posted by # Michael Granger on http://www.rubygarden.org. #++ def which(prog, path=ENV['PATH']) path.split(File::PATH_SEPARATOR).each {|dir| # Windows checks against specific extensions if File::ALT_SEPARATOR ext = Win32Exts.find{|ext| if prog.include?('.') # Assume extension already included f = File.join(dir,prog) else f = File.join(dir,prog+ext) end File.executable?(f) && !File.directory?(f) } if ext # Use backslashes, not forward slashes if prog.include?('.') # Assume extension already included f = File.join( dir, prog ).gsub(/\//,'\\') else f = File.join( dir, prog + ext ).gsub(/\//,'\\') end return f end else f = File.join(dir,prog) # Avoid /usr/lib/ruby, for example if File.executable?(f) && !File.directory?(f) return File::join( dir, prog ) end end } nil end end
Version data entries
7 entries across 6 versions & 2 rubygems