2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2020-04-27 20:27:42 +01:00
|
|
|
require "bintray"
|
2019-04-17 18:25:08 +09:00
|
|
|
require "cli/parser"
|
2018-04-10 18:37:15 +05:30
|
|
|
|
2016-05-20 11:00:51 +01:00
|
|
|
module Homebrew
|
2016-09-26 01:44:51 +02:00
|
|
|
module_function
|
|
|
|
|
2018-07-30 18:25:38 +05:30
|
|
|
def mirror_args
|
|
|
|
Homebrew::CLI::Parser.new do
|
2018-09-28 21:39:52 +05:30
|
|
|
usage_banner <<~EOS
|
2019-01-30 21:33:03 +00:00
|
|
|
`mirror` <formula>
|
2018-10-02 19:54:22 +05:30
|
|
|
|
2020-04-18 12:13:43 -04:00
|
|
|
Reupload the stable URL of a formula to Bintray for use as a mirror.
|
2018-09-28 21:39:52 +05:30
|
|
|
EOS
|
2020-04-27 20:27:42 +01:00
|
|
|
flag "--bintray-org=",
|
|
|
|
description: "Upload to the specified Bintray organisation (default: homebrew)."
|
2018-04-01 16:47:30 +05:30
|
|
|
switch :verbose
|
2018-10-08 22:49:03 -04:00
|
|
|
switch :debug
|
2019-01-30 21:33:03 +00:00
|
|
|
hide_from_man_page!
|
2020-03-04 17:28:24 +00:00
|
|
|
min_named :formula
|
2018-04-01 16:47:30 +05:30
|
|
|
end
|
2018-07-30 18:25:38 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
def mirror
|
|
|
|
mirror_args.parse
|
2018-04-01 16:47:30 +05:30
|
|
|
|
2020-04-27 20:27:42 +01:00
|
|
|
bintray_org = args.bintray_org || "homebrew"
|
|
|
|
bintray_repo = "mirror"
|
|
|
|
|
|
|
|
bintray = Bintray.new(org: bintray_org)
|
2016-05-20 11:00:51 +01:00
|
|
|
|
2020-03-04 17:28:24 +00:00
|
|
|
args.formulae.each do |f|
|
2016-05-20 11:00:51 +01:00
|
|
|
bintray_package = Utils::Bottles::Bintray.package f.name
|
2020-04-27 20:27:42 +01:00
|
|
|
|
|
|
|
unless bintray.package_exists?(repo: bintray_repo, package: bintray_package)
|
|
|
|
bintray.create_package repo: bintray_repo, package: bintray_package
|
2016-05-20 11:00:51 +01:00
|
|
|
end
|
|
|
|
|
2018-10-01 10:19:55 +02:00
|
|
|
downloader = f.downloader
|
|
|
|
|
|
|
|
downloader.fetch
|
|
|
|
|
2020-05-10 00:30:32 +01:00
|
|
|
filename = ERB::Util.url_encode(downloader.basename)
|
2016-05-20 11:00:51 +01:00
|
|
|
|
2020-04-27 20:27:42 +01:00
|
|
|
destination_url = "https://dl.bintray.com/#{bintray_org}/#{bintray_repo}/#{filename}"
|
2016-05-20 11:00:51 +01:00
|
|
|
ohai "Uploading to #{destination_url}"
|
2018-10-01 10:19:55 +02:00
|
|
|
|
2020-05-10 00:30:32 +01:00
|
|
|
version = ERB::Util.url_encode(f.pkg_version)
|
2020-04-27 20:27:42 +01:00
|
|
|
bintray.upload(
|
|
|
|
downloader.cached_location,
|
|
|
|
repo: bintray_repo,
|
|
|
|
package: bintray_package,
|
2020-05-10 00:30:32 +01:00
|
|
|
version: version,
|
2020-04-27 20:27:42 +01:00
|
|
|
sha256: f.stable.checksum,
|
|
|
|
remote_file: filename,
|
|
|
|
)
|
2020-05-10 00:30:32 +01:00
|
|
|
bintray.publish(repo: bintray_repo, package: bintray_package, version: version)
|
2016-05-20 11:00:51 +01:00
|
|
|
ohai "Mirrored #{filename}!"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|