dev-cmd/pr-pu{ll,blish}: handle PRs with an autosquash label

- request `autosquash` from the publish job in `pr-publish` if the PR is
  labelled with `autosquash`
- show a warning in `pr-pull` if called without `--autosquash` on a PR
  with the autosquash label.
This commit is contained in:
Carlo Cabrera 2023-03-28 21:59:53 +08:00
parent 76833dfe40
commit f0272b0944
No known key found for this signature in database
GPG Key ID: C74D447FC549A1D0
2 changed files with 11 additions and 4 deletions

View File

@ -67,6 +67,10 @@ module Homebrew
inputs[:pull_request] = issue
pr_labels = GitHub.pull_request_labels(user, repo, issue)
oh1 "Found `autosquash` label on ##{issue}. Requesting autosquash."
inputs[:autosquash] = true if pr_labels.include?("autosquash")
if args.tap.present? && !T.must("#{user}/#{repo}".casecmp(tap.full_name)).zero?
odie "Pull request URL is for #{user}/#{repo} but `--tap=#{tap.full_name}` was specified!"
end

View File

@ -308,11 +308,9 @@ module Homebrew
Utils::Git.cherry_pick!(path, "--ff", "--allow-empty", *commits, verbose: args.verbose?, resolve: args.resolve?)
end
def self.formulae_need_bottles?(tap, original_commit, user, repo, pull_request, args:)
def self.formulae_need_bottles?(tap, original_commit, labels, args:)
return if args.dry_run?
labels = GitHub.pull_request_labels(user, repo, pull_request)
return false if labels.include?("CI-syntax-only") || labels.include?("CI-no-bottles")
changed_packages(tap, original_commit).any? do |f|
@ -456,6 +454,11 @@ module Homebrew
opoo "Current branch is #{tap.path.git_branch}: do you need to pull inside #{tap.path.git_origin_branch}?"
end
pr_labels = GitHub.pull_request_labels(user, repo, pr)
if pr_labels.include?("autosquash") && !args.autosquash?
opoo "Pull request is labelled `autosquash`: do you need to pass `--autosquash`?"
end
pr_check_conflicts("#{user}/#{repo}", pr)
ohai "Fetching #{tap} pull request ##{pr}"
@ -478,7 +481,7 @@ module Homebrew
signoff!(tap.path, pull_request: pr, dry_run: args.dry_run?) unless args.clean?
end
unless formulae_need_bottles?(tap, original_commit, user, repo, pr, args: args)
unless formulae_need_bottles?(tap, original_commit, pr_labels, args: args)
ohai "Skipping artifacts for ##{pr} as the formulae don't need bottles"
next
end