From 6f5cd0e7fe87ac7a49b142540ac3ccdfcda58d8b Mon Sep 17 00:00:00 2001 From: EricFromCanada Date: Wed, 19 Feb 2020 16:27:34 -0500 Subject: [PATCH] bump-formula-pr: support add multiple mirror URLs with --mirror --- Library/Homebrew/dev-cmd/bump-formula-pr.rb | 18 ++++++++++-------- docs/Manpage.md | 2 +- manpages/brew.1 | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index f969c245c9..d3a8098dab 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -40,8 +40,9 @@ module Homebrew description: "Print the pull request URL instead of opening in a browser." switch "--no-fork", description: "Don't try to fork the repository." - flag "--mirror=", - description: "Use the specified as a mirror URL." + comma_array "--mirror=", + description: "Use the specified as a mirror URL. If is a comma-separated list "\ + "of URLs, multiple mirrors will be added." flag "--version=", description: "Use the specified to override the value parsed from the URL or tag. Note "\ "that `--version=0` can be used to delete an existing version override from a "\ @@ -168,7 +169,7 @@ module Homebrew new_hash = args[hash_type] if hash_type new_tag = args.tag new_revision = args.revision - new_mirror ||= args.mirror + new_mirrors ||= args.mirror new_mirror ||= case new_url when requested_spec != :devel && %r{.*ftp.gnu.org/gnu.*} new_url.sub "ftp.gnu.org/gnu", "ftpmirror.gnu.org" @@ -179,6 +180,7 @@ module Homebrew when %r{.*mirrors.ocf.berkeley.edu/debian.*} new_url.sub "mirrors.ocf.berkeley.edu/debian", "mirrorservice.org/sites/ftp.debian.org/debian" end + new_mirrors ||= [new_mirror] unless new_mirror.nil? forced_version = args.version new_url_hash = if new_url && new_hash true @@ -253,10 +255,10 @@ module Homebrew backup_file = File.read(formula.path) unless args.dry_run? - if new_mirror + if new_mirrors replacement_pairs << [ /^( +)(url \"#{Regexp.escape(new_url)}\"\n)/m, - "\\1\\2\\1mirror \"#{new_mirror}\"\n", + "\\1\\2\\1mirror \"#{new_mirrors.join("\"\n\\1mirror \"")}\"\n", ] end @@ -278,9 +280,9 @@ module Homebrew old_formula_version.to_s, forced_version, ] - elsif new_mirror + elsif new_mirrors replacement_pairs << [ - /^( +)(mirror \"#{new_mirror}\"\n)/m, + /^( +)(mirror \"#{new_mirrors.last}\"\n)/m, "\\1\\2\\1version \"#{forced_version}\"\n", ] else @@ -312,7 +314,7 @@ module Homebrew new_formula_version = formula_version(formula, requested_spec, new_contents) - if !new_mirror && !formula_spec.mirrors.empty? + if !new_mirrors && !formula_spec.mirrors.empty? if Homebrew.args.force? opoo "#{formula}: Removing all mirrors because a --mirror= argument was not specified." else diff --git a/docs/Manpage.md b/docs/Manpage.md index 0f21851f56..0560e0bea5 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -767,7 +767,7 @@ uses. * `--no-fork`: Don't try to fork the repository. * `--mirror`: - Use the specified *`URL`* as a mirror URL. + Use the specified *`URL`* as a mirror URL. If *`URL`* is a comma-separated list of URLs, multiple mirrors will be added. * `--version`: Use the specified *`version`* to override the value parsed from the URL or tag. Note that `--version=0` can be used to delete an existing version override from a formula if it has become redundant. * `--message`: diff --git a/manpages/brew.1 b/manpages/brew.1 index e9bf2853ad..bb74d1aaf2 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -975,7 +975,7 @@ Don\'t try to fork the repository\. . .TP \fB\-\-mirror\fR -Use the specified \fIURL\fR as a mirror URL\. +Use the specified \fIURL\fR as a mirror URL\. If \fIURL\fR is a comma\-separated list of URLs, multiple mirrors will be added\. . .TP \fB\-\-version\fR