mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Add brew update-if-needed
This uses the logic in `brew.sh` for deciding whether or not to run `brew update --auto-update` and makes it a dedicated command that can be used instead of `brew update` in scripts to be really fast in the no-op case. `brew update` will always do at least some updating which is a nicer default but is much slower.
This commit is contained in:
parent
928985103d
commit
5ec5063dc7
@ -384,6 +384,22 @@ auto-update() {
|
|||||||
unset HOMEBREW_AUTO_UPDATE_CASK_TAP
|
unset HOMEBREW_AUTO_UPDATE_CASK_TAP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Only `brew update-if-needed` should be handled here.
|
||||||
|
# We want it as fast as possible but it needs auto-update() defined above.
|
||||||
|
# HOMEBREW_LIBRARY set by bin/brew
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
# doesn't need a default case as other arguments handled elsewhere.
|
||||||
|
# shellcheck disable=SC2249
|
||||||
|
# Don't need to pass through any arguments.
|
||||||
|
# shellcheck disable=SC2119
|
||||||
|
case "$@" in
|
||||||
|
update-if-needed)
|
||||||
|
source "${HOMEBREW_LIBRARY}/Homebrew/cmd/update-if-needed.sh"
|
||||||
|
homebrew-update-if-needed
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
#####
|
#####
|
||||||
##### Setup output so e.g. odie looks as nice as possible.
|
##### Setup output so e.g. odie looks as nice as possible.
|
||||||
#####
|
#####
|
||||||
|
23
Library/Homebrew/cmd/update-if-needed.rb
Normal file
23
Library/Homebrew/cmd/update-if-needed.rb
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# typed: strict
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "abstract_command"
|
||||||
|
require "shell_command"
|
||||||
|
|
||||||
|
module Homebrew
|
||||||
|
module Cmd
|
||||||
|
class UpdateIfNeeded < AbstractCommand
|
||||||
|
include ShellCommand
|
||||||
|
|
||||||
|
cmd_args do
|
||||||
|
description <<~EOS
|
||||||
|
Runs `brew update --auto-update` only if needed.
|
||||||
|
This is a good replacement for `brew update` in scripts where you want
|
||||||
|
the no-op case to be both possible and really fast.
|
||||||
|
EOS
|
||||||
|
|
||||||
|
named_args :none
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
6
Library/Homebrew/cmd/update-if-needed.sh
Normal file
6
Library/Homebrew/cmd/update-if-needed.sh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Documentation defined in Library/Homebrew/cmd/update-if-needed.rb
|
||||||
|
|
||||||
|
homebrew-update-if-needed() {
|
||||||
|
export HOMEBREW_AUTO_UPDATE_COMMAND="1"
|
||||||
|
auto-update "$@"
|
||||||
|
}
|
@ -2798,6 +2798,22 @@ _brew_update() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_brew_update_if_needed() {
|
||||||
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
case "${cur}" in
|
||||||
|
-*)
|
||||||
|
__brewcomp "
|
||||||
|
--debug
|
||||||
|
--help
|
||||||
|
--quiet
|
||||||
|
--verbose
|
||||||
|
"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
_brew_update_license_data() {
|
_brew_update_license_data() {
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
case "${cur}" in
|
case "${cur}" in
|
||||||
@ -3214,6 +3230,7 @@ _brew() {
|
|||||||
untap) _brew_untap ;;
|
untap) _brew_untap ;;
|
||||||
up) _brew_up ;;
|
up) _brew_up ;;
|
||||||
update) _brew_update ;;
|
update) _brew_update ;;
|
||||||
|
update-if-needed) _brew_update_if_needed ;;
|
||||||
update-license-data) _brew_update_license_data ;;
|
update-license-data) _brew_update_license_data ;;
|
||||||
update-maintainers) _brew_update_maintainers ;;
|
update-maintainers) _brew_update_maintainers ;;
|
||||||
update-python-resources) _brew_update_python_resources ;;
|
update-python-resources) _brew_update_python_resources ;;
|
||||||
|
@ -1800,6 +1800,13 @@ __fish_brew_complete_arg 'update' -l quiet -d 'Make some output more quiet'
|
|||||||
__fish_brew_complete_arg 'update' -l verbose -d 'Print the directories checked and `git` operations performed'
|
__fish_brew_complete_arg 'update' -l verbose -d 'Print the directories checked and `git` operations performed'
|
||||||
|
|
||||||
|
|
||||||
|
__fish_brew_complete_cmd 'update-if-needed' 'Runs `brew update --auto-update` only if needed'
|
||||||
|
__fish_brew_complete_arg 'update-if-needed' -l debug -d 'Display any debugging information'
|
||||||
|
__fish_brew_complete_arg 'update-if-needed' -l help -d 'Show this message'
|
||||||
|
__fish_brew_complete_arg 'update-if-needed' -l quiet -d 'Make some output more quiet'
|
||||||
|
__fish_brew_complete_arg 'update-if-needed' -l verbose -d 'Make some output more verbose'
|
||||||
|
|
||||||
|
|
||||||
__fish_brew_complete_cmd 'update-license-data' 'Update SPDX license data in the Homebrew repository'
|
__fish_brew_complete_cmd 'update-license-data' 'Update SPDX license data in the Homebrew repository'
|
||||||
__fish_brew_complete_arg 'update-license-data' -l debug -d 'Display any debugging information'
|
__fish_brew_complete_arg 'update-license-data' -l debug -d 'Display any debugging information'
|
||||||
__fish_brew_complete_arg 'update-license-data' -l help -d 'Show this message'
|
__fish_brew_complete_arg 'update-license-data' -l help -d 'Show this message'
|
||||||
|
@ -114,6 +114,7 @@ unpin
|
|||||||
untap
|
untap
|
||||||
up
|
up
|
||||||
update
|
update
|
||||||
|
update-if-needed
|
||||||
update-license-data
|
update-license-data
|
||||||
update-maintainers
|
update-maintainers
|
||||||
update-python-resources
|
update-python-resources
|
||||||
|
@ -232,6 +232,7 @@ __brew_internal_commands() {
|
|||||||
'unpin:Unpin formula, allowing them to be upgraded by `brew upgrade` formula'
|
'unpin:Unpin formula, allowing them to be upgraded by `brew upgrade` formula'
|
||||||
'untap:Remove a tapped formula repository'
|
'untap:Remove a tapped formula repository'
|
||||||
'update:Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations'
|
'update:Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations'
|
||||||
|
'update-if-needed:Runs `brew update --auto-update` only if needed'
|
||||||
'update-license-data:Update SPDX license data in the Homebrew repository'
|
'update-license-data:Update SPDX license data in the Homebrew repository'
|
||||||
'update-maintainers:Update the list of maintainers in the `Homebrew/brew` README'
|
'update-maintainers:Update the list of maintainers in the `Homebrew/brew` README'
|
||||||
'update-python-resources:Update versions for PyPI resource blocks in formula'
|
'update-python-resources:Update versions for PyPI resource blocks in formula'
|
||||||
@ -2223,6 +2224,15 @@ _brew_update() {
|
|||||||
'--verbose[Print the directories checked and `git` operations performed]'
|
'--verbose[Print the directories checked and `git` operations performed]'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# brew update-if-needed
|
||||||
|
_brew_update_if_needed() {
|
||||||
|
_arguments \
|
||||||
|
'--debug[Display any debugging information]' \
|
||||||
|
'--help[Show this message]' \
|
||||||
|
'--quiet[Make some output more quiet]' \
|
||||||
|
'--verbose[Make some output more verbose]'
|
||||||
|
}
|
||||||
|
|
||||||
# brew update-license-data
|
# brew update-license-data
|
||||||
_brew_update_license_data() {
|
_brew_update_license_data() {
|
||||||
_arguments \
|
_arguments \
|
||||||
|
@ -1610,6 +1610,12 @@ and perform any necessary migrations.
|
|||||||
|
|
||||||
: Display a trace of all shell commands as they are executed.
|
: Display a trace of all shell commands as they are executed.
|
||||||
|
|
||||||
|
### `update-if-needed`
|
||||||
|
|
||||||
|
Runs `brew update --auto-update` only if needed. This is a good replacement for
|
||||||
|
`brew update` in scripts where you want the no-op case to be both possible and
|
||||||
|
really fast.
|
||||||
|
|
||||||
### `update-reset` \[*`repository`* ...\]
|
### `update-reset` \[*`repository`* ...\]
|
||||||
|
|
||||||
Fetch and reset Homebrew and all tap repositories (or any specified
|
Fetch and reset Homebrew and all tap repositories (or any specified
|
||||||
|
@ -1005,6 +1005,8 @@ Print the directories checked and \fBgit\fP operations performed\.
|
|||||||
.TP
|
.TP
|
||||||
\fB\-d\fP, \fB\-\-debug\fP
|
\fB\-d\fP, \fB\-\-debug\fP
|
||||||
Display a trace of all shell commands as they are executed\.
|
Display a trace of all shell commands as they are executed\.
|
||||||
|
.SS "\fBupdate\-if\-needed\fP"
|
||||||
|
Runs \fBbrew update \-\-auto\-update\fP only if needed\. This is a good replacement for \fBbrew update\fP in scripts where you want the no\-op case to be both possible and really fast\.
|
||||||
.SS "\fBupdate\-reset\fP \fR[\fIrepository\fP \.\.\.]"
|
.SS "\fBupdate\-reset\fP \fR[\fIrepository\fP \.\.\.]"
|
||||||
Fetch and reset Homebrew and all tap repositories (or any specified \fIrepository\fP) using \fBgit\fP(1) to their latest \fBorigin/HEAD\fP\&\.
|
Fetch and reset Homebrew and all tap repositories (or any specified \fIrepository\fP) using \fBgit\fP(1) to their latest \fBorigin/HEAD\fP\&\.
|
||||||
.P
|
.P
|
||||||
|
Loading…
x
Reference in New Issue
Block a user