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."
|
description: "Check only formulae."
|
||||||
switch "--cask", "--casks",
|
switch "--cask", "--casks",
|
||||||
description: "Check only 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=",
|
flag "--limit=",
|
||||||
description: "Limit number of package results returned."
|
description: "Limit number of package results returned."
|
||||||
flag "--start-with=",
|
flag "--start-with=",
|
||||||
description: "Letter or word that the list of package results should alphabetically follow."
|
description: "Letter or word that the list of package results should alphabetically follow."
|
||||||
|
|
||||||
conflicts "--cask", "--formula"
|
conflicts "--cask", "--formula"
|
||||||
|
conflicts "--no-pull-requests", "--open-pr"
|
||||||
|
|
||||||
named_args [:formula, :cask]
|
named_args [:formula, :cask]
|
||||||
end
|
end
|
||||||
@ -103,7 +106,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
package_data = Repology.single_package_query(name, repository: repository)
|
package_data = Repology.single_package_query(name, repository: repository)
|
||||||
retrieve_and_display_info(
|
retrieve_and_display_info_and_open_pr(
|
||||||
formula_or_cask,
|
formula_or_cask,
|
||||||
name,
|
name,
|
||||||
package_data&.values&.first,
|
package_data&.values&.first,
|
||||||
@ -157,7 +160,13 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
puts if i.positive?
|
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
|
end
|
||||||
end
|
end
|
||||||
@ -205,44 +214,59 @@ module Homebrew
|
|||||||
pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
|
pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
|
||||||
end
|
end
|
||||||
|
|
||||||
return "none" if pull_requests.blank?
|
|
||||||
|
|
||||||
pull_requests
|
pull_requests
|
||||||
end
|
end
|
||||||
|
|
||||||
def retrieve_and_display_info(formula_or_cask, name, repositories, args:, ambiguous_cask: false)
|
def retrieve_and_display_info_and_open_pr(formula_or_cask, name, repositories, args:, ambiguous_cask: false)
|
||||||
current_version = if formula_or_cask.is_a?(Formula)
|
if formula_or_cask.is_a?(Formula)
|
||||||
formula_or_cask.stable.version
|
current_version = formula_or_cask.stable.version
|
||||||
|
type = :formula
|
||||||
|
version_name = "formula version"
|
||||||
else
|
else
|
||||||
Version.new(formula_or_cask.version)
|
current_version = Version.new(formula_or_cask.version)
|
||||||
|
type = :cask
|
||||||
|
version_name = "cask version "
|
||||||
end
|
end
|
||||||
|
|
||||||
|
livecheck_latest = livecheck_result(formula_or_cask)
|
||||||
|
|
||||||
repology_latest = if repositories.present?
|
repology_latest = if repositories.present?
|
||||||
Repology.latest_version(repositories)
|
Repology.latest_version(repositories)
|
||||||
else
|
else
|
||||||
"not found"
|
"not found"
|
||||||
end
|
end
|
||||||
|
|
||||||
livecheck_latest = livecheck_result(formula_or_cask)
|
new_version = if livecheck_latest.is_a?(Version) && livecheck_latest > current_version
|
||||||
pull_requests = if !args.no_pull_requests? && (args.named.present? ||
|
livecheck_latest
|
||||||
(livecheck_latest.is_a?(Version) && livecheck_latest != current_version))
|
elsif repology_latest.is_a?(Version) && repology_latest > current_version
|
||||||
retrieve_pull_requests(formula_or_cask, name)
|
repology_latest
|
||||||
end
|
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 &&
|
title = if current_version == repology_latest &&
|
||||||
current_version == livecheck_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
|
else
|
||||||
name
|
title_name
|
||||||
end
|
end
|
||||||
|
|
||||||
ohai title
|
ohai title
|
||||||
puts <<~EOS
|
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 livecheck version: #{livecheck_latest}
|
||||||
Latest Repology version: #{repology_latest}
|
Latest Repology version: #{repology_latest}
|
||||||
|
Open pull requests: #{pull_requests || "none"}
|
||||||
EOS
|
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
|
||||||
end
|
end
|
||||||
|
@ -99,6 +99,6 @@ module Repology
|
|||||||
# scheme
|
# scheme
|
||||||
return "no latest version" if latest_version.blank?
|
return "no latest version" if latest_version.blank?
|
||||||
|
|
||||||
latest_version["version"]
|
Version.new(latest_version["version"])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -436,6 +436,7 @@ _brew_bump() {
|
|||||||
--help
|
--help
|
||||||
--limit
|
--limit
|
||||||
--no-pull-requests
|
--no-pull-requests
|
||||||
|
--open-pr
|
||||||
--quiet
|
--quiet
|
||||||
--start-with
|
--start-with
|
||||||
--verbose
|
--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 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 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 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 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 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'
|
__fish_brew_complete_arg 'bump' -l verbose -d 'Make some output more verbose'
|
||||||
|
@ -478,6 +478,7 @@ _brew_bump() {
|
|||||||
'--help[Show this message]' \
|
'--help[Show this message]' \
|
||||||
'--limit[Limit number of package results returned]' \
|
'--limit[Limit number of package results returned]' \
|
||||||
'--no-pull-requests[Do not retrieve pull requests from GitHub]' \
|
'--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]' \
|
'--quiet[Make some output more quiet]' \
|
||||||
'--start-with[Letter or word that the list of package results should alphabetically follow]' \
|
'--start-with[Letter or word that the list of package results should alphabetically follow]' \
|
||||||
'--verbose[Make some output more verbose]' \
|
'--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.
|
Check only formulae.
|
||||||
* `--cask`:
|
* `--cask`:
|
||||||
Check only casks.
|
Check only casks.
|
||||||
|
* `--open-pr`:
|
||||||
|
Open a pull request for the new version if there are none already open.
|
||||||
* `--limit`:
|
* `--limit`:
|
||||||
Limit number of package results returned.
|
Limit number of package results returned.
|
||||||
* `--start-with`:
|
* `--start-with`:
|
||||||
|
@ -1295,6 +1295,10 @@ Check only formulae\.
|
|||||||
Check only casks\.
|
Check only casks\.
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-\-open\-pr\fR
|
||||||
|
Open a pull request for the new version if there are none already open\.
|
||||||
|
.
|
||||||
|
.TP
|
||||||
\fB\-\-limit\fR
|
\fB\-\-limit\fR
|
||||||
Limit number of package results returned\.
|
Limit number of package results returned\.
|
||||||
.
|
.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user