Class Methods
::
lib/rubygems/commands/which_command.rb
View on GitHub
# File tmp/rubies/ruby-3.3.0/lib/rubygems/commands/which_command.rb, line 6
def initialize
super "which", "Find the location of a library file you can require",
search_gems_first: false, show_all: false
add_option "-a", "--[no-]all", "show all matching files" do |show_all, options|
options[:show_all] = show_all
end
add_option "-g", "--[no-]gems-first",
"search gems before non-gems" do |gems_first, options|
options[:search_gems_first] = gems_first
end
end
No documentation available
Instance Methods
#
lib/rubygems/commands/which_command.rb
View on GitHub
# File tmp/rubies/ruby-3.3.0/lib/rubygems/commands/which_command.rb, line 39
def execute
found = true
options[:args].each do |arg|
arg = arg.sub(/#{Regexp.union(*Gem.suffixes)}$/, "")
dirs = $LOAD_PATH
spec = Gem::Specification.find_by_path arg
if spec
if options[:search_gems_first]
dirs = spec.full_require_paths + $LOAD_PATH
else
dirs = $LOAD_PATH + spec.full_require_paths
end
end
paths = find_paths arg, dirs
if paths.empty?
alert_error "Can't find Ruby library file or shared library #{arg}"
found = false
else
say paths
end
end
terminate_interaction 1 unless found
end
No documentation available
lib/rubygems/commands/which_command.rb
View on GitHub
# File tmp/rubies/ruby-3.3.0/lib/rubygems/commands/which_command.rb, line 69
def find_paths(package_name, dirs)
result = []
dirs.each do |dir|
Gem.suffixes.each do |ext|
full_path = File.join dir, "#{package_name}#{ext}"
if File.exist?(full_path) && !File.directory?(full_path)
result << full_path
return result unless options[:show_all]
end
end
end
result
end
No documentation available