mirror: add command to mirror to Bintray. (#263)
Used for uploading imagemagick 6.9.4-3.
This commit is contained in:
		
							parent
							
								
									a0d008af77
								
							
						
					
					
						commit
						0123e04fae
					
				
							
								
								
									
										49
									
								
								Library/Homebrew/dev-cmd/mirror.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Library/Homebrew/dev-cmd/mirror.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
			
		||||
# Mirrors the stable URL for a formula on Bintray.
 | 
			
		||||
#
 | 
			
		||||
# Usage: brew mirror <formula> [<formula> ...]
 | 
			
		||||
 | 
			
		||||
module Homebrew
 | 
			
		||||
  def mirror
 | 
			
		||||
    if ARGV.named.empty?
 | 
			
		||||
      odie "This command requires at least formula argument!"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    bintray_user = ENV["BINTRAY_USER"]
 | 
			
		||||
    bintray_key = ENV["BINTRAY_KEY"]
 | 
			
		||||
    if !bintray_user || !bintray_key
 | 
			
		||||
      raise "Missing BINTRAY_USER or BINTRAY_KEY variables!"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    ARGV.formulae.each do |f|
 | 
			
		||||
      bintray_package = Utils::Bottles::Bintray.package f.name
 | 
			
		||||
      bintray_repo_url = "https://api.bintray.com/packages/homebrew/mirror"
 | 
			
		||||
      package_url = "#{bintray_repo_url}/#{bintray_package}"
 | 
			
		||||
 | 
			
		||||
      unless system "curl", "--silent", "--fail", "--output", "/dev/null", package_url
 | 
			
		||||
        package_blob = <<-EOS.undent
 | 
			
		||||
          {"name": "#{bintray_package}",
 | 
			
		||||
           "public_download_numbers": true,
 | 
			
		||||
           "public_stats": true}
 | 
			
		||||
        EOS
 | 
			
		||||
        curl "--silent", "--fail", "-u#{bintray_user}:#{bintray_key}",
 | 
			
		||||
             "-H", "Content-Type: application/json",
 | 
			
		||||
             "-d", package_blob, bintray_repo_url
 | 
			
		||||
        puts
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      download = f.fetch
 | 
			
		||||
      f.verify_download_integrity(download)
 | 
			
		||||
      filename = download.basename
 | 
			
		||||
      destination_url = "https://dl.bintray.com/homebrew/mirror/#{filename}"
 | 
			
		||||
 | 
			
		||||
      ohai "Uploading to #{destination_url}"
 | 
			
		||||
      content_url = "https://api.bintray.com/content/homebrew/mirror"
 | 
			
		||||
      content_url += "/#{bintray_package}/#{f.pkg_version}/#{filename}"
 | 
			
		||||
      content_url += "?publish=1"
 | 
			
		||||
      curl "--silent", "--fail", "-u#{bintray_user}:#{bintray_key}",
 | 
			
		||||
           "-T", download, content_url
 | 
			
		||||
      puts
 | 
			
		||||
      ohai "Mirrored #{filename}!"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user