GIF87a;
require 'rubygems/source' class Gem::Source::Local < Gem::Source def initialize @uri = nil end def load_specs(type) names = [] @specs = {} Dir["*.gem"].each do |file| begin pkg = Gem::Package.new(file) rescue SystemCallError, Gem::Package::FormatError # ignore else tup = pkg.spec.name_tuple @specs[tup] = [File.expand_path(file), pkg] case type when :released unless pkg.spec.version.prerelease? names << pkg.spec.name_tuple end when :prerelease if pkg.spec.version.prerelease? names << pkg.spec.name_tuple end when :latest tup = pkg.spec.name_tuple cur = names.find { |x| x.name == tup.name } if !cur names << tup elsif cur.version < tup.version names.delete cur names << tup end else names << pkg.spec.name_tuple end end end names end def find_gem(gem_name, version=Gem::Requirement.default, prerelease=false) load_specs :complete found = [] @specs.each do |n, data| if n.name == gem_name s = data[1].spec if version.satisfied_by?(s.version) if prerelease found << s elsif !s.version.prerelease? found << s end end end end found.sort_by { |s| s.version }.last end def fetch_spec(name) load_specs :complete if data = @specs[name] data.last.spec else raise Gem::Exception, "Unable to find spec for '#{name}'" end end def download(spec, cache_dir=nil) load_specs :complete @specs.each do |name, data| return data[0] if data[1].spec == spec end raise Gem::Exception, "Unable to find file for '#{spec.full_name}'" end end
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
commands | Folder | 0755 |
|
|
core_ext | Folder | 0755 |
|
|
defaults | Folder | 0755 |
|
|
ext | Folder | 0755 |
|
|
package | Folder | 0755 |
|
|
security | Folder | 0755 |
|
|
ssl_certs | Folder | 0755 |
|
|
LICENSE.txt | File | 2.27 KB | 0644 |
|
available_set.rb | File | 1.56 KB | 0644 |
|
command.rb | File | 13.43 KB | 0644 |
|
command_manager.rb | File | 5.36 KB | 0644 |
|
compatibility.rb | File | 1.58 KB | 0644 |
|
config_file.rb | File | 11.82 KB | 0644 |
|
defaults.rb | File | 3.06 KB | 0644 |
|
dependency.rb | File | 7.74 KB | 0644 |
|
dependency_installer.rb | File | 12.12 KB | 0644 |
|
dependency_list.rb | File | 5.53 KB | 0644 |
|
dependency_resolver.rb | File | 14.97 KB | 0644 |
|
deprecate.rb | File | 1.73 KB | 0644 |
|
doctor.rb | File | 2.86 KB | 0644 |
|
errors.rb | File | 2.14 KB | 0644 |
|
exceptions.rb | File | 2.7 KB | 0644 |
|
ext.rb | File | 416 B | 0644 |
|
gem_runner.rb | File | 1.98 KB | 0644 |
|
gemcutter_utilities.rb | File | 2.91 KB | 0644 |
|
indexer.rb | File | 12.89 KB | 0644 |
|
install_message.rb | File | 281 B | 0644 |
|
install_update_options.rb | File | 5.09 KB | 0644 |
|
installer.rb | File | 23.04 KB | 0644 |
|
installer_test_case.rb | File | 4.28 KB | 0644 |
|
local_remote_options.rb | File | 3.36 KB | 0644 |
|
mock_gem_ui.rb | File | 1.35 KB | 0644 |
|
name_tuple.rb | File | 1.96 KB | 0644 |
|
package.rb | File | 14.38 KB | 0644 |
|
package_task.rb | File | 3.77 KB | 0644 |
|
path_support.rb | File | 1.58 KB | 0644 |
|
platform.rb | File | 5.63 KB | 0644 |
|
psych_additions.rb | File | 249 B | 0644 |
|
psych_tree.rb | File | 763 B | 0644 |
|
rdoc.rb | File | 7.72 KB | 0644 |
|
remote_fetcher.rb | File | 15.69 KB | 0644 |
|
request_set.rb | File | 3.67 KB | 0644 |
|
requirement.rb | File | 6.02 KB | 0644 |
|
safe_yaml.rb | File | 1.11 KB | 0644 |
|
security.rb | File | 20.56 KB | 0644 |
|
server.rb | File | 22.03 KB | 0644 |
|
source.rb | File | 3.12 KB | 0644 |
|
source_list.rb | File | 1.22 KB | 0644 |
|
source_local.rb | File | 1.88 KB | 0644 |
|
source_specific_file.rb | File | 552 B | 0644 |
|
spec_fetcher.rb | File | 5.17 KB | 0644 |
|
specification.rb | File | 68.24 KB | 0644 |
|
syck_hack.rb | File | 2.07 KB | 0644 |
|
test_case.rb | File | 28.09 KB | 0644 |
|
test_utilities.rb | File | 4.03 KB | 0644 |
|
text.rb | File | 1.72 KB | 0644 |
|
uninstaller.rb | File | 8.32 KB | 0644 |
|
user_interaction.rb | File | 11.68 KB | 0644 |
|
validator.rb | File | 4.08 KB | 0644 |
|
version.rb | File | 10.5 KB | 0644 |
|
version_option.rb | File | 1.59 KB | 0644 |
|