- make the description more generic/correct
- use "internet archive" over "archive"
- move some logic to a new `GitHubReleases` class (for consistency)
- remove some obvious comments
- extract out and move some constants
Previously this would only warn on errors for certain Bintray API
requests like publishing. This should now also warn on error for curl
POST uploads (if the appropriate flag has been passed).
If the remote file is published and has a hash matching the file we're
about to upload, just skip uploading and publishing it entirely, rather
than bailing out with an error.
- This fix was suggested by Sorbet when I ran `HOMEBREW_SORBET=1 bundle
exec srb tc` on the latest `master` while playing around with the
latest changes post-GSoC meeting.
- Then I noticed it was actually a bug, introduced in
adc36a05ffeadb54b94c87d86f62fba9dbb86795, found by us not being able to
publish bottles for [this build of the `n`
formula](https://github.com/Homebrew/homebrew-core/runs/910309641?check_suite_focus=true)
in https://github.com/Homebrew/homebrew-core/pull/58606:
```
[master 31d32307bd] n: update 6.7.0 bottle.
1 file changed, 3 insertions(+), 3 deletions(-)
curl: (22) The requested URL returned error: 404 Not Found
Error: uninitialized constant Bintray::EnvConfig
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/bintray.rb:28:in `open_api'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/bintray.rb:43:in `upload'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/bintray.rb:186:in `block (2 levels) in upload_bottle_json'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/bintray.rb:158:in `each'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/bintray.rb:158:in `block in upload_bottle_json'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/bintray.rb:153:in `each'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/bintray.rb:153:in `upload_bottle_json'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/dev-cmd/pr-upload.rb:54:in `pr_upload'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb:111:in `<main>'
Error: Failure while executing; `/home/linuxbrew/.linuxbrew/bin/brew pr-upload --verbose --bintray-org=homebrew` exited with 1.
```
Parse the JSON output of the upload and publish steps to ensure that
a "success" message is always seen on upload, and that the number of
files published is the same as the number of files we wanted to publish
as based on the bottle JSON description.