Make install/reinstall/upgrade options more consistent.
This commit is contained in:
parent
22c2b06fa5
commit
9eabcdad7d
@ -148,6 +148,21 @@ module Homebrew
|
||||
.gsub(/\*(.*?)\*/m, "#{Tty.underline}\\1#{Tty.reset}")
|
||||
end
|
||||
|
||||
def formula_options
|
||||
ARGV.formulae.each do |f|
|
||||
next if f.options.empty?
|
||||
f.options.each do |o|
|
||||
name = o.flag
|
||||
description = "`#{f.name}`: #{o.description}"
|
||||
if name.end_with? "="
|
||||
flag name, description: description
|
||||
else
|
||||
switch name, description: description
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def enable_switch(*names)
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
#: If `--devel` is passed, and <formula> defines it, install the development version.
|
||||
#:
|
||||
#: If `--HEAD` is passed, and <formula> defines it, install the HEAD version,
|
||||
#: aka master, trunk, unstable.
|
||||
#: aka. master, trunk, unstable.
|
||||
#:
|
||||
#: If `--keep-tmp` is passed, the temporary files created during installation
|
||||
#: are not deleted.
|
||||
@ -85,7 +85,7 @@ module Homebrew
|
||||
def install_args
|
||||
Homebrew::CLI::Parser.new do
|
||||
usage_banner <<~EOS
|
||||
`install` [<options>] formula
|
||||
`install` [<options>] <formula>
|
||||
|
||||
Install <formula>.
|
||||
|
||||
@ -124,7 +124,7 @@ module Homebrew
|
||||
switch "--devel",
|
||||
description: "If <formula> defines it, install the development version."
|
||||
switch "--HEAD",
|
||||
description: "If <formula> defines it, install the HEAD version, aka master, trunk, unstable."
|
||||
description: "If <formula> defines it, install the HEAD version, aka. master, trunk, unstable."
|
||||
switch "--fetch-HEAD",
|
||||
description: "Fetch the upstream repository to detect if the HEAD installation of the "\
|
||||
"formula is outdated. Otherwise, the repository's HEAD will be checked for "\
|
||||
@ -146,19 +146,7 @@ module Homebrew
|
||||
"package into a Homebrew package."
|
||||
switch "-g", "--git",
|
||||
description: "Create a Git repository, useful for creating patches to the software."
|
||||
|
||||
ARGV.formulae.each do |f|
|
||||
next if f.options.empty?
|
||||
f.options.each do |o|
|
||||
name = o.flag
|
||||
description = "`#{f.name}`: #{o.description}"
|
||||
if name.end_with? "="
|
||||
flag name, description: description
|
||||
else
|
||||
switch name, description: description
|
||||
end
|
||||
end
|
||||
end
|
||||
formula_options
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -1,8 +1,30 @@
|
||||
#: * `reinstall` [`--display-times`] <formula>:
|
||||
#: Uninstall and then install <formula> (with existing install options).
|
||||
#: * `reinstall` [`--debug`] [`--build-from-source`|`--force-bottle`] [`--keep-tmp`] [`--force`] [`--verbose`] [`--display-times`] <formula>:
|
||||
#: Uninstall and then install <formula> (with existing and any appended install options).
|
||||
#:
|
||||
#: If `--debug` (or `-d`) is passed and brewing fails, open an interactive debugging
|
||||
#: session with access to IRB or a shell inside the temporary build directory.
|
||||
#:
|
||||
#: If `--build-from-source` (or `-s`) is passed, compile the specified <formula> from
|
||||
#: source even if a bottle is provided. Dependencies will still be installed
|
||||
#: from bottles if they are available.
|
||||
#:
|
||||
#: If `--force-bottle` is passed, install from a bottle if it exists for the
|
||||
#: current or newest version of macOS, even if it would not normally be used
|
||||
#: for installation.
|
||||
#:
|
||||
#: If `--keep-tmp` is passed, the temporary files created during installation
|
||||
#: are not deleted.
|
||||
#:
|
||||
#: If `--force` (or `-f`) is passed, install without checking for previously
|
||||
#: installed keg-only or non-migrated versions
|
||||
#:
|
||||
#: If `--verbose` (or `-v`) is passed, print the verification and postinstall steps.
|
||||
#:
|
||||
#: If `--display-times` is passed, install times for each formula are printed
|
||||
#: at the end of the run.
|
||||
#:
|
||||
#: Installation options specific to <formula> may be appended to the command,
|
||||
#: and can be listed with `brew options` <formula>.
|
||||
|
||||
require "formula_installer"
|
||||
require "development_tools"
|
||||
@ -17,16 +39,28 @@ module Homebrew
|
||||
def reinstall_args
|
||||
Homebrew::CLI::Parser.new do
|
||||
usage_banner <<~EOS
|
||||
`reinstall` [<option(s)>] <formula>:
|
||||
`reinstall` [<options>] <formula>
|
||||
|
||||
Uninstall and then install <formula> (with existing install options).
|
||||
Uninstall and then install <formula> (with existing and any appended install options).
|
||||
EOS
|
||||
switch :debug,
|
||||
description: "If brewing fails, open an interactive debugging session with access to IRB "\
|
||||
"or a shell inside the temporary build directory"
|
||||
switch "-s", "--build-from-source",
|
||||
description: "Compile the formula> from source even if a bottle is available."
|
||||
description: "Compile <formula> from source even if a bottle is available."
|
||||
switch "--force-bottle",
|
||||
description: "Install from a bottle if it exists for the current or newest version of "\
|
||||
"macOS, even if it would not normally be used for installation."
|
||||
switch "--keep-tmp",
|
||||
description: "Dont delete the temporary files created during installation."
|
||||
switch :force,
|
||||
description: "Install without checking for previously installed keg-only or "\
|
||||
"non-migrated versions."
|
||||
switch :verbose,
|
||||
description: "Print the verification and postinstall steps."
|
||||
switch "--display-times",
|
||||
description: "Print install times for each formula at the end of the run."
|
||||
switch :verbose
|
||||
switch :debug
|
||||
formula_options
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -1,7 +1,19 @@
|
||||
#: * `upgrade` [<install-options>] [`--fetch-HEAD`] [`--ignore-pinned`] [`--display-times`] [<formulae>]:
|
||||
#: Upgrade outdated, unpinned brews (with existing install options).
|
||||
#: * `upgrade` [`--debug`] [`--build-from-source`|`--force-bottle`] [`--fetch-HEAD`] [`--ignore-pinned`] [`--keep-tmp`] [`--force`] [`--verbose`] [`--display-times`] [<formula>] [<options> ...]:
|
||||
#: Upgrade outdated, unpinned brews (with existing and any appended install options).
|
||||
#:
|
||||
#: Options for the `install` command are also valid here.
|
||||
#: If <formula> are given, upgrade only the specified brews (unless they
|
||||
#: are pinned; see `pin`, `unpin`).
|
||||
#:
|
||||
#: If `--debug` (or `-d`) is passed and brewing fails, open an interactive debugging
|
||||
#: session with access to IRB or a shell inside the temporary build directory.
|
||||
#:
|
||||
#: If `--build-from-source` (or `-s`) is passed, compile the specified <formula> from
|
||||
#: source even if a bottle is provided. Dependencies will still be installed
|
||||
#: from bottles if they are available.
|
||||
#:
|
||||
#: If `--force-bottle` is passed, install from a bottle if it exists for the
|
||||
#: current or newest version of macOS, even if it would not normally be used
|
||||
#: for installation.
|
||||
#:
|
||||
#: If `--fetch-HEAD` is passed, fetch the upstream repository to detect if
|
||||
#: the HEAD installation of the formula is outdated. Otherwise, the
|
||||
@ -11,11 +23,19 @@
|
||||
#: If `--ignore-pinned` is passed, set a 0 exit code even if pinned formulae
|
||||
#: are not upgraded.
|
||||
#:
|
||||
#: If `--keep-tmp` is passed, the temporary files created during installation
|
||||
#: are not deleted.
|
||||
#:
|
||||
#: If `--force` (or `-f`) is passed, install without checking for previously
|
||||
#: installed keg-only or non-migrated versions
|
||||
#:
|
||||
#: If `--verbose` (or `-v`) is passed, print the verification and postinstall steps.
|
||||
#:
|
||||
#: If `--display-times` is passed, install times for each formula are printed
|
||||
#: at the end of the run.
|
||||
#:
|
||||
#: If <formulae> are given, upgrade only the specified brews (unless they
|
||||
#: are pinned; see `pin`, `unpin`).
|
||||
#: Additional options specific to <formula> may be appended to the command,
|
||||
#: and can be listed with `brew options` <formula>.
|
||||
|
||||
require "install"
|
||||
require "reinstall"
|
||||
@ -31,26 +51,37 @@ module Homebrew
|
||||
def upgrade_args
|
||||
Homebrew::CLI::Parser.new do
|
||||
usage_banner <<~EOS
|
||||
`upgrade` [<install-options>] [<options>] [<formulae>]
|
||||
`upgrade` [<options>] <formula>
|
||||
|
||||
Upgrade outdated, unpinned brews (with existing install options).
|
||||
Options for the `install` command are also valid here.
|
||||
Upgrade outdated, unpinned brews (with existing and any appended install options).
|
||||
|
||||
If <formulae> are given, upgrade only the specified brews (unless they
|
||||
If <formula> are given, upgrade only the specified brews (unless they
|
||||
are pinned; see `pin`, `unpin`).
|
||||
EOS
|
||||
switch :debug,
|
||||
description: "If brewing fails, open an interactive debugging session with access to IRB "\
|
||||
"or a shell inside the temporary build directory"
|
||||
switch "-s", "--build-from-source",
|
||||
description: "Compile <formula> from source even if a bottle is available."
|
||||
switch "--force-bottle",
|
||||
description: "Install from a bottle if it exists for the current or newest version of "\
|
||||
"macOS, even if it would not normally be used for installation."
|
||||
switch "--fetch-HEAD",
|
||||
description: "Fetch the upstream repository to detect if the HEAD installation of the "\
|
||||
"formula is outdated. Otherwise, the repository's HEAD will be checked for "\
|
||||
"updates when a new stable or devel version has been released."
|
||||
switch "--ignore-pinned",
|
||||
description: "Set a 0 exit code even if pinned formulae are not upgraded."
|
||||
switch "--build-bottle",
|
||||
description: "Prepare the formula for eventual bottling during installation."
|
||||
switch "--keep-tmp",
|
||||
description: "Dont delete the temporary files created during installation."
|
||||
switch :force,
|
||||
description: "Install without checking for previously installed keg-only or "\
|
||||
"non-migrated versions."
|
||||
switch :verbose,
|
||||
description: "Print the verification and postinstall steps."
|
||||
switch "--display-times",
|
||||
description: "Print install times for each formula at the end of the run."
|
||||
switch :verbose
|
||||
switch :debug
|
||||
formula_options
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -21,8 +21,9 @@ describe "brew reinstall", :integration_test do
|
||||
end
|
||||
|
||||
it "reinstalls a Formula even when one of the options is invalid" do
|
||||
expect { brew "reinstall", "testball", "--with-fo" }
|
||||
.to output(/Error: invalid option: --with-fo/).to_stderr
|
||||
expect { brew "reinstall", "testball", "--invalid" }
|
||||
.to output(/Error: invalid option: --invalid/).to_stderr
|
||||
.and not_to_output.to_stdout
|
||||
.and be_a_failure
|
||||
end
|
||||
|
||||
|
||||
@ -279,7 +279,7 @@ these flags should only appear after a command.
|
||||
If `--devel` is passed, and *`formula`* defines it, install the development version.
|
||||
|
||||
If `--HEAD` is passed, and *`formula`* defines it, install the HEAD version,
|
||||
aka master, trunk, unstable.
|
||||
aka. master, trunk, unstable.
|
||||
|
||||
If `--keep-tmp` is passed, the temporary files created during installation
|
||||
are not deleted.
|
||||
@ -414,12 +414,34 @@ these flags should only appear after a command.
|
||||
|
||||
If `--syntax` is passed, also syntax-check all of Homebrew's Ruby files.
|
||||
|
||||
* `reinstall` [`--display-times`] *`formula`*:
|
||||
Uninstall and then install *`formula`* (with existing install options).
|
||||
* `reinstall` [`--debug`] [`--build-from-source`|`--force-bottle`] [`--keep-tmp`] [`--force`] [`--verbose`] [`--display-times`] *`formula`*:
|
||||
Uninstall and then install *`formula`* (with existing and any appended install options).
|
||||
|
||||
If `--debug` (or `-d`) is passed and brewing fails, open an interactive debugging
|
||||
session with access to IRB or a shell inside the temporary build directory.
|
||||
|
||||
If `--build-from-source` (or `-s`) is passed, compile the specified *`formula`* from
|
||||
source even if a bottle is provided. Dependencies will still be installed
|
||||
from bottles if they are available.
|
||||
|
||||
If `--force-bottle` is passed, install from a bottle if it exists for the
|
||||
current or newest version of macOS, even if it would not normally be used
|
||||
for installation.
|
||||
|
||||
If `--keep-tmp` is passed, the temporary files created during installation
|
||||
are not deleted.
|
||||
|
||||
If `--force` (or `-f`) is passed, install without checking for previously
|
||||
installed keg-only or non-migrated versions
|
||||
|
||||
If `--verbose` (or `-v`) is passed, print the verification and postinstall steps.
|
||||
|
||||
If `--display-times` is passed, install times for each formula are printed
|
||||
at the end of the run.
|
||||
|
||||
Installation options specific to *`formula`* may be appended to the command,
|
||||
and can be listed with `brew options` *`formula`*.
|
||||
|
||||
* `search`, `-S`:
|
||||
Display all locally available formulae (including tapped ones).
|
||||
No online search is performed.
|
||||
@ -588,10 +610,22 @@ these flags should only appear after a command.
|
||||
`repositories`) using `git`(1) to their latest `origin/master`. Note this
|
||||
will destroy all your uncommitted or committed changes.
|
||||
|
||||
* `upgrade` [*`install-options`*] [`--fetch-HEAD`] [`--ignore-pinned`] [`--display-times`] [*`formulae`*]:
|
||||
Upgrade outdated, unpinned brews (with existing install options).
|
||||
* `upgrade` [`--debug`] [`--build-from-source`|`--force-bottle`] [`--fetch-HEAD`] [`--ignore-pinned`] [`--keep-tmp`] [`--force`] [`--verbose`] [`--display-times`] [*`formula`*] [*`options`* ...]:
|
||||
Upgrade outdated, unpinned brews (with existing and any appended install options).
|
||||
|
||||
Options for the `install` command are also valid here.
|
||||
If *`formula`* are given, upgrade only the specified brews (unless they
|
||||
are pinned; see `pin`, `unpin`).
|
||||
|
||||
If `--debug` (or `-d`) is passed and brewing fails, open an interactive debugging
|
||||
session with access to IRB or a shell inside the temporary build directory.
|
||||
|
||||
If `--build-from-source` (or `-s`) is passed, compile the specified *`formula`* from
|
||||
source even if a bottle is provided. Dependencies will still be installed
|
||||
from bottles if they are available.
|
||||
|
||||
If `--force-bottle` is passed, install from a bottle if it exists for the
|
||||
current or newest version of macOS, even if it would not normally be used
|
||||
for installation.
|
||||
|
||||
If `--fetch-HEAD` is passed, fetch the upstream repository to detect if
|
||||
the HEAD installation of the formula is outdated. Otherwise, the
|
||||
@ -601,11 +635,19 @@ these flags should only appear after a command.
|
||||
If `--ignore-pinned` is passed, set a 0 exit code even if pinned formulae
|
||||
are not upgraded.
|
||||
|
||||
If `--keep-tmp` is passed, the temporary files created during installation
|
||||
are not deleted.
|
||||
|
||||
If `--force` (or `-f`) is passed, install without checking for previously
|
||||
installed keg-only or non-migrated versions
|
||||
|
||||
If `--verbose` (or `-v`) is passed, print the verification and postinstall steps.
|
||||
|
||||
If `--display-times` is passed, install times for each formula are printed
|
||||
at the end of the run.
|
||||
|
||||
If *`formulae`* are given, upgrade only the specified brews (unless they
|
||||
are pinned; see `pin`, `unpin`).
|
||||
Additional options specific to *`formula`* may be appended to the command,
|
||||
and can be listed with `brew options` *`formula`*.
|
||||
|
||||
* `uses` [`--installed`] [`--recursive`] [`--include-build`] [`--include-test`] [`--include-optional`] [`--skip-recommended`] [`--devel`|`--HEAD`] *`formulae`*:
|
||||
Show the formulae that specify *`formulae`* as a dependency. When given
|
||||
|
||||
@ -285,7 +285,7 @@ If \fB\-\-include\-test\fR is passed, install testing dependencies\. These are o
|
||||
If \fB\-\-devel\fR is passed, and \fIformula\fR defines it, install the development version\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-HEAD\fR is passed, and \fIformula\fR defines it, install the HEAD version, aka master, trunk, unstable\.
|
||||
If \fB\-\-HEAD\fR is passed, and \fIformula\fR defines it, install the HEAD version, aka\. master, trunk, unstable\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-keep\-tmp\fR is passed, the temporary files created during installation are not deleted\.
|
||||
@ -426,12 +426,33 @@ If \fB\-\-aliases\fR is passed, also verify any alias symlinks in each tap\.
|
||||
If \fB\-\-syntax\fR is passed, also syntax\-check all of Homebrew\'s Ruby files\.
|
||||
.
|
||||
.TP
|
||||
\fBreinstall\fR [\fB\-\-display\-times\fR] \fIformula\fR
|
||||
Uninstall and then install \fIformula\fR (with existing install options)\.
|
||||
\fBreinstall\fR [\fB\-\-debug\fR] [\fB\-\-build\-from\-source\fR|\fB\-\-force\-bottle\fR] [\fB\-\-keep\-tmp\fR] [\fB\-\-force\fR] [\fB\-\-verbose\fR] [\fB\-\-display\-times\fR] \fIformula\fR
|
||||
Uninstall and then install \fIformula\fR (with existing and any appended install options)\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-debug\fR (or \fB\-d\fR) is passed and brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-build\-from\-source\fR (or \fB\-s\fR) is passed, compile the specified \fIformula\fR from source even if a bottle is provided\. Dependencies will still be installed from bottles if they are available\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-force\-bottle\fR is passed, install from a bottle if it exists for the current or newest version of macOS, even if it would not normally be used for installation\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-keep\-tmp\fR is passed, the temporary files created during installation are not deleted\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-force\fR (or \fB\-f\fR) is passed, install without checking for previously installed keg\-only or non\-migrated versions
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-verbose\fR (or \fB\-v\fR) is passed, print the verification and postinstall steps\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-display\-times\fR is passed, install times for each formula are printed at the end of the run\.
|
||||
.
|
||||
.IP
|
||||
Installation options specific to \fIformula\fR may be appended to the command, and can be listed with \fBbrew options\fR \fIformula\fR\.
|
||||
.
|
||||
.TP
|
||||
\fBsearch\fR, \fB\-S\fR
|
||||
Display all locally available formulae (including tapped ones)\. No online search is performed\.
|
||||
@ -601,11 +622,20 @@ If \fB\-\-force\fR (or \fB\-f\fR) is specified then always do a slower, full upd
|
||||
Fetches and resets Homebrew and all tap repositories (or the specified \fBrepositories\fR) using \fBgit\fR(1) to their latest \fBorigin/master\fR\. Note this will destroy all your uncommitted or committed changes\.
|
||||
.
|
||||
.TP
|
||||
\fBupgrade\fR [\fIinstall\-options\fR] [\fB\-\-fetch\-HEAD\fR] [\fB\-\-ignore\-pinned\fR] [\fB\-\-display\-times\fR] [\fIformulae\fR]
|
||||
Upgrade outdated, unpinned brews (with existing install options)\.
|
||||
\fBupgrade\fR [\fB\-\-debug\fR] [\fB\-\-build\-from\-source\fR|\fB\-\-force\-bottle\fR] [\fB\-\-fetch\-HEAD\fR] [\fB\-\-ignore\-pinned\fR] [\fB\-\-keep\-tmp\fR] [\fB\-\-force\fR] [\fB\-\-verbose\fR] [\fB\-\-display\-times\fR] [\fIformula\fR] [\fIoptions\fR \.\.\.]
|
||||
Upgrade outdated, unpinned brews (with existing and any appended install options)\.
|
||||
.
|
||||
.IP
|
||||
Options for the \fBinstall\fR command are also valid here\.
|
||||
If \fIformula\fR are given, upgrade only the specified brews (unless they are pinned; see \fBpin\fR, \fBunpin\fR)\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-debug\fR (or \fB\-d\fR) is passed and brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-build\-from\-source\fR (or \fB\-s\fR) is passed, compile the specified \fIformula\fR from source even if a bottle is provided\. Dependencies will still be installed from bottles if they are available\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-force\-bottle\fR is passed, install from a bottle if it exists for the current or newest version of macOS, even if it would not normally be used for installation\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-fetch\-HEAD\fR is passed, fetch the upstream repository to detect if the HEAD installation of the formula is outdated\. Otherwise, the repository\'s HEAD will be checked for updates when a new stable or devel version has been released\.
|
||||
@ -614,10 +644,19 @@ If \fB\-\-fetch\-HEAD\fR is passed, fetch the upstream repository to detect if t
|
||||
If \fB\-\-ignore\-pinned\fR is passed, set a 0 exit code even if pinned formulae are not upgraded\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-keep\-tmp\fR is passed, the temporary files created during installation are not deleted\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-force\fR (or \fB\-f\fR) is passed, install without checking for previously installed keg\-only or non\-migrated versions
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-verbose\fR (or \fB\-v\fR) is passed, print the verification and postinstall steps\.
|
||||
.
|
||||
.IP
|
||||
If \fB\-\-display\-times\fR is passed, install times for each formula are printed at the end of the run\.
|
||||
.
|
||||
.IP
|
||||
If \fIformulae\fR are given, upgrade only the specified brews (unless they are pinned; see \fBpin\fR, \fBunpin\fR)\.
|
||||
Additional options specific to \fIformula\fR may be appended to the command, and can be listed with \fBbrew options\fR \fIformula\fR\.
|
||||
.
|
||||
.TP
|
||||
\fBuses\fR [\fB\-\-installed\fR] [\fB\-\-recursive\fR] [\fB\-\-include\-build\fR] [\fB\-\-include\-test\fR] [\fB\-\-include\-optional\fR] [\fB\-\-skip\-recommended\fR] [\fB\-\-devel\fR|\fB\-\-HEAD\fR] \fIformulae\fR
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user