GIF87a;
require 'English' require 'rubygems/command' require 'rubygems/version_option' class Gem::Commands::ContentsCommand < Gem::Command include Gem::VersionOption def initialize super 'contents', 'Display the contents of the installed gems', :specdirs => [], :lib_only => false, :prefix => true add_version_option add_option( '--all', "Contents for all gems") do |all, options| options[:all] = all end add_option('-s', '--spec-dir a,b,c', Array, "Search for gems under specific paths") do |spec_dirs, options| options[:specdirs] = spec_dirs end add_option('-l', '--[no-]lib-only', "Only return files in the Gem's lib_dirs") do |lib_only, options| options[:lib_only] = lib_only end add_option( '--[no-]prefix', "Don't include installed path prefix") do |prefix, options| options[:prefix] = prefix end end def arguments # :nodoc: "GEMNAME name of gem to list contents for" end def defaults_str # :nodoc: "--no-lib-only --prefix" end def usage # :nodoc: "#{program_name} GEMNAME [GEMNAME ...]" end def execute version = options[:version] || Gem::Requirement.default spec_dirs = options[:specdirs].map do |i| [i, File.join(i, "specifications")] end.flatten path_kind = if spec_dirs.empty? then spec_dirs = Gem::Specification.dirs "default gem paths" else "specified path" end gem_names = if options[:all] then Gem::Specification.map(&:name) else get_all_gem_names end gem_names.each do |name| # HACK: find_by_name fails for some reason... ARGH # How many places must we embed our resolve logic? spec = Gem::Specification.find_all_by_name(name, version).last unless spec then say "Unable to find gem '#{name}' in #{path_kind}" if Gem.configuration.verbose then say "\nDirectories searched:" spec_dirs.sort.each { |dir| say dir } end terminate_interaction 1 if gem_names.length == 1 end if spec.default_gem? files = spec.files.sort.map do |file| case file when /\A#{spec.bindir}\// [Gem::ConfigMap[:bindir], $POSTMATCH] when /\.so\z/ [Gem::ConfigMap[:archdir], file] else [Gem::ConfigMap[:rubylibdir], file] end end else gem_path = spec.full_gem_path extra = "/{#{spec.require_paths.join ','}}" if options[:lib_only] glob = "#{gem_path}#{extra}/**/*" prefix_re = /#{Regexp.escape(gem_path)}\// files = Dir[glob].map do |file| [gem_path, file.sub(prefix_re, "")] end end files.sort.each do |prefix, basename| absolute_path = File.join(prefix, basename) next if File.directory? absolute_path if options[:prefix] say absolute_path else say basename end end end end end
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
build_command.rb | File | 859 B | 0644 |
|
cert_command.rb | File | 6.41 KB | 0644 |
|
check_command.rb | File | 2.01 KB | 0644 |
|
cleanup_command.rb | File | 3.82 KB | 0644 |
|
contents_command.rb | File | 3.12 KB | 0644 |
|
dependency_command.rb | File | 3.89 KB | 0644 |
|
environment_command.rb | File | 4.16 KB | 0644 |
|
fetch_command.rb | File | 1.49 KB | 0644 |
|
generate_index_command.rb | File | 2.52 KB | 0644 |
|
help_command.rb | File | 4.56 KB | 0644 |
|
install_command.rb | File | 5.45 KB | 0644 |
|
list_command.rb | File | 696 B | 0644 |
|
lock_command.rb | File | 2.67 KB | 0644 |
|
mirror_command.rb | File | 395 B | 0644 |
|
outdated_command.rb | File | 866 B | 0644 |
|
owner_command.rb | File | 1.9 KB | 0644 |
|
pristine_command.rb | File | 3.66 KB | 0644 |
|
push_command.rb | File | 2.02 KB | 0644 |
|
query_command.rb | File | 8.11 KB | 0644 |
|
rdoc_command.rb | File | 2.31 KB | 0644 |
|
search_command.rb | File | 616 B | 0644 |
|
server_command.rb | File | 2.35 KB | 0644 |
|
setup_command.rb | File | 12.94 KB | 0644 |
|
sources_command.rb | File | 3.62 KB | 0644 |
|
specification_command.rb | File | 2.93 KB | 0644 |
|
stale_command.rb | File | 704 B | 0644 |
|
uninstall_command.rb | File | 3.07 KB | 0644 |
|
unpack_command.rb | File | 4.06 KB | 0644 |
|
update_command.rb | File | 5.8 KB | 0644 |
|
which_command.rb | File | 1.87 KB | 0644 |
|
yank_command.rb | File | 2.4 KB | 0644 |
|