Skip to content

Instantly share code, notes, and snippets.

@calavera
Created December 17, 2009 23:12
Show Gist options
  • Save calavera/259123 to your computer and use it in GitHub Desktop.
Save calavera/259123 to your computer and use it in GitHub Desktop.
require 'rubygems/command_manager'
require 'rubygems/remote_fetcher'
require 'rubygems/spec_fetcher'
Gem::CommandManager.instance.register_command :maven
Gem::SpecFetcher.class_eval do
alias :fetch_old :fetch
def fetch(dependency, all = false, matching_platform = true, prerelease = false)
begin
returned = fetch_old(dependency, all, matching_platform, prerelease)
fetch_maven(dependency)
return returned
rescue
fetch_maven(dependency)
raise $!
end
end
private
def fetch_maven(dependency)
require 'net/http'
group, artifact, version = dependency.name.split(':')
uri = "http://mirrors.ibiblio.org/pub/mirrors/maven2/#{group.gsub('.', '/')}/#{artifact}"
uri += "/#{version}" if version
uri = URI.parse(uri)
req = Net::HTTP::Get.new(uri.path)
response = Net::HTTP.start(uri.host, uri.port) {|http| http.request(req) }
case response
when Net::HTTPSuccess, Net::HTTPRedirection
require 'rubygems'
require 'mvn_gem'
MavenGem.install(group, artifact, version)
end
end
end
Gem::RemoteFetcher.class_eval do
alias :download_old :download
def download(spec, source_uri, install_dir = Gem.dir)
puts 'custom method!!!'
download_old(spec, source_uri, install_dir)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment