Pre-requisites:
- Make sure we have gemfury accounts username and api access tokens
- Install these gems gem install gemfury gem install httparty
To use this script:
./gemfury_script.rb username1 username2
Pre-requisites:
To use this script:
./gemfury_script.rb username1 username2
#!/usr/bin/env ruby | |
require 'httparty' | |
source_username = ARGV[0] | |
source_api_token = ARGV[1] | |
source_http_download_url = "http://manage.fury.io/2/indexes/ruby/#{source_username}/download" | |
target_username = ARGV[2] | |
target_api_token = ARGV[3] | |
packages = %x[ fury list --as #{source_username} --api-token=#{source_api_token} ] | |
packages = packages.gsub("*** GEMFURY PACKAGES ***","").gsub(/\s\(\d.\d\)/,'').split("\n").reject!(&:empty?) | |
packages.each do |pkg| | |
pkg_name = pkg.gsub(/\s\((\d.\d.\d|\d.\d\|\d){,2}\)/,'') | |
versions = %x(fury versions #{pkg_name} --as #{source_username} --api-token=#{source_api_token}) | |
versions = versions.split("\n").reject!(&:empty?) | |
if versions.length > 0 | |
versions = versions.drop(1) | |
versions.each do |version| | |
File.open("/tmp/mygems/#{pkg_name}-#{version}.gem", "wb+") do |f| | |
f.write HTTParty.get(source_http_download_url + "/#{pkg_name}-#{version}/", basic_auth: {username: source_api_token }) | |
end | |
end | |
end | |
end | |
# upload all downloaded gems to new gemfury server | |
%x[ echo 'Y' | fury migrate /tmp/mygems --as #{target_username} --api-token=#{target_api_token} ] |