pull: optionally warn (not die) on bottle publish failure.

This is useful when you're pulling PRs where individual bottles can't be
uploaded/built but you still want to pull the PR as a whole anyway.
This commit is contained in:
Mike McQuaid 2017-02-20 12:47:08 +00:00
parent 08a22d013e
commit e723131438
3 changed files with 23 additions and 5 deletions

View File

@ -1,4 +1,5 @@
#: * `pull` [`--bottle`] [`--bump`] [`--clean`] [`--ignore-whitespace`] [`--resolve`] [`--branch-okay`] [`--no-pbcopy`] [`--no-publish`] <patch-source> [<patch-source>]: #: * `pull` [`--bottle`] [`--bump`] [`--clean`] [`--ignore-whitespace`] [`--resolve`] [`--branch-okay`] [`--no-pbcopy`] [`--no-publish`] [`--warn-on-publish-failure`] <patch-source> [<patch-source>]:
#:
#: Gets a patch from a GitHub commit or pull request and applies it to Homebrew. #: Gets a patch from a GitHub commit or pull request and applies it to Homebrew.
#: Optionally, installs the formulae changed by the patch. #: Optionally, installs the formulae changed by the patch.
#: #:
@ -37,6 +38,9 @@
#: clipboard. #: clipboard.
#: #:
#: If `--no-publish` is passed, do not publish bottles to Bintray. #: If `--no-publish` is passed, do not publish bottles to Bintray.
#:
#: If `--warn-on-publish-failure` was passed, do not exit if there's a
#: failure publishing bottles on Bintray.
require "net/http" require "net/http"
require "net/https" require "net/https"
@ -264,7 +268,7 @@ module Homebrew
changed_formulae_names.each do |name| changed_formulae_names.each do |name|
f = Formula[name] f = Formula[name]
next if f.bottle_unneeded? || f.bottle_disabled? next if f.bottle_unneeded? || f.bottle_disabled?
publish_bottle_file_on_bintray(f, bintray_creds) next unless publish_bottle_file_on_bintray(f, bintray_creds)
published << f.full_name published << f.full_name
end end
else else
@ -425,7 +429,7 @@ module Homebrew
end end
unless info.bottle_info_any unless info.bottle_info_any
opoo "No bottle defined in formula #{package}" opoo "No bottle defined in formula #{package}"
return return false
end end
version = info.pkg_version version = info.pkg_version
ohai "Publishing on Bintray: #{package} #{version}" ohai "Publishing on Bintray: #{package} #{version}"
@ -434,6 +438,11 @@ module Homebrew
"-H", "Content-Type: application/json", "-H", "Content-Type: application/json",
"-d", '{"publish_wait_for_secs": 0}', "-d", '{"publish_wait_for_secs": 0}',
"https://api.bintray.com/content/homebrew/#{repo}/#{package}/#{version}/publish" "https://api.bintray.com/content/homebrew/#{repo}/#{package}/#{version}/publish"
true
rescue => e
raise unless ARGV.include?("--warn-on-publish-failure")
onoe e
false
end end
# Formula info drawn from an external "brew info --json" call # Formula info drawn from an external "brew info --json" call

View File

