mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
dev-cmd/bump: add switch to open pull requests.
This enables the simplification of https://github.com/Homebrew/actions/blob/master/bump-formulae/main.rb and exposing this workflow to more Homebrew users.
This commit is contained in:
parent
3ba6afb1d3
commit
af6d995de8
@ -25,12 +25,15 @@ module Homebrew
|
||||
description: "Check only formulae."
|
||||
switch "--cask", "--casks",
|
||||
description: "Check only casks."
|
||||
switch "--open-pr",
|
||||
description: "Open a pull request for the new version if there are none already open."
|
||||
flag "--limit=",
|
||||
description: "Limit number of package results returned."
|
||||
flag "--start-with=",
|
||||
description: "Letter or word that the list of package results should alphabetically follow."
|
||||
|
||||
conflicts "--cask", "--formula"
|
||||
conflicts "--no-pull-requests", "--open-pr"
|
||||
|
||||
named_args [:formula, :cask]
|
||||
end
|
||||
@ -103,7 +106,7 @@ module Homebrew
|
||||
end
|
||||
|
||||
package_data = Repology.single_package_query(name, repository: repository)
|
||||
retrieve_and_display_info(
|
||||
retrieve_and_display_info_and_open_pr(
|
||||
formula_or_cask,
|
||||
name,
|
||||
package_data&.values&.first,
|
||||
@ -157,7 +160,13 @@ module Homebrew
|
||||
end
|
||||
|
||||
puts if i.positive?
|
||||
retrieve_and_display_info(formula_or_cask, name, repositories, args: args, ambiguous_cask: ambiguous_cask)
|
||||
retrieve_and_display_info_and_open_pr(
|
||||
formula_or_cask,
|
||||
name,
|
||||
repositories,
|
||||
args: args,
|
||||
ambiguous_cask: ambiguous_cask,
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -205,44 +214,59 @@ module Homebrew
|
||||
pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
|
||||
end
|
||||
|
||||
return "none" if pull_requests.blank?
|
||||
|
||||
pull_requests
|
||||
end
|
||||
|
||||
def retrieve_and_display_info(formula_or_cask, name, repositories, args:, ambiguous_cask: false)
|
||||
current_version = if formula_or_cask.is_a?(Formula)
|
||||
formula_or_cask.stable.version
|
||||
def retrieve_and_display_info_and_open_pr(formula_or_cask, name, repositories, args:, ambiguous_cask: false)
|
||||
if formula_or_cask.is_a?(Formula)
|
||||
current_version = formula_or_cask.stable.version
|
||||
type = :formula
|
||||
version_name = "formula version"
|
||||
else
|
||||
Version.new(formula_or_cask.version)
|
||||
current_version = Version.new(formula_or_cask.version)
|
||||
type = :cask
|
||||
version_name = "cask version "
|
||||
end
|
||||
|
||||
livecheck_latest = livecheck_result(formula_or_cask)
|
||||
|
||||
repology_latest = if repositories.present?
|
||||
Repology.latest_version(repositories)
|
||||
else
|
||||
"not found"
|
||||
end
|
||||
|
||||
livecheck_latest = livecheck_result(formula_or_cask)
|
||||
pull_requests = if !args.no_pull_requests? && (args.named.present? ||
|
||||
(livecheck_latest.is_a?(Version) && livecheck_latest != current_version))
|
||||
retrieve_pull_requests(formula_or_cask, name)
|
||||
end
|
||||
new_version = if livecheck_latest.is_a?(Version) && livecheck_latest > current_version
|
||||
livecheck_latest
|
||||
elsif repology_latest.is_a?(Version) && repology_latest > current_version
|
||||
repology_latest
|
||||
end.presence
|
||||
|
||||
name += " (cask)" if ambiguous_cask
|
||||
pull_requests = if !args.no_pull_requests? && (args.named.present? || new_version)
|
||||
retrieve_pull_requests(formula_or_cask, name)
|
||||
end.presence
|
||||
|
||||
title_name = ambiguous_cask ? "#{name} (cask)" : name
|
||||
title = if current_version == repology_latest &&
|
||||
current_version == livecheck_latest
|
||||
"#{name} #{Tty.green}is up to date!#{Tty.reset}"
|
||||
"#{title_name} #{Tty.green}is up to date!#{Tty.reset}"
|
||||
else
|
||||
name
|
||||
title_name
|
||||
end
|
||||
|
||||
ohai title
|
||||
puts <<~EOS
|
||||
Current #{formula_or_cask.is_a?(Formula) ? "formula version:" : "cask version: "} #{current_version}
|
||||
Current #{version_name}: #{current_version}
|
||||
Latest livecheck version: #{livecheck_latest}
|
||||
Latest Repology version: #{repology_latest}
|
||||
Open pull requests: #{pull_requests || "none"}
|
||||
EOS
|
||||
puts "Open pull requests: #{pull_requests}" unless pull_requests.nil?
|
||||
|
||||
return unless args.open_pr?
|
||||
return unless new_version
|
||||
return if pull_requests
|
||||
|
||||
system HOMEBREW_BREW_FILE, "bump-#{type}-pr", "--no-browse",
|
||||
"--message=Created by `brew bump`", "--version=#{new_version}", name
|
||||
end
|
||||
end
|
||||
|
@ -99,6 +99,6 @@ module Repology
|
||||
# scheme
|
||||
return "no latest version" if latest_version.blank?
|
||||
|
||||
latest_version["version"]
|
||||
Version.new(latest_version["version"])
|
||||
end
|
||||
end
|
||||
|
@ -436,6 +436,7 @@ _brew_bump() {
|
||||
--help
|
||||
--limit
|
||||
--no-pull-requests
|
||||
--open-pr
|
||||
--quiet
|
||||
--start-with
|
||||
--verbose
|
||||
|
@ -388,6 +388,7 @@ __fish_brew_complete_arg 'bump' -l full-name -d 'Print formulae/casks with fully
|
||||
__fish_brew_complete_arg 'bump' -l help -d 'Show this message'
|
||||
__fish_brew_complete_arg 'bump' -l limit -d 'Limit number of package results returned'
|
||||
__fish_brew_complete_arg 'bump' -l no-pull-requests -d 'Do not retrieve pull requests from GitHub'
|
||||
__fish_brew_complete_arg 'bump' -l open-pr -d 'Open a pull request for the new version if there are none already open'
|
||||
__fish_brew_complete_arg 'bump' -l quiet -d 'Make some output more quiet'
|
||||
__fish_brew_complete_arg 'bump' -l start-with -d 'Letter or word that the list of package results should alphabetically follow'
|
||||
__fish_brew_complete_arg 'bump' -l verbose -d 'Make some output more verbose'
|
||||
|
@ -478,6 +478,7 @@ _brew_bump() {
|
||||
'--help[Show this message]' \
|
||||
'--limit[Limit number of package results returned]' \
|
||||
'--no-pull-requests[Do not retrieve pull requests from GitHub]' \
|
||||
'--open-pr[Open a pull request for the new version if there are none already open]' \
|
||||
'--quiet[Make some output more quiet]' \
|
||||
'--start-with[Letter or word that the list of package results should alphabetically follow]' \
|
||||
'--verbose[Make some output more verbose]' \
|
||||
|
@ -926,6 +926,8 @@ formulae, also displays whether a pull request has been opened with the URL.
|
||||
Check only formulae.
|
||||
* `--cask`:
|
||||
Check only casks.
|
||||
* `--open-pr`:
|
||||
Open a pull request for the new version if there are none already open.
|
||||
* `--limit`:
|
||||
Limit number of package results returned.
|
||||
* `--start-with`:
|
||||
|
@ -1295,6 +1295,10 @@ Check only formulae\.
|
||||
Check only casks\.
|
||||
.
|
||||
.TP
|
||||
\fB\-\-open\-pr\fR
|
||||
Open a pull request for the new version if there are none already open\.
|
||||
.
|
||||
.TP
|
||||
\fB\-\-limit\fR
|
||||
Limit number of package results returned\.
|
||||
.
|
||||
|
Loading…
x
Reference in New Issue
Block a user