Sha256: 86b4e3dbfd0865c2daaf3037e0ca144f7aff49362803cfac7e5a5ae887e8bfd2

Contents?: true

Size: 1.94 KB

Versions: 26

Compression:

Stored size: 1.94 KB

Contents

#--
# Credit goes to Daniel J. Berger, via PTools.
#++
require 'fileutils'

module FileUtils

  module_function

  if defined?(Win32Exts)
    Win32Exts ||= %w{.exe .com .bat}
  else
    Win32Exts = %w{.exe .com .bat}
  end

  # In block form, yields each ((*program*)) within ((*path*)).  In non-block
  # form, returns an array of each ((*program*)) within ((*path*)).  Returns
  # (({nil})) if not found.
  #
  # On the MS Windows platform, it looks for executables ending with .exe,
  # .bat and .com, which you may optionally include in the program name.
  #
  #    File.whereis("ruby") -> ['/usr/local/bin/ruby','/opt/bin/ruby']
  #
  def whereis(prog, path=ENV['PATH']) #:yield:
    dirs = []
    path.split(File::PATH_SEPARATOR).each{|dir|
        # Windows checks against specific extensions
        if File::ALT_SEPARATOR
          if prog.include?('.')
              f = File.join(dir,prog)
              if File.executable?(f) && !File.directory?(f)
                if block_given?
                    yield f.gsub(/\//,'\\')
                else
                    dirs << f.gsub(/\//,'\\')
                end
              end
          else
              Win32Exts.find_all{|ext|
                f = File.join(dir,prog+ext)
                if File.executable?(f) && !File.directory?(f)
                    if block_given?
                      yield f.gsub(/\//,'\\')
                    else
                      dirs << f.gsub(/\//,'\\')
                    end
                end
              }
          end
        else
          f = File.join(dir,prog)
          # Avoid /usr/lib/ruby, for example
          if File.executable?(f) && !File.directory?(f)
              if block_given?
                yield f
              else
                dirs << f
              end
          end
        end
    }
    dirs.empty? ? nil : dirs
  end

end



#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
# TODO

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
facets-1.0.0 lib/facet/fileutils/whereis.rb
facets-0.9.0 lib/nano/fileutils/whereis.rb
facets-1.0.3 packages/core/lib/facet/fileutils/whereis.rb
facets-1.2.1 lib/facets/core/fileutils/whereis.rb
facets-1.2.0 lib/facets/core/fileutils/whereis.rb
facets-1.3.0 lib/facets/core/fileutils/whereis.rb
facets-1.1.0 lib/facet/fileutils/whereis.rb
facets-1.3.1 lib/facets/core/fileutils/whereis.rb
facets-1.3.3 lib/facets/core/fileutils/whereis.rb
facets-1.3.2 lib/facets/core/fileutils/whereis.rb
facets-1.4.0 lib/facets/core/fileutils/whereis.rb
facets-1.4.2 lib/facets/core/fileutils/whereis.rb
facets-1.4.1 lib/facets/core/fileutils/whereis.rb
facets-1.4.3 lib/facets/core/fileutils/whereis.rb
facets-1.4.4 lib/facets/core/fileutils/whereis.rb
facets-1.4.5 lib/facets/core/fileutils/whereis.rb
facets-1.7.0 lib/facets/core/fileutils/whereis.rb
facets-1.7.30 lib/facets/core/fileutils/whereis.rb
facets-1.7.38 lib/facets/core/fileutils/whereis.rb
facets-1.7.46 lib/facets/core/fileutils/whereis.rb