@ -746,7 +746,8 @@ With `--verbose` or `-v`, many commands print extra debugging information. Note
Additionally, the date used in new manpages will match those in the existing Additionally, the date used in new manpages will match those in the existing
manpages (to allow comparison without factoring in the date). manpages (to allow comparison without factoring in the date).
* `pull` [`--bottle`] [`--bump`] [`--clean`] [`--ignore-whitespace`] [`--resolve`] [`--branch-okay`] [`--no-pbcopy`] [`--no-publish`] <var>patch-source</var> [<var>patch-source</var>]: * `pull` [`--bottle`] [`--bump`] [`--clean`] [`--ignore-whitespace`] [`--resolve`] [`--branch-okay`] [`--no-pbcopy`] [`--no-publish`] [`--warn-on-publish-failure`] <var>patch-source</var> [<var>patch-source</var>]:
Gets a patch from a GitHub commit or pull request and applies it to Homebrew. Gets a patch from a GitHub commit or pull request and applies it to Homebrew.
Optionally, installs the formulae changed by the patch. Optionally, installs the formulae changed by the patch.
@ -786,6 +787,9 @@ With `--verbose` or `-v`, many commands print extra debugging information. Note
If `--no-publish` is passed, do not publish bottles to Bintray. If `--no-publish` is passed, do not publish bottles to Bintray.
If `--warn-on-publish-failure` was passed, do not exit if there's a
failure publishing bottles on Bintray.
* `release-notes` [`--markdown`] [<var>previous_tag</var>] [<var>end_ref</var>]: * `release-notes` [`--markdown`] [<var>previous_tag</var>] [<var>end_ref</var>]:
Output the merged pull requests on Homebrew/brew between two Git refs. Output the merged pull requests on Homebrew/brew between two Git refs.
If no <var>previous_tag</var> is provided it defaults to the newest tag. If no <var>previous_tag</var> is provided it defaults to the newest tag.

View File

@ -770,7 +770,9 @@ Generate Homebrew\'s manpages\.
If \fB\-\-fail\-if\-changed\fR is passed, the command will return a failing status code if changes are detected in the manpage outputs\. This can be used for CI to be notified when the manpages are out of date\. Additionally, the date used in new manpages will match those in the existing manpages (to allow comparison without factoring in the date)\. If \fB\-\-fail\-if\-changed\fR is passed, the command will return a failing status code if changes are detected in the manpage outputs\. This can be used for CI to be notified when the manpages are out of date\. Additionally, the date used in new manpages will match those in the existing manpages (to allow comparison without factoring in the date)\.
. .
.TP .TP
\fBpull\fR [\fB\-\-bottle\fR] [\fB\-\-bump\fR] [\fB\-\-clean\fR] [\fB\-\-ignore\-whitespace\fR] [\fB\-\-resolve\fR] [\fB\-\-branch\-okay\fR] [\fB\-\-no\-pbcopy\fR] [\fB\-\-no\-publish\fR] \fIpatch\-source\fR [\fIpatch\-source\fR] \fBpull\fR [\fB\-\-bottle\fR] [\fB\-\-bump\fR] [\fB\-\-clean\fR] [\fB\-\-ignore\-whitespace\fR] [\fB\-\-resolve\fR] [\fB\-\-branch\-okay\fR] [\fB\-\-no\-pbcopy\fR] [\fB\-\-no\-publish\fR] [\fB\-\-warn\-on\-publish\-failure\fR] \fIpatch\-source\fR [\fIpatch\-source\fR]:
.
.IP
Gets a patch from a GitHub commit or pull request and applies it to Homebrew\. Optionally, installs the formulae changed by the patch\. Gets a patch from a GitHub commit or pull request and applies it to Homebrew\. Optionally, installs the formulae changed by the patch\.
. .
.IP .IP
@ -812,6 +814,9 @@ If \fB\-\-no\-pbcopy\fR is passed, do not copy anything to the system clipboard\
.IP .IP
If \fB\-\-no\-publish\fR is passed, do not publish bottles to Bintray\. If \fB\-\-no\-publish\fR is passed, do not publish bottles to Bintray\.
. .
.IP
If \fB\-\-warn\-on\-publish\-failure\fR was passed, do not exit if there\'s a failure publishing bottles on Bintray\.
.
.TP .TP
\fBrelease\-notes\fR [\fB\-\-markdown\fR] [\fIprevious_tag\fR] [\fIend_ref\fR] \fBrelease\-notes\fR [\fB\-\-markdown\fR] [\fIprevious_tag\fR] [\fIend_ref\fR]
Output the merged pull requests on Homebrew/brew between two Git refs\. If no \fIprevious_tag\fR is provided it defaults to the newest tag\. If no \fIend_ref\fR is provided it defaults to \fBorigin/master\fR\. Output the merged pull requests on Homebrew/brew between two Git refs\. If no \fIprevious_tag\fR is provided it defaults to the newest tag\. If no \fIend_ref\fR is provided it defaults to \fBorigin/master\fR\.