Sha256: de9e6cdb535efe57d21e78cc700475098650002462c40e73c6a8f6bc813d53c7
Contents?: true
Size: 1.32 KB
Versions: 1
Compression:
Stored size: 1.32 KB
Contents
require 'timeout' module Rip class RemoteGemPackage < Package handles do |source| RemoteGemPackage.new(source).exists? end @@remotes = %w( gems.github.com gems.rubyforge.org ) @@exists_cache = {} def exists? return false unless source =~ /^[\w-]+$/ return true if @@exists_cache[source] || File.exists?(cache_path) FileUtils.mkdir_p cache_path Dir.chdir cache_path do @@remotes.each do |remote| ui.puts "Searching %s for %s..." % [ remote, source ] source_flag = "--source=http://#{remote}/" if rgem("fetch #{source} #{source_flag}") =~ /Downloaded (.+)/ @@exists_cache[source] = $1 return true end end end false end def rgem(command) Timeout.timeout(5) do `gem #{command}` end rescue Timeout::Error '' end def meta_package? true end def fetch! end def unpack! installer = Installer.new installer.install actual_package installer.manager.sources[actual_package.name] = source installer.manager.save end def version actual_package ? actual_package.version : super end memoize :actual_package def actual_package Package.for(Dir[cache_path + '/*'].first) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rip-0.0.1 | lib/rip/packages/remote_gem_package.rb |