Merge pull request #12282 from Bo98/pr-upload-only

dev-cmd/pr-upload: add --upload-only switch
This commit is contained in:
Bo Anderson 2021-10-21 12:05:40 +01:00 committed by GitHub
commit 59d25d3ae8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,6 +26,8 @@ module Homebrew
switch "--warn-on-upload-failure", switch "--warn-on-upload-failure",
description: "Warn instead of raising an error if the bottle upload fails. "\ description: "Warn instead of raising an error if the bottle upload fails. "\
"Useful for repairing bottle uploads that previously failed." "Useful for repairing bottle uploads that previously failed."
switch "--upload-only",
description: "Skip running `brew bottle` before uploading."
flag "--committer=", flag "--committer=",
description: "Specify a committer name and email in `git`'s standard author format." description: "Specify a committer name and email in `git`'s standard author format."
flag "--github-org=", flag "--github-org=",
@ -36,6 +38,9 @@ module Homebrew
description: "Use the specified download strategy class for downloading the bottle's URL instead of "\ description: "Use the specified download strategy class for downloading the bottle's URL instead of "\
"Homebrew's default." "Homebrew's default."
conflicts "--upload-only", "--keep-old"
conflicts "--upload-only", "--no-commit"
named_args :none named_args :none
end end
end end
@ -90,61 +95,63 @@ module Homebrew
odie "No bottle JSON files found in the current working directory" if json_files.blank? odie "No bottle JSON files found in the current working directory" if json_files.blank?
bottles_hash = bottles_hash_from_json_files(json_files, args) bottles_hash = bottles_hash_from_json_files(json_files, args)
bottle_args = ["bottle", "--merge", "--write"] unless args.upload_only?
bottle_args << "--verbose" if args.verbose? bottle_args = ["bottle", "--merge", "--write"]
bottle_args << "--debug" if args.debug? bottle_args << "--verbose" if args.verbose?
bottle_args << "--keep-old" if args.keep_old? bottle_args << "--debug" if args.debug?
bottle_args << "--root-url=#{args.root_url}" if args.root_url bottle_args << "--keep-old" if args.keep_old?
bottle_args << "--committer=#{args.committer}" if args.committer bottle_args << "--root-url=#{args.root_url}" if args.root_url
bottle_args << "--no-commit" if args.no_commit? bottle_args << "--committer=#{args.committer}" if args.committer
bottle_args << "--root-url-using=#{args.root_url_using}" if args.root_url_using bottle_args << "--no-commit" if args.no_commit?
bottle_args += json_files bottle_args << "--root-url-using=#{args.root_url_using}" if args.root_url_using
bottle_args += json_files
if args.dry_run? if args.dry_run?
dry_run_service = if github_packages?(bottles_hash) dry_run_service = if github_packages?(bottles_hash)
# GitHub Packages has its own --dry-run handling. # GitHub Packages has its own --dry-run handling.
nil nil
elsif github_releases?(bottles_hash) elsif github_releases?(bottles_hash)
"GitHub Releases" "GitHub Releases"
else else
odie "Service specified by root_url is not recognized" odie "Service specified by root_url is not recognized"
end
if dry_run_service
puts <<~EOS
brew #{bottle_args.join " "}
Upload bottles described by these JSON files to #{dry_run_service}:
#{json_files.join("\n ")}
EOS
return
end
end end
if dry_run_service check_bottled_formulae!(bottles_hash)
puts <<~EOS
brew #{bottle_args.join " "} # This will be run by `brew bottle` and `brew audit` later so run it first
Upload bottles described by these JSON files to #{dry_run_service}: # to not start spamming during normal output.
#{json_files.join("\n ")} Homebrew.install_bundler_gems!
EOS
safe_system HOMEBREW_BREW_FILE, *bottle_args
json_files = Dir["*.bottle.json"]
if json_files.blank?
puts "No bottle JSON files after merge, no upload needed!"
return return
end end
end
check_bottled_formulae!(bottles_hash) # Reload the JSON files (in case `brew bottle --merge` generated
# `all: $SHA256` bottles)
bottles_hash = bottles_hash_from_json_files(json_files, args)
# This will be run by `brew bottle` and `brew audit` later so run it first # Check the bottle commits did not break `brew audit`
# to not start spamming during normal output. unless args.no_commit?
Homebrew.install_bundler_gems! audit_args = ["audit", "--skip-style"]
audit_args << "--verbose" if args.verbose?
safe_system HOMEBREW_BREW_FILE, *bottle_args audit_args << "--debug" if args.debug?
audit_args += bottles_hash.keys
json_files = Dir["*.bottle.json"] safe_system HOMEBREW_BREW_FILE, *audit_args
if json_files.blank? end
puts "No bottle JSON files after merge, no upload needed!"
return
end
# Reload the JSON files (in case `brew bottle --merge` generated
# `all: $SHA256` bottles)
bottles_hash = bottles_hash_from_json_files(json_files, args)
# Check the bottle commits did not break `brew audit`
unless args.no_commit?
audit_args = ["audit", "--skip-style"]
audit_args << "--verbose" if args.verbose?
audit_args << "--debug" if args.debug?
audit_args += bottles_hash.keys
safe_system HOMEBREW_BREW_FILE, *audit_args
end end
if github_releases?(bottles_hash) if github_releases?(bottles_hash)