Merge pull request #15986 from EricFromCanada/docs-assorted-improvements

Docs: assorted refinements for output
This commit is contained in:
Mike McQuaid 2023-09-11 13:06:52 +01:00 committed by GitHub
commit 4e0ec2555e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
58 changed files with 291 additions and 309 deletions

View File

@ -10,8 +10,8 @@ module Homebrew
description <<~EOS description <<~EOS
Display Homebrew's install path. *Default:* Display Homebrew's install path. *Default:*
- macOS Intel: `#{HOMEBREW_DEFAULT_PREFIX}`
- macOS ARM: `#{HOMEBREW_MACOS_ARM_DEFAULT_PREFIX}` - macOS ARM: `#{HOMEBREW_MACOS_ARM_DEFAULT_PREFIX}`
- macOS Intel: `#{HOMEBREW_DEFAULT_PREFIX}`
- Linux: `#{HOMEBREW_LINUX_DEFAULT_PREFIX}` - Linux: `#{HOMEBREW_LINUX_DEFAULT_PREFIX}`
If <formula> is provided, display the location where <formula> is or would be installed. If <formula> is provided, display the location where <formula> is or would be installed.

View File

@ -10,7 +10,7 @@ module Homebrew
def __repository_args def __repository_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Display where Homebrew's git repository is located. Display where Homebrew's Git repository is located.
If <user>`/`<repo> are provided, display where tap <user>`/`<repo>'s directory is located. If <user>`/`<repo> are provided, display where tap <user>`/`<repo>'s directory is located.
EOS EOS

View File

@ -17,7 +17,12 @@ module Homebrew
show the intersection of dependencies for each formula. By default, `deps` show the intersection of dependencies for each formula. By default, `deps`
shows all required and recommended dependencies. shows all required and recommended dependencies.
Note: `--missing` and `--skip-recommended` have precedence over `--include-*`. If any version of each formula argument is installed and no other options
are passed, this command displays their actual runtime dependencies (similar
to `brew linkage`), which may differ from the current versons' stated
dependencies if the installed versions are outdated.
*Note:* `--missing` and `--skip-recommended` have precedence over `--include-*`.
EOS EOS
switch "-n", "--topological", switch "-n", "--topological",
description: "Sort dependencies in topological order." description: "Sort dependencies in topological order."

View File

@ -10,7 +10,7 @@ module Homebrew
def docs_args def docs_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Open Homebrew's online documentation (#{HOMEBREW_DOCS_WWW}) in a browser. Open Homebrew's online documentation at <#{HOMEBREW_DOCS_WWW}> in a browser.
EOS EOS
end end
end end

View File

@ -11,10 +11,11 @@ module Homebrew
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Check your system for potential problems. Will exit with a non-zero status Check your system for potential problems. Will exit with a non-zero status
if any potential problems are found. Please note that these warnings are just if any potential problems are found.
used to help the Homebrew maintainers with debugging if you file an issue. If
everything you use Homebrew for is working fine: please don't worry or file Please note that these warnings are just used to help the Homebrew maintainers
an issue; just ignore this. with debugging if you file an issue. If everything you use Homebrew for
is working fine: please don't worry or file an issue; just ignore this.
EOS EOS
switch "--list-checks", switch "--list-checks",
description: "List all audit methods, which can be run individually " \ description: "List all audit methods, which can be run individually " \

View File

@ -25,7 +25,6 @@ module Homebrew
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Display brief statistics for your Homebrew installation. Display brief statistics for your Homebrew installation.
If a <formula> or <cask> is provided, show summary of information about it. If a <formula> or <cask> is provided, show summary of information about it.
EOS EOS
switch "--analytics", switch "--analytics",

View File

@ -37,7 +37,7 @@ module Homebrew
"non-migrated versions. When installing casks, overwrite existing files " \ "non-migrated versions. When installing casks, overwrite existing files " \
"(binaries and symlinks are excluded, unless originally from the same cask)." "(binaries and symlinks are excluded, unless originally from the same cask)."
switch "-v", "--verbose", switch "-v", "--verbose",
description: "Print the verification and postinstall steps." description: "Print the verification and post-install steps."
switch "-n", "--dry-run", switch "-n", "--dry-run",
description: "Show what would be installed, but do not actually install anything." description: "Show what would be installed, but do not actually install anything."
[ [
@ -49,9 +49,9 @@ module Homebrew
hidden: true, hidden: true,
}], }],
[:switch, "--ignore-dependencies", { [:switch, "--ignore-dependencies", {
description: "An unsupported Homebrew development flag to skip installing any dependencies of any kind. " \ description: "An unsupported Homebrew development option to skip installing any dependencies of any " \
"If the dependencies are not already present, the formula will have issues. If you're not " \ "kind. If the dependencies are not already present, the formula will have issues. If you're " \
"developing Homebrew, consider adjusting your PATH rather than using this flag.", "not developing Homebrew, consider adjusting your PATH rather than using this option.",
}], }],
[:switch, "--only-dependencies", { [:switch, "--only-dependencies", {
description: "Install the dependencies with specified options but do not install the " \ description: "Install the dependencies with specified options but do not install the " \
@ -184,9 +184,9 @@ module Homebrew
if args.ignore_dependencies? if args.ignore_dependencies?
opoo <<~EOS opoo <<~EOS
#{Tty.bold}`--ignore-dependencies` is an unsupported Homebrew developer flag!#{Tty.reset} #{Tty.bold}`--ignore-dependencies` is an unsupported Homebrew developer option!#{Tty.reset}
Adjust your PATH to put any preferred versions of applications earlier in the Adjust your PATH to put any preferred versions of applications earlier in the
PATH rather than using this unsupported flag! PATH rather than using this unsupported option!
EOS EOS
end end

View File

@ -12,9 +12,9 @@ module Homebrew
def link_args def link_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Symlink all of <formula>'s installed files into Homebrew's prefix. This Symlink all of <formula>'s installed files into Homebrew's prefix.
is done automatically when you install formulae but can be useful for DIY This is done automatically when you install formulae but can be useful
installations. for manual installations.
EOS EOS
switch "--overwrite", switch "--overwrite",
description: "Delete files that already exist in the prefix while linking." description: "Delete files that already exist in the prefix while linking."

View File

@ -14,7 +14,6 @@ module Homebrew
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
List all installed formulae and casks. List all installed formulae and casks.
If <formula> is provided, summarise the paths within its current keg. If <formula> is provided, summarise the paths within its current keg.
If <cask> is provided, list its artifacts. If <cask> is provided, list its artifacts.
EOS EOS

View File

@ -11,7 +11,7 @@ module Homebrew
def nodenv_sync_args def nodenv_sync_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Create symlinks for Homebrew's installed NodeJS versions in ~/.nodenv/versions. Create symlinks for Homebrew's installed NodeJS versions in `~/.nodenv/versions`.
Note that older version symlinks will also be created so e.g. NodeJS 19.1.0 will Note that older version symlinks will also be created so e.g. NodeJS 19.1.0 will
also be symlinked to 19.0.0. also be symlinked to 19.0.0.

View File

@ -11,7 +11,7 @@ module Homebrew
def pyenv_sync_args def pyenv_sync_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Create symlinks for Homebrew's installed Python versions in ~/.pyenv/versions. Create symlinks for Homebrew's installed Python versions in `~/.pyenv/versions`.
Note that older patch version symlinks will be created and linked to the minor Note that older patch version symlinks will be created and linked to the minor
version so e.g. Python 3.11.0 will also be symlinked to 3.11.3. version so e.g. Python 3.11.0 will also be symlinked to 3.11.3.

View File

@ -11,7 +11,7 @@ module Homebrew
def rbenv_sync_args def rbenv_sync_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Create symlinks for Homebrew's installed Ruby versions in ~/.rbenv/versions. Create symlinks for Homebrew's installed Ruby versions in `~/.rbenv/versions`.
Note that older version symlinks will also be created so e.g. Ruby 3.2.1 will Note that older version symlinks will also be created so e.g. Ruby 3.2.1 will
also be symlinked to 3.2.0. also be symlinked to 3.2.0.

View File

@ -24,7 +24,7 @@ module Homebrew
switch "--aliases", switch "--aliases",
description: "Verify any alias symlinks in each tap." description: "Verify any alias symlinks in each tap."
switch "--syntax", switch "--syntax",
description: "Syntax-check all of Homebrew's Ruby files (if no `<tap>` is passed)." description: "Syntax-check all of Homebrew's Ruby files (if no <tap> is passed)."
switch "--eval-all", switch "--eval-all",
description: "Evaluate all available formulae and casks, whether installed or not. " \ description: "Evaluate all available formulae and casks, whether installed or not. " \
"Implied if `HOMEBREW_EVAL_ALL` is set." "Implied if `HOMEBREW_EVAL_ALL` is set."

View File

@ -35,7 +35,7 @@ module Homebrew
description: "Install without checking for previously installed keg-only or " \ description: "Install without checking for previously installed keg-only or " \
"non-migrated versions." "non-migrated versions."
switch "-v", "--verbose", switch "-v", "--verbose",
description: "Print the verification and postinstall steps." description: "Print the verification and post-install steps."
[ [
[:switch, "--formula", "--formulae", { description: "Treat all named arguments as formulae." }], [:switch, "--formula", "--formulae", { description: "Treat all named arguments as formulae." }],
[:switch, "-s", "--build-from-source", { [:switch, "-s", "--build-from-source", {

View File

@ -11,7 +11,6 @@ module Homebrew
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Show detailed information about one or more <tap>s. Show detailed information about one or more <tap>s.
If no <tap> names are provided, display brief statistics for all installed taps. If no <tap> names are provided, display brief statistics for all installed taps.
EOS EOS
switch "--installed", switch "--installed",

View File

@ -12,7 +12,6 @@ module Homebrew
usage_banner "`tap` [<options>] [<user>`/`<repo>] [<URL>]" usage_banner "`tap` [<options>] [<user>`/`<repo>] [<URL>]"
description <<~EOS description <<~EOS
Tap a formula repository. Tap a formula repository.
If no arguments are provided, list all installed taps. If no arguments are provided, list all installed taps.
With <URL> unspecified, tap a formula repository from GitHub using HTTPS. With <URL> unspecified, tap a formula repository from GitHub using HTTPS.

View File

@ -35,7 +35,7 @@ module Homebrew
"non-migrated versions. When installing casks, overwrite existing files " \ "non-migrated versions. When installing casks, overwrite existing files " \
"(binaries and symlinks are excluded, unless originally from the same cask)." "(binaries and symlinks are excluded, unless originally from the same cask)."
switch "-v", "--verbose", switch "-v", "--verbose",
description: "Print the verification and postinstall steps." description: "Print the verification and post-install steps."
switch "-n", "--dry-run", switch "-n", "--dry-run",
description: "Show what would be upgraded, but do not actually upgrade anything." description: "Show what would be upgraded, but do not actually upgrade anything."
[ [

View File

@ -23,7 +23,7 @@ module Homebrew
of formulae that use <formula>. By default, `uses` shows all formulae and casks that of formulae that use <formula>. By default, `uses` shows all formulae and casks that
specify <formula> as a required or recommended dependency for their stable builds. specify <formula> as a required or recommended dependency for their stable builds.
Note: `--missing` and `--skip-recommended` have precedence over `--include-*`. *Note:* `--missing` and `--skip-recommended` have precedence over `--include-*`.
EOS EOS
switch "--recursive", switch "--recursive",
description: "Resolve more than one level of dependencies." description: "Resolve more than one level of dependencies."

View File

@ -230,7 +230,7 @@ class Dependency
end end
end end
# A dependency that marked as "installed" on macOS # A dependency that's marked as "installed" on macOS
class UsesFromMacOSDependency < Dependency class UsesFromMacOSDependency < Dependency
attr_reader :bounds attr_reader :bounds

View File

@ -20,7 +20,7 @@ module Homebrew
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
usage_banner "`contributions` [--user=<email|username>] [<--repositories>`=`] [<--csv>]" usage_banner "`contributions` [--user=<email|username>] [<--repositories>`=`] [<--csv>]"
description <<~EOS description <<~EOS
Contributions to Homebrew repositories. Summarise contributions to Homebrew repositories.
EOS EOS
comma_array "--repositories", comma_array "--repositories",

View File

@ -12,8 +12,7 @@ module Homebrew
def generate_cask_api_args def generate_cask_api_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Generates Cask API data files for formulae.brew.sh. Generate `homebrew/cask` API data files for <#{HOMEBREW_API_WWW}>.
The generated files are written to the current directory. The generated files are written to the current directory.
EOS EOS

View File

@ -11,8 +11,7 @@ module Homebrew
def generate_formula_api_args def generate_formula_api_args
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Generates Formula API data files for formulae.brew.sh. Generate `homebrew/core` API data files for <#{HOMEBREW_API_WWW}>.
The generated files are written to the current directory. The generated files are written to the current directory.
EOS EOS

View File

@ -14,7 +14,6 @@ module Homebrew
Homebrew::CLI::Parser.new do Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Check for newer versions of formulae and/or casks from upstream. Check for newer versions of formulae and/or casks from upstream.
If no formula or cask argument is passed, the list of formulae and If no formula or cask argument is passed, the list of formulae and
casks to check is taken from `HOMEBREW_LIVECHECK_WATCHLIST` or casks to check is taken from `HOMEBREW_LIVECHECK_WATCHLIST` or
`~/.homebrew/livecheck_watchlist.txt`. `~/.homebrew/livecheck_watchlist.txt`.

View File

@ -17,7 +17,7 @@ module Homebrew
The command will fail if the previous major or minor release was made less than The command will fail if the previous major or minor release was made less than
one month ago. one month ago.
Requires write access to the Homebrew/brew repository. *Note:* Requires write access to the Homebrew/brew repository.
EOS EOS
switch "--major", switch "--major",
description: "Create a major release." description: "Create a major release."

View File

@ -300,7 +300,7 @@ module Homebrew
}, },
HOMEBREW_NO_INSECURE_REDIRECT: { HOMEBREW_NO_INSECURE_REDIRECT: {
description: "If set, forbid redirects from secure HTTPS to insecure HTTP." \ description: "If set, forbid redirects from secure HTTPS to insecure HTTP." \
"\n\n *Note:* While ensuring your downloads are fully secure, this is likely to cause " \ "\n\n *Note:* while ensuring your downloads are fully secure, this is likely to cause " \
"from-source SourceForge, some GNU & GNOME-hosted formulae to fail to download.", "from-source SourceForge, some GNU & GNOME-hosted formulae to fail to download.",
boolean: true, boolean: true,
}, },
@ -317,7 +317,7 @@ module Homebrew
boolean: true, boolean: true,
}, },
HOMEBREW_NO_INSTALL_UPGRADE: { HOMEBREW_NO_INSTALL_UPGRADE: {
description: "If set, `brew install` <formula/cask> will not upgrade <formula/cask> if it is installed but " \ description: "If set, `brew install` <formula|cask> will not upgrade <formula|cask> if it is installed but " \
"outdated.", "outdated.",
boolean: true, boolean: true,
}, },
@ -333,7 +333,7 @@ module Homebrew
boolean: true, boolean: true,
}, },
HOMEBREW_PIP_INDEX_URL: { HOMEBREW_PIP_INDEX_URL: {
description: "If set, `brew install <formula>` will use this URL to download PyPI package resources.", description: "If set, `brew install` <formula> will use this URL to download PyPI package resources.",
default_text: "`https://pypi.org/simple`.", default_text: "`https://pypi.org/simple`.",
}, },
HOMEBREW_PRY: { HOMEBREW_PRY: {
@ -361,7 +361,7 @@ module Homebrew
}, },
HOMEBREW_SSH_CONFIG_PATH: { HOMEBREW_SSH_CONFIG_PATH: {
description: "If set, Homebrew will use the given config file instead of `~/.ssh/config` when fetching " \ description: "If set, Homebrew will use the given config file instead of `~/.ssh/config` when fetching " \
"`git` repos over `ssh`.", "Git repositories over SSH.",
default_text: "`$HOME/.ssh/config`", default_text: "`$HOME/.ssh/config`",
}, },
HOMEBREW_SVN: { HOMEBREW_SVN: {

View File

@ -292,7 +292,7 @@ module Kernel
unless silent unless silent
opoo <<~EOS opoo <<~EOS
Using #{editor} because no editor was set in the environment. Using #{editor} because no editor was set in the environment.
This may change in the future, so we recommend setting EDITOR, This may change in the future, so we recommend setting EDITOR
or HOMEBREW_EDITOR to your preferred text editor. or HOMEBREW_EDITOR to your preferred text editor.
EOS EOS
end end

View File

@ -85,19 +85,19 @@ class Formula
attr_reader :alias_name attr_reader :alias_name
# The fully-qualified name of this {Formula}. # The fully-qualified name of this {Formula}.
# For core formula it's the same as {#name}. # For core formulae it's the same as {#name}.
# e.g. `homebrew/tap-name/this-formula` # e.g. `homebrew/tap-name/this-formula`
sig { returns(String) } sig { returns(String) }
attr_reader :full_name attr_reader :full_name
# The fully-qualified alias referring to this {Formula}. # The fully-qualified alias referring to this {Formula}.
# For core formula it's the same as {#alias_name}. # For core formulae it's the same as {#alias_name}.
# e.g. `homebrew/tap-name/another-name-for-this-formula` # e.g. `homebrew/tap-name/another-name-for-this-formula`
sig { returns(T.nilable(String)) } sig { returns(T.nilable(String)) }
attr_reader :full_alias_name attr_reader :full_alias_name
# The full path to this {Formula}. # The full path to this {Formula}.
# e.g. `/usr/local/Library/Taps/homebrew/homebrew-core/Formula/this-formula.rb` # e.g. `/usr/local/Library/Taps/homebrew/homebrew-core/Formula/t/this-formula.rb`
sig { returns(Pathname) } sig { returns(Pathname) }
attr_reader :path attr_reader :path
@ -527,7 +527,7 @@ class Formula
delegate resource: :active_spec delegate resource: :active_spec
# An old name for the formula. # An old name for the formula.
# @deprecated Use #{#oldnames} instead. # @deprecated Use {#oldnames} instead.
sig { returns(T.nilable(String)) } sig { returns(T.nilable(String)) }
def oldname def oldname
odeprecated "Formula#oldname", "Formula#oldnames" odeprecated "Formula#oldname", "Formula#oldnames"
@ -672,7 +672,7 @@ class Formula
end end
# The directory in the cellar that the formula is installed to. # The directory in the cellar that the formula is installed to.
# This directory points to {#opt_prefix} if it exists and if #{prefix} is not # This directory points to {#opt_prefix} if it exists and if {#prefix} is not
# called from within the same formula's {#install} or {#post_install} methods. # called from within the same formula's {#install} or {#post_install} methods.
# Otherwise, return the full path to the formula's versioned cellar. # Otherwise, return the full path to the formula's versioned cellar.
def prefix(version = pkg_version) def prefix(version = pkg_version)
@ -1718,8 +1718,7 @@ class Formula
# #
# If `name` is specified as "*", match any shared library of any version. # If `name` is specified as "*", match any shared library of any version.
# #
# <pre> # <pre>shared_library("foo") #=> foo.dylib
# shared_library("foo") #=> foo.dylib
# shared_library("foo", 1) #=> foo.1.dylib # shared_library("foo", 1) #=> foo.1.dylib
# shared_library("foo", "*") #=> foo.2.dylib, foo.1.dylib, foo.dylib # shared_library("foo", "*") #=> foo.2.dylib, foo.1.dylib, foo.dylib
# shared_library("*") #=> foo.dylib, bar.dylib # shared_library("*") #=> foo.dylib, bar.dylib
@ -1741,8 +1740,7 @@ class Formula
# Optionally specify a `source` or `target` depending on the location # Optionally specify a `source` or `target` depending on the location
# of the file containing the RPATH command and where its target is located. # of the file containing the RPATH command and where its target is located.
# #
# <pre> # <pre>rpath #=> "@loader_path/../lib"
# rpath #=> "@loader_path/../lib"
# rpath(target: frameworks) #=> "@loader_path/../Frameworks" # rpath(target: frameworks) #=> "@loader_path/../Frameworks"
# rpath(source: libexec/"bin") #=> "@loader_path/../../lib" # rpath(source: libexec/"bin") #=> "@loader_path/../../lib"
# </pre> # </pre>
@ -1808,64 +1806,62 @@ class Formula
# Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable. # Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable.
# #
# @param commands [Pathname, String] the path to the executable and any passed subcommand(s) # @param commands [Pathname, String] the path to the executable and any passed subcommand(s)
# to use for generating the completion scripts. # to use for generating the completion scripts.
# @param base_name [String] the base name of the generated completion script. Defaults to the formula name. # @param base_name [String] the base name of the generated completion script. Defaults to the formula name.
# @param shells [Array<Symbol>] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. # @param shells [Array<Symbol>] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`.
# @param shell_parameter_format [String, Symbol] specify how `shells` should each be passed # @param shell_parameter_format [String, Symbol] specify how `shells` should each be passed
# to the `executable`. Takes either a String representing a prefix, or one of [:flag, :arg, :none, :click]. # to the `executable`. Takes either a String representing a prefix, or one of `[:flag, :arg, :none, :click]`.
# Defaults to plainly passing the shell. # Defaults to plainly passing the shell.
# #
# @example Using default values for optional arguments # @example Using default values for optional arguments
# generate_completions_from_executable(bin/"foo", "completions") # generate_completions_from_executable(bin/"foo", "completions")
# translates to
# #
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "bash") # # translates to
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "bash")
# (zsh_completion/"_foo").write Utils.safe_popen_read({ "SHELL" => "zsh" }, bin/"foo", "completions", "zsh")
# (fish_completion/"foo.fish").write Utils.safe_popen_read({ "SHELL" => "fish" }, bin/"foo",
# "completions", "fish")
# #
# (zsh_completion/"_foo").write Utils.safe_popen_read({ "SHELL" => "zsh" }, bin/"foo", "completions", "zsh") # @example Selecting shells and using a different `base_name`
# generate_completions_from_executable(bin/"foo", "completions", shells: [:bash, :zsh], base_name: "bar")
# #
# (fish_completion/"foo.fish").write Utils.safe_popen_read({ "SHELL" => "fish" }, bin/"foo", "completions", "fish") # # translates to
# (bash_completion/"bar").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "bash")
# (zsh_completion/"_bar").write Utils.safe_popen_read({ "SHELL" => "zsh" }, bin/"foo", "completions", "zsh")
# #
# @example Selecting shells and using a different base_name # @example Using predefined `shell_parameter_format :flag`
# generate_completions_from_executable(bin/"foo", "completions", shells: [:bash, :zsh], base_name: "bar")
# translates to
#
# (bash_completion/"bar").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "bash")
#
# (zsh_completion/"_bar").write Utils.safe_popen_read({ "SHELL" => "zsh" }, bin/"foo", "completions", "zsh")
#
# @example Using predefined shell_parameter_format :flag
# generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :flag, shells: [:bash]) # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :flag, shells: [:bash])
# translates to
# #
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "--bash") # # translates to
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "--bash")
# #
# @example Using predefined shell_parameter_format :arg # @example Using predefined `shell_parameter_format :arg`
# generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :arg, shells: [:bash]) # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :arg, shells: [:bash])
# translates to
# #
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", # # translates to
# "completions", "--shell=bash") # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo",
# "completions", "--shell=bash")
# #
# @example Using predefined shell_parameter_format :none # @example Using predefined `shell_parameter_format :none`
# generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :none, shells: [:bash]) # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :none, shells: [:bash])
# translates to
# #
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions") # # translates to
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions")
# #
# @example Using predefined shell_parameter_format :click # @example Using predefined `shell_parameter_format :click`
# generate_completions_from_executable(bin/"foo", shell_parameter_format: :click, shells: [:zsh]) # generate_completions_from_executable(bin/"foo", shell_parameter_format: :click, shells: [:zsh])
# translates to
# #
# (zsh_completion/"_foo").write Utils.safe_popen_read({ "SHELL" => "zsh", "_FOO_COMPLETE" => "zsh_source" }, # # translates to
# bin/"foo") # (zsh_completion/"_foo").write Utils.safe_popen_read({ "SHELL" => "zsh", "_FOO_COMPLETE" => "zsh_source" },
# bin/"foo")
# #
# @example Using custom shell_parameter_format # @example Using custom `shell_parameter_format`
# generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: "--selected-shell=", # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: "--selected-shell=",
# shells: [:bash]) # shells: [:bash])
# translates to
# #
# (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", # # translates to
# "completions", "--selected-shell=bash") # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo",
# "completions", "--selected-shell=bash")
sig { sig {
params(commands: T.any(Pathname, String), base_name: String, shells: T::Array[Symbol], params(commands: T.any(Pathname, String), base_name: String, shells: T::Array[Symbol],
shell_parameter_format: T.nilable(T.any(Symbol, String))).void shell_parameter_format: T.nilable(T.any(Symbol, String))).void
@ -2432,7 +2428,7 @@ class Formula
hash hash
end end
# Returns the bottle information for a formula # Returns the bottle information for a formula.
def bottle_hash def bottle_hash
bottle_spec = T.must(stable).bottle_specification bottle_spec = T.must(stable).bottle_specification
hash = { hash = {
@ -3451,7 +3447,7 @@ class Formula
# explicitly use that compiler in a formula's {#install} block, # explicitly use that compiler in a formula's {#install} block,
# rather than implicitly finding a suitable compiler with `needs`. # rather than implicitly finding a suitable compiler with `needs`.
# #
# @see #fails_with # @see .fails_with
def needs(*standards) def needs(*standards)
specs.each { |spec| spec.needs(*standards) } specs.each { |spec| spec.needs(*standards) }
end end

View File

@ -60,7 +60,7 @@ module Homebrew
raise "#{path} already exists" if path.exist? raise "#{path} already exists" if path.exist?
if version.nil? || version.null? if version.nil? || version.null?
odie "Version cannot be determined from URL. Explicity set the version with `--set-version` instead." odie "Version cannot be determined from URL. Explicitly set the version with `--set-version` instead."
elsif fetch? elsif fetch?
unless head? unless head?
r = Resource.new r = Resource.new

View File

@ -685,7 +685,7 @@ on_request: installed_on_request?, options: options)
# When fetching we don't need to recurse the dependency tree as it's already # When fetching we don't need to recurse the dependency tree as it's already
# been done for us in `compute_dependencies` and there's no requirement to # been done for us in `compute_dependencies` and there's no requirement to
# fetch in a particular order. # fetch in a particular order.
# Note, this tree can vary when pouring bottles so we need ot check it then. # Note, this tree can vary when pouring bottles so we need to check it then.
ignore_deps: !pour_bottle?, ignore_deps: !pour_bottle?,
installed_as_dependency: true, installed_as_dependency: true,
include_test_formulae: @include_test_formulae, include_test_formulae: @include_test_formulae,

View File

@ -36,6 +36,7 @@ HOMEBREW_REQUIRED_RUBY_VERSION = ENV.fetch("HOMEBREW_REQUIRED_RUBY_VERSION").fre
HOMEBREW_PRODUCT = ENV.fetch("HOMEBREW_PRODUCT").freeze HOMEBREW_PRODUCT = ENV.fetch("HOMEBREW_PRODUCT").freeze
HOMEBREW_VERSION = ENV.fetch("HOMEBREW_VERSION").freeze HOMEBREW_VERSION = ENV.fetch("HOMEBREW_VERSION").freeze
HOMEBREW_WWW = "https://brew.sh" HOMEBREW_WWW = "https://brew.sh"
HOMEBREW_API_WWW = "https://formulae.brew.sh"
HOMEBREW_DOCS_WWW = "https://docs.brew.sh" HOMEBREW_DOCS_WWW = "https://docs.brew.sh"
HOMEBREW_SYSTEM = ENV.fetch("HOMEBREW_SYSTEM").freeze HOMEBREW_SYSTEM = ENV.fetch("HOMEBREW_SYSTEM").freeze
HOMEBREW_PROCESSOR = ENV.fetch("HOMEBREW_PROCESSOR").freeze HOMEBREW_PROCESSOR = ENV.fetch("HOMEBREW_PROCESSOR").freeze

View File

@ -87,7 +87,7 @@ module Homebrew
# keg-only install is only possible when no other version is # keg-only install is only possible when no other version is
# linked to opt, because installing without any warnings can break # linked to opt, because installing without any warnings can break
# dependencies. Therefore before performing other checks we need to be # dependencies. Therefore before performing other checks we need to be
# sure --force flag is passed. # sure the --force switch is passed.
if formula.outdated? if formula.outdated?
if !Homebrew::EnvConfig.no_install_upgrade? && !formula.pinned? if !Homebrew::EnvConfig.no_install_upgrade? && !formula.pinned?
name = formula.name name = formula.name
@ -113,7 +113,7 @@ module Homebrew
EOS EOS
end end
elsif (head && new_head_installed) || prefix_installed elsif (head && new_head_installed) || prefix_installed
# After we're sure that --force flag is passed for linked to opt # After we're sure the --force switch was passed for linking to opt
# keg-only we need to be sure that the version we're attempting to # keg-only we need to be sure that the version we're attempting to
# install is not already installed. # install is not already installed.

View File

@ -15,11 +15,11 @@ module Homebrew
# Before version 40, GNOME used a version scheme where unstable releases # Before version 40, GNOME used a version scheme where unstable releases
# were indicated with a minor that's 90+ or odd. The newer version scheme # were indicated with a minor that's 90+ or odd. The newer version scheme
# uses trailing alpha/beta/rc text to identify unstable versions # uses trailing alpha/beta/rc text to identify unstable versions
# (e.g., `40.alpha`). # (e.g. `40.alpha`).
# #
# When a regex isn't provided in a `livecheck` block, the strategy uses # When a regex isn't provided in a `livecheck` block, the strategy uses
# a default regex that matches versions which don't include trailing text # a default regex that matches versions which don't include trailing text
# after the numeric version (e.g., `40.0` instead of `40.alpha`) and it # after the numeric version (e.g. `40.0` instead of `40.alpha`) and it
# selectively filters out unstable versions below 40 using the rules for # selectively filters out unstable versions below 40 using the rules for
# the older version scheme. # the older version scheme.
# #

View File

@ -19,7 +19,7 @@ module Homebrew
class Pypi class Pypi
NICE_NAME = "PyPI" NICE_NAME = "PyPI"
# The `Regexp` used to extract the package name and suffix (e.g., file # The `Regexp` used to extract the package name and suffix (e.g. file
# extension) from the URL basename. # extension) from the URL basename.
FILENAME_REGEX = / FILENAME_REGEX = /
(?<package_name>.+)- # The package name followed by a hyphen (?<package_name>.+)- # The package name followed by a hyphen

View File

@ -183,7 +183,7 @@ module Homebrew
sig { returns(String) } sig { returns(String) }
def self.global_cask_options_manpage def self.global_cask_options_manpage
lines = ["These options are applicable to the `install`, `reinstall`, and `upgrade` " \ lines = ["These options are applicable to the `install`, `reinstall`, and `upgrade` " \
"subcommands with the `--cask` flag.\n"] "subcommands with the `--cask` switch.\n"]
lines += Homebrew::CLI::Parser.global_cask_options.map do |_, long, description:, **| lines += Homebrew::CLI::Parser.global_cask_options.map do |_, long, description:, **|
generate_option_doc(nil, long.chomp("="), description) generate_option_doc(nil, long.chomp("="), description)
end end

View File

@ -18,7 +18,7 @@ class Tab
:built_on :built_on
attr_writer :used_options, :unused_options, :compiler, :runtime_dependencies, :source_modified_time attr_writer :used_options, :unused_options, :compiler, :runtime_dependencies, :source_modified_time
# Instantiates a Tab for a new installation of a formula. # Instantiates a {Tab} for a new installation of a formula.
def self.create(formula, compiler, stdlib) def self.create(formula, compiler, stdlib)
build = formula.build build = formula.build
runtime_deps = formula.runtime_dependencies(undeclared: false) runtime_deps = formula.runtime_dependencies(undeclared: false)
@ -362,7 +362,7 @@ class Tab
JSON.pretty_generate(attributes, options) JSON.pretty_generate(attributes, options)
end end
# a subset of to_json that we care about for bottles # A subset of to_json that we care about for bottles.
def to_bottle_hash def to_bottle_hash
attributes = { attributes = {
"homebrew_version" => homebrew_version, "homebrew_version" => homebrew_version,

View File

@ -187,14 +187,14 @@ class Tap
git_repo.git_repo? git_repo.git_repo?
end end
# git branch for this {Tap}. # Git branch for this {Tap}.
def git_branch def git_branch
raise TapUnavailableError, name unless installed? raise TapUnavailableError, name unless installed?
git_repo.branch_name git_repo.branch_name
end end
# git HEAD for this {Tap}. # Git HEAD for this {Tap}.
def git_head def git_head
raise TapUnavailableError, name unless installed? raise TapUnavailableError, name unless installed?

View File

@ -28,17 +28,17 @@ describe Homebrew::CLI::Parser do
expect { args.no_positive? }.to raise_error(NoMethodError) expect { args.no_positive? }.to raise_error(NoMethodError)
end end
it "sets the positive name to false if the negative flag is passed" do it "sets the positive name to false if the negative switch is passed" do
args = parser.parse(["--no-positive"]) args = parser.parse(["--no-positive"])
expect(args).not_to be_positive expect(args).not_to be_positive
end end
it "sets the positive name to true if the positive flag is passed" do it "sets the positive name to true if the positive switch is passed" do
args = parser.parse(["--positive"]) args = parser.parse(["--positive"])
expect(args).to be_positive expect(args).to be_positive
end end
it "does not set the positive name if the positive flag is not passed" do it "does not set the positive name if the positive switch is not passed" do
args = parser.parse([]) args = parser.parse([])
expect(args.positive?).to be_nil expect(args.positive?).to be_nil
end end
@ -62,7 +62,7 @@ describe Homebrew::CLI::Parser do
end.to raise_error(/invalid option/) end.to raise_error(/invalid option/)
end end
it "sets the negative name to true if the negative flag is passed" do it "sets the negative name to true if the negative switch is passed" do
args = parser.parse(["--no-positive"]) args = parser.parse(["--no-positive"])
expect(args.no_positive?).to be true expect(args.no_positive?).to be true
end end

View File

@ -222,7 +222,7 @@ describe Homebrew::Completions do
it "will override global options with local descriptions" do it "will override global options with local descriptions" do
options = described_class.command_options("upgrade") options = described_class.command_options("upgrade")
expect(options["--verbose"]).to eq "Print the verification and postinstall steps." expect(options["--verbose"]).to eq "Print the verification and post-install steps."
end end
end end

View File

@ -9,7 +9,7 @@ TEST_TMPDIR = ENV.fetch("HOMEBREW_TEST_TMPDIR") do |k|
dir = Dir.mktmpdir("homebrew-tests-", ENV.fetch("HOMEBREW_TEMP")) dir = Dir.mktmpdir("homebrew-tests-", ENV.fetch("HOMEBREW_TEMP"))
at_exit do at_exit do
# Child processes inherit this at_exit handler, but we don't want them # Child processes inherit this at_exit handler, but we don't want them
# to clean TEST_TMPDIR up prematurely (i.e., when they exit early for a test). # to clean TEST_TMPDIR up prematurely (i.e. when they exit early for a test).
FileUtils.remove_entry(dir) unless ENV["HOMEBREW_TEST_NO_EXIT_CLEANUP"] FileUtils.remove_entry(dir) unless ENV["HOMEBREW_TEST_NO_EXIT_CLEANUP"]
end end
ENV[k] = dir ENV[k] = dir

View File

@ -23,7 +23,7 @@ module Utils
HTTP_RESPONSE_BODY_SEPARATOR = "\r\n\r\n" HTTP_RESPONSE_BODY_SEPARATOR = "\r\n\r\n"
# This regex is used to isolate the parts of an HTTP status line, namely # This regex is used to isolate the parts of an HTTP status line, namely
# the status code and any following descriptive text (e.g., `Not Found`). # the status code and any following descriptive text (e.g. `Not Found`).
HTTP_STATUS_LINE_REGEX = %r{^HTTP/.* (?<code>\d+)(?: (?<text>[^\r\n]+))?}.freeze HTTP_STATUS_LINE_REGEX = %r{^HTTP/.* (?<code>\d+)(?: (?<text>[^\r\n]+))?}.freeze
private_constant :ETAG_VALUE_REGEX, :HTTP_RESPONSE_BODY_SEPARATOR, :HTTP_STATUS_LINE_REGEX private_constant :ETAG_VALUE_REGEX, :HTTP_RESPONSE_BODY_SEPARATOR, :HTTP_STATUS_LINE_REGEX
@ -112,7 +112,7 @@ module Utils
args << "--connect-timeout" << connect_timeout.round(3) if connect_timeout.present? args << "--connect-timeout" << connect_timeout.round(3) if connect_timeout.present?
args << "--max-time" << max_time.round(3) if max_time.present? args << "--max-time" << max_time.round(3) if max_time.present?
# A non-positive integer (e.g., 0) or `nil` will omit this argument # A non-positive integer (e.g. 0) or `nil` will omit this argument
args << "--retry" << retries if retries&.positive? args << "--retry" << retries if retries&.positive?
args << "--retry-max-time" << retry_max_time.round if retry_max_time.present? args << "--retry-max-time" << retry_max_time.round if retry_max_time.present?

View File

@ -250,7 +250,7 @@ __fish_brew_complete_arg '--prefix' -l verbose -d 'Make some output more verbose
__fish_brew_complete_arg '--prefix' -a '(__fish_brew_suggest_formulae_all)' __fish_brew_complete_arg '--prefix' -a '(__fish_brew_suggest_formulae_all)'
__fish_brew_complete_cmd '--repo' 'Display where Homebrew\'s git repository is located' __fish_brew_complete_cmd '--repo' 'Display where Homebrew\'s Git repository is located'
__fish_brew_complete_arg '--repo' -l debug -d 'Display any debugging information' __fish_brew_complete_arg '--repo' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg '--repo' -l help -d 'Show this message' __fish_brew_complete_arg '--repo' -l help -d 'Show this message'
__fish_brew_complete_arg '--repo' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg '--repo' -l quiet -d 'Make some output more quiet'
@ -258,7 +258,7 @@ __fish_brew_complete_arg '--repo' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_arg '--repo' -a '(__fish_brew_suggest_taps_installed)' __fish_brew_complete_arg '--repo' -a '(__fish_brew_suggest_taps_installed)'
__fish_brew_complete_cmd '--repository' 'Display where Homebrew\'s git repository is located' __fish_brew_complete_cmd '--repository' 'Display where Homebrew\'s Git repository is located'
__fish_brew_complete_arg '--repository' -l debug -d 'Display any debugging information' __fish_brew_complete_arg '--repository' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg '--repository' -l help -d 'Show this message' __fish_brew_complete_arg '--repository' -l help -d 'Show this message'
__fish_brew_complete_arg '--repository' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg '--repository' -l quiet -d 'Make some output more quiet'
@ -528,7 +528,7 @@ __fish_brew_complete_arg 'config' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'config' -l verbose -d 'Make some output more verbose' __fish_brew_complete_arg 'config' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_cmd 'contributions' 'Contributions to Homebrew repositories' __fish_brew_complete_cmd 'contributions' 'Summarise contributions to Homebrew repositories'
__fish_brew_complete_arg 'contributions' -l csv -d 'Print a CSV of contributions across repositories over the time period' __fish_brew_complete_arg 'contributions' -l csv -d 'Print a CSV of contributions across repositories over the time period'
__fish_brew_complete_arg 'contributions' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'contributions' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'contributions' -l from -d 'Date (ISO-8601 format) to start searching contributions. Omitting this flag searches the last year' __fish_brew_complete_arg 'contributions' -l from -d 'Date (ISO-8601 format) to start searching contributions. Omitting this flag searches the last year'
@ -644,7 +644,7 @@ __fish_brew_complete_arg 'dispatch-build-bottle' -l workflow -d 'Dispatch specif
__fish_brew_complete_arg 'dispatch-build-bottle' -a '(__fish_brew_suggest_formulae_all)' __fish_brew_complete_arg 'dispatch-build-bottle' -a '(__fish_brew_suggest_formulae_all)'
__fish_brew_complete_cmd 'docs' 'Open Homebrew\'s online documentation (https://docs.brew.sh) in a browser' __fish_brew_complete_cmd 'docs' 'Open Homebrew\'s online documentation at https://docs.brew.sh in a browser'
__fish_brew_complete_arg 'docs' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'docs' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'docs' -l help -d 'Show this message' __fish_brew_complete_arg 'docs' -l help -d 'Show this message'
__fish_brew_complete_arg 'docs' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'docs' -l quiet -d 'Make some output more quiet'
@ -736,7 +736,7 @@ __fish_brew_complete_arg 'formula' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_arg 'formula' -a '(__fish_brew_suggest_formulae_all)' __fish_brew_complete_arg 'formula' -a '(__fish_brew_suggest_formulae_all)'
__fish_brew_complete_cmd 'generate-cask-api' 'Generates Cask API data files for formulae.brew.sh' __fish_brew_complete_cmd 'generate-cask-api' 'Generate `homebrew/cask` API data files for https://formulae.brew.sh'
__fish_brew_complete_arg 'generate-cask-api' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'generate-cask-api' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'generate-cask-api' -l dry-run -d 'Generate API data without writing it to files' __fish_brew_complete_arg 'generate-cask-api' -l dry-run -d 'Generate API data without writing it to files'
__fish_brew_complete_arg 'generate-cask-api' -l help -d 'Show this message' __fish_brew_complete_arg 'generate-cask-api' -l help -d 'Show this message'
@ -744,7 +744,7 @@ __fish_brew_complete_arg 'generate-cask-api' -l quiet -d 'Make some output more
__fish_brew_complete_arg 'generate-cask-api' -l verbose -d 'Make some output more verbose' __fish_brew_complete_arg 'generate-cask-api' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_cmd 'generate-formula-api' 'Generates Formula API data files for formulae.brew.sh' __fish_brew_complete_cmd 'generate-formula-api' 'Generate `homebrew/core` API data files for https://formulae.brew.sh'
__fish_brew_complete_arg 'generate-formula-api' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'generate-formula-api' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'generate-formula-api' -l dry-run -d 'Generate API data without writing it to files' __fish_brew_complete_arg 'generate-formula-api' -l dry-run -d 'Generate API data without writing it to files'
__fish_brew_complete_arg 'generate-formula-api' -l help -d 'Show this message' __fish_brew_complete_arg 'generate-formula-api' -l help -d 'Show this message'
@ -835,7 +835,7 @@ __fish_brew_complete_arg 'instal' -l force-bottle -d 'Install from a bottle if i
__fish_brew_complete_arg 'instal' -l formula -d 'Treat all named arguments as formulae' __fish_brew_complete_arg 'instal' -l formula -d 'Treat all named arguments as formulae'
__fish_brew_complete_arg 'instal' -l git -d 'Create a Git repository, useful for creating patches to the software' __fish_brew_complete_arg 'instal' -l git -d 'Create a Git repository, useful for creating patches to the software'
__fish_brew_complete_arg 'instal' -l help -d 'Show this message' __fish_brew_complete_arg 'instal' -l help -d 'Show this message'
__fish_brew_complete_arg 'instal' -l ignore-dependencies -d 'An unsupported Homebrew development flag to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you\'re not developing Homebrew, consider adjusting your PATH rather than using this flag' __fish_brew_complete_arg 'instal' -l ignore-dependencies -d 'An unsupported Homebrew development option to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you\'re not developing Homebrew, consider adjusting your PATH rather than using this option'
__fish_brew_complete_arg 'instal' -l include-test -d 'Install testing dependencies required to run `brew test` formula' __fish_brew_complete_arg 'instal' -l include-test -d 'Install testing dependencies required to run `brew test` formula'
__fish_brew_complete_arg 'instal' -l input-methoddir -d 'Target location for Input Methods (default: `~/Library/Input Methods`)' __fish_brew_complete_arg 'instal' -l input-methoddir -d 'Target location for Input Methods (default: `~/Library/Input Methods`)'
__fish_brew_complete_arg 'instal' -l interactive -d 'Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package' __fish_brew_complete_arg 'instal' -l interactive -d 'Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package'
@ -857,7 +857,7 @@ __fish_brew_complete_arg 'instal' -l screen-saverdir -d 'Target location for Scr
__fish_brew_complete_arg 'instal' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)' __fish_brew_complete_arg 'instal' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)'
__fish_brew_complete_arg 'instal' -l skip-cask-deps -d 'Skip installing cask dependencies' __fish_brew_complete_arg 'instal' -l skip-cask-deps -d 'Skip installing cask dependencies'
__fish_brew_complete_arg 'instal' -l skip-post-install -d 'Install but skip any post-install steps' __fish_brew_complete_arg 'instal' -l skip-post-install -d 'Install but skip any post-install steps'
__fish_brew_complete_arg 'instal' -l verbose -d 'Print the verification and postinstall steps' __fish_brew_complete_arg 'instal' -l verbose -d 'Print the verification and post-install steps'
__fish_brew_complete_arg 'instal' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)' __fish_brew_complete_arg 'instal' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)'
__fish_brew_complete_arg 'instal' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)' __fish_brew_complete_arg 'instal' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)'
__fish_brew_complete_arg 'instal' -l zap -d 'For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*' __fish_brew_complete_arg 'instal' -l zap -d 'For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*'
@ -889,7 +889,7 @@ __fish_brew_complete_arg 'install' -l force-bottle -d 'Install from a bottle if
__fish_brew_complete_arg 'install' -l formula -d 'Treat all named arguments as formulae' __fish_brew_complete_arg 'install' -l formula -d 'Treat all named arguments as formulae'
__fish_brew_complete_arg 'install' -l git -d 'Create a Git repository, useful for creating patches to the software' __fish_brew_complete_arg 'install' -l git -d 'Create a Git repository, useful for creating patches to the software'
__fish_brew_complete_arg 'install' -l help -d 'Show this message' __fish_brew_complete_arg 'install' -l help -d 'Show this message'
__fish_brew_complete_arg 'install' -l ignore-dependencies -d 'An unsupported Homebrew development flag to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you\'re not developing Homebrew, consider adjusting your PATH rather than using this flag' __fish_brew_complete_arg 'install' -l ignore-dependencies -d 'An unsupported Homebrew development option to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you\'re not developing Homebrew, consider adjusting your PATH rather than using this option'
__fish_brew_complete_arg 'install' -l include-test -d 'Install testing dependencies required to run `brew test` formula' __fish_brew_complete_arg 'install' -l include-test -d 'Install testing dependencies required to run `brew test` formula'
__fish_brew_complete_arg 'install' -l input-methoddir -d 'Target location for Input Methods (default: `~/Library/Input Methods`)' __fish_brew_complete_arg 'install' -l input-methoddir -d 'Target location for Input Methods (default: `~/Library/Input Methods`)'
__fish_brew_complete_arg 'install' -l interactive -d 'Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package' __fish_brew_complete_arg 'install' -l interactive -d 'Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package'
@ -911,7 +911,7 @@ __fish_brew_complete_arg 'install' -l screen-saverdir -d 'Target location for Sc
__fish_brew_complete_arg 'install' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)' __fish_brew_complete_arg 'install' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)'
__fish_brew_complete_arg 'install' -l skip-cask-deps -d 'Skip installing cask dependencies' __fish_brew_complete_arg 'install' -l skip-cask-deps -d 'Skip installing cask dependencies'
__fish_brew_complete_arg 'install' -l skip-post-install -d 'Install but skip any post-install steps' __fish_brew_complete_arg 'install' -l skip-post-install -d 'Install but skip any post-install steps'
__fish_brew_complete_arg 'install' -l verbose -d 'Print the verification and postinstall steps' __fish_brew_complete_arg 'install' -l verbose -d 'Print the verification and post-install steps'
__fish_brew_complete_arg 'install' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)' __fish_brew_complete_arg 'install' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)'
__fish_brew_complete_arg 'install' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)' __fish_brew_complete_arg 'install' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)'
__fish_brew_complete_arg 'install' -l zap -d 'For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*' __fish_brew_complete_arg 'install' -l zap -d 'For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*'
@ -1093,7 +1093,7 @@ __fish_brew_complete_arg 'missing' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_arg 'missing' -a '(__fish_brew_suggest_formulae_all)' __fish_brew_complete_arg 'missing' -a '(__fish_brew_suggest_formulae_all)'
__fish_brew_complete_cmd 'nodenv-sync' 'Create symlinks for Homebrew\'s installed NodeJS versions in ~/.nodenv/versions' __fish_brew_complete_cmd 'nodenv-sync' 'Create symlinks for Homebrew\'s installed NodeJS versions in `~/.nodenv/versions`'
__fish_brew_complete_arg 'nodenv-sync' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'nodenv-sync' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'nodenv-sync' -l help -d 'Show this message' __fish_brew_complete_arg 'nodenv-sync' -l help -d 'Show this message'
__fish_brew_complete_arg 'nodenv-sync' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'nodenv-sync' -l quiet -d 'Make some output more quiet'
@ -1239,14 +1239,14 @@ __fish_brew_complete_arg 'prof' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_arg 'prof' -a '(__fish_brew_suggest_commands)' __fish_brew_complete_arg 'prof' -a '(__fish_brew_suggest_commands)'
__fish_brew_complete_cmd 'pyenv-sync' 'Create symlinks for Homebrew\'s installed Python versions in ~/.pyenv/versions' __fish_brew_complete_cmd 'pyenv-sync' 'Create symlinks for Homebrew\'s installed Python versions in `~/.pyenv/versions`'
__fish_brew_complete_arg 'pyenv-sync' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'pyenv-sync' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'pyenv-sync' -l help -d 'Show this message' __fish_brew_complete_arg 'pyenv-sync' -l help -d 'Show this message'
__fish_brew_complete_arg 'pyenv-sync' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'pyenv-sync' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'pyenv-sync' -l verbose -d 'Make some output more verbose' __fish_brew_complete_arg 'pyenv-sync' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_cmd 'rbenv-sync' 'Create symlinks for Homebrew\'s installed Ruby versions in ~/.rbenv/versions' __fish_brew_complete_cmd 'rbenv-sync' 'Create symlinks for Homebrew\'s installed Ruby versions in `~/.rbenv/versions`'
__fish_brew_complete_arg 'rbenv-sync' -l debug -d 'Display any debugging information' __fish_brew_complete_arg 'rbenv-sync' -l debug -d 'Display any debugging information'
__fish_brew_complete_arg 'rbenv-sync' -l help -d 'Show this message' __fish_brew_complete_arg 'rbenv-sync' -l help -d 'Show this message'
__fish_brew_complete_arg 'rbenv-sync' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'rbenv-sync' -l quiet -d 'Make some output more quiet'
@ -1262,7 +1262,7 @@ __fish_brew_complete_arg 'readall' -l help -d 'Show this message'
__fish_brew_complete_arg 'readall' -l no-simulate -d 'Don\'t simulate other system configurations when checking formulae and casks' __fish_brew_complete_arg 'readall' -l no-simulate -d 'Don\'t simulate other system configurations when checking formulae and casks'
__fish_brew_complete_arg 'readall' -l os -d 'Read using the given operating system. (Pass `all` to simulate all operating systems.)' __fish_brew_complete_arg 'readall' -l os -d 'Read using the given operating system. (Pass `all` to simulate all operating systems.)'
__fish_brew_complete_arg 'readall' -l quiet -d 'Make some output more quiet' __fish_brew_complete_arg 'readall' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'readall' -l syntax -d 'Syntax-check all of Homebrew\'s Ruby files (if no `tap` is passed)' __fish_brew_complete_arg 'readall' -l syntax -d 'Syntax-check all of Homebrew\'s Ruby files (if no tap is passed)'
__fish_brew_complete_arg 'readall' -l verbose -d 'Make some output more verbose' __fish_brew_complete_arg 'readall' -l verbose -d 'Make some output more verbose'
__fish_brew_complete_arg 'readall' -a '(__fish_brew_suggest_taps_installed)' __fish_brew_complete_arg 'readall' -a '(__fish_brew_suggest_taps_installed)'
@ -1302,7 +1302,7 @@ __fish_brew_complete_arg 'reinstall' -l require-sha -d 'Require all casks to hav
__fish_brew_complete_arg 'reinstall' -l screen-saverdir -d 'Target location for Screen Savers (default: `~/Library/Screen Savers`)' __fish_brew_complete_arg 'reinstall' -l screen-saverdir -d 'Target location for Screen Savers (default: `~/Library/Screen Savers`)'
__fish_brew_complete_arg 'reinstall' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)' __fish_brew_complete_arg 'reinstall' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)'
__fish_brew_complete_arg 'reinstall' -l skip-cask-deps -d 'Skip installing cask dependencies' __fish_brew_complete_arg 'reinstall' -l skip-cask-deps -d 'Skip installing cask dependencies'
__fish_brew_complete_arg 'reinstall' -l verbose -d 'Print the verification and postinstall steps' __fish_brew_complete_arg 'reinstall' -l verbose -d 'Print the verification and post-install steps'
__fish_brew_complete_arg 'reinstall' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)' __fish_brew_complete_arg 'reinstall' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)'
__fish_brew_complete_arg 'reinstall' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)' __fish_brew_complete_arg 'reinstall' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)'
__fish_brew_complete_arg 'reinstall' -l zap -d 'For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*' __fish_brew_complete_arg 'reinstall' -l zap -d 'For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*'
@ -1687,7 +1687,7 @@ __fish_brew_complete_arg 'upgrade' -l require-sha -d 'Require all casks to have
__fish_brew_complete_arg 'upgrade' -l screen-saverdir -d 'Target location for Screen Savers (default: `~/Library/Screen Savers`)' __fish_brew_complete_arg 'upgrade' -l screen-saverdir -d 'Target location for Screen Savers (default: `~/Library/Screen Savers`)'
__fish_brew_complete_arg 'upgrade' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)' __fish_brew_complete_arg 'upgrade' -l servicedir -d 'Target location for Services (default: `~/Library/Services`)'
__fish_brew_complete_arg 'upgrade' -l skip-cask-deps -d 'Skip installing cask dependencies' __fish_brew_complete_arg 'upgrade' -l skip-cask-deps -d 'Skip installing cask dependencies'
__fish_brew_complete_arg 'upgrade' -l verbose -d 'Print the verification and postinstall steps' __fish_brew_complete_arg 'upgrade' -l verbose -d 'Print the verification and post-install steps'
__fish_brew_complete_arg 'upgrade' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)' __fish_brew_complete_arg 'upgrade' -l vst-plugindir -d 'Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)'
__fish_brew_complete_arg 'upgrade' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)' __fish_brew_complete_arg 'upgrade' -l vst3-plugindir -d 'Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)'
__fish_brew_complete_arg 'upgrade; and not __fish_seen_argument -l cask -l casks' -a '(__fish_brew_suggest_formulae_outdated)' __fish_brew_complete_arg 'upgrade; and not __fish_seen_argument -l cask -l casks' -a '(__fish_brew_suggest_formulae_outdated)'

View File

@ -137,7 +137,7 @@ __brew_internal_commands() {
'--cellar:Display Homebrew'\''s Cellar path' '--cellar:Display Homebrew'\''s Cellar path'
'--env:Summarise Homebrew'\''s build environment as a plain list' '--env:Summarise Homebrew'\''s build environment as a plain list'
'--prefix:Display Homebrew'\''s install path' '--prefix:Display Homebrew'\''s install path'
'--repository:Display where Homebrew'\''s git repository is located' '--repository:Display where Homebrew'\''s Git repository is located'
'--version:Print the version numbers of Homebrew, Homebrew/homebrew-core and Homebrew/homebrew-cask (if tapped) to standard output' '--version:Print the version numbers of Homebrew, Homebrew/homebrew-core and Homebrew/homebrew-cask (if tapped) to standard output'
'analytics:Control Homebrew'\''s anonymous aggregate user behaviour analytics' 'analytics:Control Homebrew'\''s anonymous aggregate user behaviour analytics'
'audit:Check formula for Homebrew coding style violations' 'audit:Check formula for Homebrew coding style violations'
@ -155,22 +155,22 @@ __brew_internal_commands() {
'commands:Show lists of built-in and external commands' 'commands:Show lists of built-in and external commands'
'completions:Control whether Homebrew automatically links external tap shell completion files' 'completions:Control whether Homebrew automatically links external tap shell completion files'
'config:Show Homebrew and system configuration info useful for debugging' 'config:Show Homebrew and system configuration info useful for debugging'
'contributions:Contributions to Homebrew repositories' 'contributions:Summarise contributions to Homebrew repositories'
'create:Generate a formula or, with `--cask`, a cask for the downloadable file at URL and open it in the editor' 'create:Generate a formula or, with `--cask`, a cask for the downloadable file at URL and open it in the editor'
'deps:Show dependencies for formula' 'deps:Show dependencies for formula'
'desc:Display formula'\''s name and one-line description' 'desc:Display formula'\''s name and one-line description'
'determine-test-runners:Determines the runners used to test formulae or their dependents' 'determine-test-runners:Determines the runners used to test formulae or their dependents'
'developer:Control Homebrew'\''s developer mode' 'developer:Control Homebrew'\''s developer mode'
'dispatch-build-bottle:Build bottles for these formulae with GitHub Actions' 'dispatch-build-bottle:Build bottles for these formulae with GitHub Actions'
'docs:Open Homebrew'\''s online documentation (https://docs.brew.sh) in a browser' 'docs:Open Homebrew'\''s online documentation at https://docs.brew.sh in a browser'
'doctor:Check your system for potential problems' 'doctor:Check your system for potential problems'
'edit:Open a formula, cask or tap in the editor set by `EDITOR` or `HOMEBREW_EDITOR`, or open the Homebrew repository for editing if no argument is provided' 'edit:Open a formula, cask or tap in the editor set by `EDITOR` or `HOMEBREW_EDITOR`, or open the Homebrew repository for editing if no argument is provided'
'extract:Look through repository history to find the most recent version of formula and create a copy in tap' 'extract:Look through repository history to find the most recent version of formula and create a copy in tap'
'fetch:Download a bottle (if available) or source packages for formulae and binaries for casks' 'fetch:Download a bottle (if available) or source packages for formulae and binaries for casks'
'formula:Display the path where formula is located' 'formula:Display the path where formula is located'
'formulae:List all locally installable formulae including short names' 'formulae:List all locally installable formulae including short names'
'generate-cask-api:Generates Cask API data files for formulae.brew.sh' 'generate-cask-api:Generate `homebrew/cask` API data files for https://formulae.brew.sh'
'generate-formula-api:Generates Formula API data files for formulae.brew.sh' 'generate-formula-api:Generate `homebrew/core` API data files for https://formulae.brew.sh'
'generate-man-completions:Generate Homebrew'\''s manpages and shell completions' 'generate-man-completions:Generate Homebrew'\''s manpages and shell completions'
'gist-logs:Upload logs for a failed build of formula to a new Gist' 'gist-logs:Upload logs for a failed build of formula to a new Gist'
'home:Open a formula or cask'\''s homepage in a browser, or open Homebrew'\''s own homepage if no argument is provided' 'home:Open a formula or cask'\''s homepage in a browser, or open Homebrew'\''s own homepage if no argument is provided'
@ -186,7 +186,7 @@ __brew_internal_commands() {
'log:Show the `git log` for formula or cask, or show the log for the Homebrew repository if no formula or cask is provided' 'log:Show the `git log` for formula or cask, or show the log for the Homebrew repository if no formula or cask is provided'
'migrate:Migrate renamed packages to new names, where formula are old names of packages' 'migrate:Migrate renamed packages to new names, where formula are old names of packages'
'missing:Check the given formula kegs for missing dependencies' 'missing:Check the given formula kegs for missing dependencies'
'nodenv-sync:Create symlinks for Homebrew'\''s installed NodeJS versions in ~/.nodenv/versions' 'nodenv-sync:Create symlinks for Homebrew'\''s installed NodeJS versions in `~/.nodenv/versions`'
'options:Show install options specific to formula' 'options:Show install options specific to formula'
'outdated:List installed casks and formulae that have an updated version available' 'outdated:List installed casks and formulae that have an updated version available'
'pin:Pin the specified formula, preventing them from being upgraded when issuing the `brew upgrade` formula command' 'pin:Pin the specified formula, preventing them from being upgraded when issuing the `brew upgrade` formula command'
@ -197,8 +197,8 @@ __brew_internal_commands() {
'pr-pull:Download and publish bottles, and apply the bottle commit from a pull request with artifacts generated by GitHub Actions' 'pr-pull:Download and publish bottles, and apply the bottle commit from a pull request with artifacts generated by GitHub Actions'
'pr-upload:Apply the bottle commit and publish bottles to a host' 'pr-upload:Apply the bottle commit and publish bottles to a host'
'prof:Run Homebrew with a Ruby profiler' 'prof:Run Homebrew with a Ruby profiler'
'pyenv-sync:Create symlinks for Homebrew'\''s installed Python versions in ~/.pyenv/versions' 'pyenv-sync:Create symlinks for Homebrew'\''s installed Python versions in `~/.pyenv/versions`'
'rbenv-sync:Create symlinks for Homebrew'\''s installed Ruby versions in ~/.rbenv/versions' 'rbenv-sync:Create symlinks for Homebrew'\''s installed Ruby versions in `~/.rbenv/versions`'
'readall:Import all items from the specified tap, or from all installed taps if none is provided' 'readall:Import all items from the specified tap, or from all installed taps if none is provided'
'reinstall:Uninstall and then reinstall a formula or cask using the same options it was originally installed with, plus any appended options specific to a formula' 'reinstall:Uninstall and then reinstall a formula or cask using the same options it was originally installed with, plus any appended options specific to a formula'
'release:Create a new draft Homebrew/brew release with the appropriate version number and release notes' 'release:Create a new draft Homebrew/brew release with the appropriate version number and release notes'
@ -1045,7 +1045,7 @@ _brew_instal() {
'(--cask --build-from-source --build-bottle)--force-bottle[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]' \ '(--cask --build-from-source --build-bottle)--force-bottle[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]' \
'(--cask)--git[Create a Git repository, useful for creating patches to the software]' \ '(--cask)--git[Create a Git repository, useful for creating patches to the software]' \
'--help[Show this message]' \ '--help[Show this message]' \
'(--cask --only-dependencies)--ignore-dependencies[An unsupported Homebrew development flag to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you'\''re not developing Homebrew, consider adjusting your PATH rather than using this flag]' \ '(--cask --only-dependencies)--ignore-dependencies[An unsupported Homebrew development option to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you'\''re not developing Homebrew, consider adjusting your PATH rather than using this option]' \
'(--cask)--include-test[Install testing dependencies required to run `brew test` formula]' \ '(--cask)--include-test[Install testing dependencies required to run `brew test` formula]' \
'(--formula)--input-methoddir[Target location for Input Methods (default: `~/Library/Input Methods`)]' \ '(--formula)--input-methoddir[Target location for Input Methods (default: `~/Library/Input Methods`)]' \
'(--cask)--interactive[Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package]' \ '(--cask)--interactive[Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package]' \
@ -1067,7 +1067,7 @@ _brew_instal() {
'(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \ '(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \
'(--formula)--skip-cask-deps[Skip installing cask dependencies]' \ '(--formula)--skip-cask-deps[Skip installing cask dependencies]' \
'(--cask)--skip-post-install[Install but skip any post-install steps]' \ '(--cask)--skip-post-install[Install but skip any post-install steps]' \
'--verbose[Print the verification and postinstall steps]' \ '--verbose[Print the verification and post-install steps]' \
'(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \ '(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \
'(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \ '(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \
'(--formula)--zap[For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*]' \ '(--formula)--zap[For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*]' \
@ -1103,7 +1103,7 @@ _brew_install() {
'(--cask --build-from-source --build-bottle)--force-bottle[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]' \ '(--cask --build-from-source --build-bottle)--force-bottle[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]' \
'(--cask)--git[Create a Git repository, useful for creating patches to the software]' \ '(--cask)--git[Create a Git repository, useful for creating patches to the software]' \
'--help[Show this message]' \ '--help[Show this message]' \
'(--cask --only-dependencies)--ignore-dependencies[An unsupported Homebrew development flag to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you'\''re not developing Homebrew, consider adjusting your PATH rather than using this flag]' \ '(--cask --only-dependencies)--ignore-dependencies[An unsupported Homebrew development option to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you'\''re not developing Homebrew, consider adjusting your PATH rather than using this option]' \
'(--cask)--include-test[Install testing dependencies required to run `brew test` formula]' \ '(--cask)--include-test[Install testing dependencies required to run `brew test` formula]' \
'(--formula)--input-methoddir[Target location for Input Methods (default: `~/Library/Input Methods`)]' \ '(--formula)--input-methoddir[Target location for Input Methods (default: `~/Library/Input Methods`)]' \
'(--cask)--interactive[Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package]' \ '(--cask)--interactive[Download and patch formula, then open a shell. This allows the user to run `./configure --help` and otherwise determine how to turn the software package into a Homebrew package]' \
@ -1125,7 +1125,7 @@ _brew_install() {
'(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \ '(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \
'(--formula)--skip-cask-deps[Skip installing cask dependencies]' \ '(--formula)--skip-cask-deps[Skip installing cask dependencies]' \
'(--cask)--skip-post-install[Install but skip any post-install steps]' \ '(--cask)--skip-post-install[Install but skip any post-install steps]' \
'--verbose[Print the verification and postinstall steps]' \ '--verbose[Print the verification and post-install steps]' \
'(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \ '(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \
'(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \ '(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \
'(--formula)--zap[For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*]' \ '(--formula)--zap[For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*]' \
@ -1559,7 +1559,7 @@ _brew_readall() {
'--no-simulate[Don'\''t simulate other system configurations when checking formulae and casks]' \ '--no-simulate[Don'\''t simulate other system configurations when checking formulae and casks]' \
'--os[Read using the given operating system. (Pass `all` to simulate all operating systems.)]' \ '--os[Read using the given operating system. (Pass `all` to simulate all operating systems.)]' \
'--quiet[Make some output more quiet]' \ '--quiet[Make some output more quiet]' \
'--syntax[Syntax-check all of Homebrew'\''s Ruby files (if no `tap` is passed)]' \ '--syntax[Syntax-check all of Homebrew'\''s Ruby files (if no tap is passed)]' \
'--verbose[Make some output more verbose]' \ '--verbose[Make some output more verbose]' \
- tap \ - tap \
'*::tap:__brew_any_tap' '*::tap:__brew_any_tap'
@ -1600,7 +1600,7 @@ _brew_reinstall() {
'(--formula)--screen-saverdir[Target location for Screen Savers (default: `~/Library/Screen Savers`)]' \ '(--formula)--screen-saverdir[Target location for Screen Savers (default: `~/Library/Screen Savers`)]' \
'(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \ '(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \
'(--formula)--skip-cask-deps[Skip installing cask dependencies]' \ '(--formula)--skip-cask-deps[Skip installing cask dependencies]' \
'--verbose[Print the verification and postinstall steps]' \ '--verbose[Print the verification and post-install steps]' \
'(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \ '(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \
'(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \ '(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \
'(--formula)--zap[For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*]' \ '(--formula)--zap[For use with `brew reinstall --cask`. Remove all files associated with a cask. *May remove files which are shared between applications.*]' \
@ -2074,7 +2074,7 @@ _brew_upgrade() {
'(--formula)--screen-saverdir[Target location for Screen Savers (default: `~/Library/Screen Savers`)]' \ '(--formula)--screen-saverdir[Target location for Screen Savers (default: `~/Library/Screen Savers`)]' \
'(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \ '(--formula)--servicedir[Target location for Services (default: `~/Library/Services`)]' \
'(--formula)--skip-cask-deps[Skip installing cask dependencies]' \ '(--formula)--skip-cask-deps[Skip installing cask dependencies]' \
'--verbose[Print the verification and postinstall steps]' \ '--verbose[Print the verification and post-install steps]' \
'(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \ '(--formula)--vst-plugindir[Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`)]' \
'(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \ '(--formula)--vst3-plugindir[Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`)]' \
- outdated_formula \ - outdated_formula \

View File

@ -40,7 +40,7 @@ When an app exists in more than one language or has different regional editions,
### Trial and Freemium versions ### Trial and Freemium versions
Before submitting a trial, make sure it can be made into a full working version without needing to be redownloaded. If an app provides a trial but the only way to buy the full version is via the Mac App Store, it does not belong in any of the official repos. Freemium versions are fine. Before submitting a trial, make sure it can be made into a full working version without needing to be redownloaded. If an app provides a trial but the only way to buy the full version is via the Mac App Store, it does not belong in any of the official repositories. Freemium versions are fine.
### Forks and apps with conflicting names ### Forks and apps with conflicting names
@ -95,14 +95,14 @@ However, there is a difference between discoverability (finding new apps you did
## Rejected Casks ## Rejected Casks
Before submitting a cask to any of our repos, you must read our [documentation on acceptable casks](#finding-a-home-for-your-cask) and perform a (at least quick) search to see if there were any previous attempts to introduce it. Before submitting a cask to any of our repositories, you must read our [documentation on acceptable casks](#finding-a-home-for-your-cask) and perform a (at least quick) search to see if there were any previous attempts to introduce it.
Common reasons to reject a cask entirely: Common reasons to reject a cask entirely:
* We have strong reasons to believe including the cask can put the whole project at risk. Happened only once so far, [with Popcorn Time](https://github.com/Homebrew/homebrew-cask/pull/3954). * We have strong reasons to believe including the cask can put the whole project at risk. Happened only once so far, [with Popcorn Time](https://github.com/Homebrew/homebrew-cask/pull/3954).
* Cask is unreasonably difficult to maintain. Examples have included [Audacity](https://github.com/Homebrew/homebrew-cask/pull/27517) and [older Java development casks](https://github.com/Homebrew/homebrew-cask/issues/57387). * Cask is unreasonably difficult to maintain. Examples have included [Audacity](https://github.com/Homebrew/homebrew-cask/pull/27517) and [older Java development casks](https://github.com/Homebrew/homebrew-cask/issues/57387).
* App is a trial version, and the only way to acquire the full version is through the Mac App Store. * App is a trial version, and the only way to acquire the full version is through the Mac App Store.
* Similarly (and trickier to spot), the app has moved to the Mac App Store but still provides old versions via direct download. We reject these in all official repos so users dont get stuck using an old version, wrongly thinking theyre using the most up-to-date one (which, amongst other things, might be a security risk). * Similarly (and trickier to spot), the app has moved to the Mac App Store but still provides old versions via direct download. We reject these in all official repositories so users dont get stuck using an old version, wrongly thinking theyre using the most up-to-date one (which, amongst other things, might be a security risk).
* App is both open-source and CLI-only (i.e. it only uses the `binary` artifact). In that case, and [in the spirit of deduplication](https://github.com/Homebrew/homebrew-cask/issues/15603), submit it first to [homebrew/core](https://github.com/Homebrew/homebrew-core) as a formula that builds from source. If it is rejected, you may then try again as a cask (link to the issue from your pull request so we can see the discussion and reasoning for rejection). * App is both open-source and CLI-only (i.e. it only uses the `binary` artifact). In that case, and [in the spirit of deduplication](https://github.com/Homebrew/homebrew-cask/issues/15603), submit it first to [homebrew/core](https://github.com/Homebrew/homebrew-core) as a formula that builds from source. If it is rejected, you may then try again as a cask (link to the issue from your pull request so we can see the discussion and reasoning for rejection).
* App is open-source and has a GUI but no compiled versions (or only old ones) are provided. Its better to have them in [homebrew/core](https://github.com/Homebrew/homebrew-core) so users dont get perpetually outdated versions. See [`gedit`](https://github.com/Homebrew/homebrew-cask/pull/23360) for example. * App is open-source and has a GUI but no compiled versions (or only old ones) are provided. Its better to have them in [homebrew/core](https://github.com/Homebrew/homebrew-core) so users dont get perpetually outdated versions. See [`gedit`](https://github.com/Homebrew/homebrew-cask/pull/23360) for example.
* Cask has been rejected before due to an issue we cannot fix, and the new submission doesnt fix that. An example would be the [first submission of `soapui`](https://github.com/Homebrew/homebrew-cask/pull/4939), whose installation problems were not fixed in the two [subsequent](https://github.com/Homebrew/homebrew-cask/pull/9969) [submissions](https://github.com/Homebrew/homebrew-cask/pull/10606). * Cask has been rejected before due to an issue we cannot fix, and the new submission doesnt fix that. An example would be the [first submission of `soapui`](https://github.com/Homebrew/homebrew-cask/pull/4939), whose installation problems were not fixed in the two [subsequent](https://github.com/Homebrew/homebrew-cask/pull/9969) [submissions](https://github.com/Homebrew/homebrew-cask/pull/10606).

View File

@ -250,19 +250,18 @@ See the [Acceptable Casks documentation](Acceptable-Casks.md#finding-a-home-for-
Hop into your tap and check to make sure your new cask is there: Hop into your tap and check to make sure your new cask is there:
```bash ```console
$ cd "$(brew --repository)"/Library/Taps/homebrew/homebrew-cask $ cd "$(brew --repository)"/Library/Taps/homebrew/homebrew-cask
$ git status $ git status
# On branch master On branch master
# Untracked files: Untracked files:
# (use "git add <file>..." to include in what will be committed) (use "git add <file>..." to include in what will be committed)
# Casks/m/my-new-cask.rb
# Casks/my-new-cask.rb
``` ```
So far, so good. Now make a feature branch `my-new-cask-branch` that youll use in your pull request: So far, so good. Now make a feature branch `my-new-cask-branch` that youll use in your pull request:
```bash ```console
$ git checkout -b my-new-cask-branch $ git checkout -b my-new-cask-branch
Switched to a new branch 'my-new-cask-branch' Switched to a new branch 'my-new-cask-branch'
``` ```

View File

@ -19,7 +19,7 @@ end
* Table of Contents * Table of Contents
{:toc} {:toc}
## The Cask Language Is Declarative ## The cask language is declarative
Each cask contains a series of stanzas (or “fields”) which *declare* how the software is to be obtained and installed. In a declarative language, the author does not need to worry about **order**. As long as all the needed fields are present, Homebrew Cask will figure out what needs to be done at install time. Each cask contains a series of stanzas (or “fields”) which *declare* how the software is to be obtained and installed. In a declarative language, the author does not need to worry about **order**. As long as all the needed fields are present, Homebrew Cask will figure out what needs to be done at install time.
@ -27,7 +27,7 @@ To make maintenance easier, the most-frequently-updated stanzas are usually plac
Exception: `do` blocks such as `postflight` may enclose a block of pure Ruby code. Lines within that block follow a procedural (order-dependent) paradigm. Exception: `do` blocks such as `postflight` may enclose a block of pure Ruby code. Lines within that block follow a procedural (order-dependent) paradigm.
## Header Line Details ## Header line details
The first non-comment line in a cask follows the form: The first non-comment line in a cask follows the form:
@ -101,7 +101,7 @@ Note that every stanza that has additional parameters (`:symbols` after a `,`) s
## Stanzas ## Stanzas
### Required Stanzas ### Required stanzas
Each of the following stanzas is required for every cask. Each of the following stanzas is required for every cask.
@ -114,7 +114,7 @@ Each of the following stanzas is required for every cask.
| [`desc`](#stanza-desc) | no | One-line description of the cask. Shown when running `brew info`. | [`desc`](#stanza-desc) | no | One-line description of the cask. Shown when running `brew info`.
| `homepage` | no | Application homepage; used for the `brew home` command. | `homepage` | no | Application homepage; used for the `brew home` command.
### At Least One Artifact Stanza Is Also Required ### At least one artifact stanza is also required
Each cask must declare one or more *artifacts* (i.e. something to install). Each cask must declare one or more *artifacts* (i.e. something to install).
@ -143,7 +143,7 @@ Each cask must declare one or more *artifacts* (i.e. something to install).
| `artifact` | yes | Relative path to an arbitrary path that should be moved on installation. Must provide an absolute path as a `target`. (Example: [free-gpgmail.rb](https://github.com/Homebrew/homebrew-cask/blob/b3c438d608d9702380edf10d5495e0727cf17108/Casks/f/free-gpgmail.rb#L44)) This is only for unusual cases; the `app` stanza is strongly preferred when moving `.app` bundles. | `artifact` | yes | Relative path to an arbitrary path that should be moved on installation. Must provide an absolute path as a `target`. (Example: [free-gpgmail.rb](https://github.com/Homebrew/homebrew-cask/blob/b3c438d608d9702380edf10d5495e0727cf17108/Casks/f/free-gpgmail.rb#L44)) This is only for unusual cases; the `app` stanza is strongly preferred when moving `.app` bundles.
| `stage_only` | no | `true`. Asserts that the cask contains no activatable artifacts. | `stage_only` | no | `true`. Asserts that the cask contains no activatable artifacts.
### Optional Stanzas ### Optional stanzas
| name | multiple occurrences allowed? | value | | name | multiple occurrences allowed? | value |
| ------------------------------------------ | :---------------------------: | ----- | | ------------------------------------------ | :---------------------------: | ----- |
@ -178,7 +178,7 @@ by default moves the source to:
/Applications/Alfred 2.app /Applications/Alfred 2.app
``` ```
#### Renaming the Target #### Renaming the target
You can rename the target which appears in your `/Applications` directory by adding a `target:` key to `app`. Example (from [scala-ide.rb](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/s/scala-ide.rb#L24)): You can rename the target which appears in your `/Applications` directory by adding a `target:` key to `app`. Example (from [scala-ide.rb](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/s/scala-ide.rb#L24)):
@ -186,7 +186,7 @@ You can rename the target which appears in your `/Applications` directory by add
app "eclipse.app", target: "Scala IDE.app" app "eclipse.app", target: "Scala IDE.app"
``` ```
#### *target* May Contain an Absolute Path #### *target* may contain an absolute path
If `target:` has a leading slash, it is interpreted as an absolute path. The containing directory for the absolute path will be created if it does not already exist. Example (from [sapmachine-jdk.rb](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/s/sapmachine-jdk.rb#L21)): If `target:` has a leading slash, it is interpreted as an absolute path. The containing directory for the absolute path will be created if it does not already exist. Example (from [sapmachine-jdk.rb](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/s/sapmachine-jdk.rb#L21)):
@ -194,11 +194,11 @@ If `target:` has a leading slash, it is interpreted as an absolute path. The con
artifact "sapmachine-jdk-#{version}.jdk", target: "/Library/Java/JavaVirtualMachines/sapmachine-jdk-#{version}.jdk" artifact "sapmachine-jdk-#{version}.jdk", target: "/Library/Java/JavaVirtualMachines/sapmachine-jdk-#{version}.jdk"
``` ```
#### *target* Works on Most Artifact Types #### *target* works on most artifact types
The `target:` key works similarly for most cask artifacts, such as `app`, `binary`, `colorpicker`, `dictionary`, `font`, `input_method`, `internet_plugin`, `keyboard_layout`, `prefpane`, `qlplugin`, `mdimporter`, `screen_saver`, `service`, `suite`, `audio_unit_plugin`, `vst_plugin`, `vst3_plugin`, and `artifact`. The `target:` key works similarly for most cask artifacts, such as `app`, `binary`, `colorpicker`, `dictionary`, `font`, `input_method`, `internet_plugin`, `keyboard_layout`, `prefpane`, `qlplugin`, `mdimporter`, `screen_saver`, `service`, `suite`, `audio_unit_plugin`, `vst_plugin`, `vst3_plugin`, and `artifact`.
#### *target* Should Only Be Used in Select Cases #### *target* should only be used in select cases
Dont use `target:` for aesthetic reasons, like removing version numbers (`app "Slack #{version}.app", target: "Slack.app"`). Use it when it makes sense functionally and document your reason clearly in the cask, using one of the templates: [for clarity](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/i/imagemin.rb#L10); [for consistency](https://github.com/Homebrew/homebrew-cask/blob/8be96e3658ff7ab66ca40723c3018fc5e35e3735/Casks/x-moto.rb#L16); [to prevent conflicts](https://github.com/Homebrew/homebrew-cask/blob/4472df441468e2aa657005550e2b951c2ef817f4/Casks/t/telegram-desktop.rb#L20); [due to developer suggestion](https://github.com/Homebrew/homebrew-cask/blob/ff3e9c4a6623af44b8a071027e8dcf3f4edfc6d9/Casks/kivy.rb#L12). Dont use `target:` for aesthetic reasons, like removing version numbers (`app "Slack #{version}.app", target: "Slack.app"`). Use it when it makes sense functionally and document your reason clearly in the cask, using one of the templates: [for clarity](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/i/imagemin.rb#L10); [for consistency](https://github.com/Homebrew/homebrew-cask/blob/8be96e3658ff7ab66ca40723c3018fc5e35e3735/Casks/x-moto.rb#L16); [to prevent conflicts](https://github.com/Homebrew/homebrew-cask/blob/4472df441468e2aa657005550e2b951c2ef817f4/Casks/t/telegram-desktop.rb#L20); [due to developer suggestion](https://github.com/Homebrew/homebrew-cask/blob/ff3e9c4a6623af44b8a071027e8dcf3f4edfc6d9/Casks/kivy.rb#L12).
@ -243,7 +243,7 @@ Sometimes there are particularities with the installation of a piece of software
To avoid flooding users with too many messages (thus desensitising them to the important ones), `caveats` should be used sparingly and exclusively for installation-related matters. If youre not sure a `caveat` you find pertinent is installation-related or not, ask a maintainer. As a general rule, if your case isnt already covered in our comprehensive [`caveats Mini-DSL`](#caveats-mini-dsl), its unlikely to be accepted. To avoid flooding users with too many messages (thus desensitising them to the important ones), `caveats` should be used sparingly and exclusively for installation-related matters. If youre not sure a `caveat` you find pertinent is installation-related or not, ask a maintainer. As a general rule, if your case isnt already covered in our comprehensive [`caveats Mini-DSL`](#caveats-mini-dsl), its unlikely to be accepted.
#### `caveats` as a String #### `caveats` as a string
When `caveats` is a string, it is evaluated at compile time. The following methods are available for interpolation if `caveats` is placed in its customary position at the end of the cask: When `caveats` is a string, it is evaluated at compile time. The following methods are available for interpolation if `caveats` is placed in its customary position at the end of the cask:
@ -261,11 +261,11 @@ Example:
caveats "Using #{token} may be hazardous to your health." caveats "Using #{token} may be hazardous to your health."
``` ```
#### `caveats` as a Block #### `caveats` as a block
When `caveats` is a Ruby block, evaluation is deferred until install time. Within a block you may refer to the `@cask` instance variable, and invoke [any method available on `@cask`](https://rubydoc.brew.sh/Cask/Cask). When `caveats` is a Ruby block, evaluation is deferred until install time. Within a block you may refer to the `@cask` instance variable, and invoke [any method available on `@cask`](https://rubydoc.brew.sh/Cask/Cask).
#### `caveats` Mini-DSL #### `caveats` mini-DSL
There is a mini-DSL available within `caveats` blocks. There is a mini-DSL available within `caveats` blocks.
@ -346,7 +346,7 @@ depends_on formula: "unar"
#### `depends_on` *macos* #### `depends_on` *macos*
##### Requiring an Exact macOS Release ##### Requiring an exact macOS release
The value for `depends_on macos:` may be a symbol or an array of symbols, listing the exact compatible macOS releases. The available values for macOS releases are defined in the [MacOSVersion class](https://rubydoc.brew.sh/MacOSVersion.html). The value for `depends_on macos:` may be a symbol or an array of symbols, listing the exact compatible macOS releases. The available values for macOS releases are defined in the [MacOSVersion class](https://rubydoc.brew.sh/MacOSVersion.html).
@ -360,7 +360,7 @@ depends_on macos: [
] ]
``` ```
##### Setting a Minimum macOS Release ##### Setting a minimum macOS release
`depends_on macos:` can also accept a string starting with a comparison operator such as `>=`, followed by an macOS release in the form above. The following is a valid expression meaning “at least macOS Big Sur (11.0)”: `depends_on macos:` can also accept a string starting with a comparison operator such as `>=`, followed by an macOS release in the form above. The following is a valid expression meaning “at least macOS Big Sur (11.0)”:
@ -391,7 +391,7 @@ depends_on arch: [:x86_64] # same meaning as above
depends_on arch: :arm64 depends_on arch: :arm64
``` ```
#### `depends_on` Parameters #### `depends_on` parameters
| key | description | | key | description |
| ---------- | ----------- | | ---------- | ----------- |
@ -469,11 +469,11 @@ depends_on arch: :arm64
The stanzas `preflight`, `postflight`, `uninstall_preflight`, and `uninstall_postflight` define operations to be run before or after installation or uninstallation. The stanzas `preflight`, `postflight`, `uninstall_preflight`, and `uninstall_postflight` define operations to be run before or after installation or uninstallation.
#### Evaluation of Blocks is Always Deferred #### Evaluation of blocks is always deferred
The Ruby blocks defined by these stanzas are not evaluated until install time or uninstall time. Within a block you may refer to the `@cask` instance variable, and invoke [any method available on `@cask`](https://rubydoc.brew.sh/Cask/Cask). The Ruby blocks defined by these stanzas are not evaluated until install time or uninstall time. Within a block you may refer to the `@cask` instance variable, and invoke [any method available on `@cask`](https://rubydoc.brew.sh/Cask/Cask).
#### `*flight` Mini-DSL #### `*flight` mini-DSL
There is a mini-DSL available within these blocks. There is a mini-DSL available within these blocks.
@ -676,7 +676,7 @@ The `sha256` value is usually calculated by the `shasum` command:
shasum --algorithm 256 <file> shasum --algorithm 256 <file>
``` ```
#### Special Value `:no_check` #### Special value `:no_check`
The special value `sha256 :no_check` is used to turn off SHA checking whenever checksumming is impractical due to the upstream configuration. The special value `sha256 :no_check` is used to turn off SHA checking whenever checksumming is impractical due to the upstream configuration.
@ -700,11 +700,11 @@ The value of `suite` is never an `.app` bundle, but a plain directory.
> If you cannot design a working `uninstall` stanza, please submit your cask anyway. The maintainers can help you write an `uninstall` stanza, just ask! > If you cannot design a working `uninstall` stanza, please submit your cask anyway. The maintainers can help you write an `uninstall` stanza, just ask!
#### `uninstall pkgutil:` Is The Easiest and Most Useful #### `uninstall pkgutil:` is the easiest and most useful
The easiest and most useful `uninstall` directive is [`pkgutil:`](#uninstall-pkgutil). It should cover most use cases. The easiest and most useful `uninstall` directive is [`pkgutil:`](#uninstall-pkgutil). It should cover most use cases.
#### `uninstall` Is Required for Casks That Install using `pkg` or `installer manual:` #### `uninstall` is required for casks that install using `pkg` or `installer manual:`
For most casks, uninstall actions are determined automatically, and an explicit `uninstall` stanza is not needed. However, a cask which uses the `pkg` or `installer manual:` stanzas will **not** know how to uninstall correctly unless an `uninstall` stanza is given. For most casks, uninstall actions are determined automatically, and an explicit `uninstall` stanza is not needed. However, a cask which uses the `pkg` or `installer manual:` stanzas will **not** know how to uninstall correctly unless an `uninstall` stanza is given.
@ -712,11 +712,11 @@ So, while the [cask DSL](#required-stanzas) does not enforce the requirement, it
The `uninstall` stanza is available for non-`pkg` casks, and is useful for a few corner cases. However, the documentation below concerns the typical case of using `uninstall` to define procedures for a `pkg`. The `uninstall` stanza is available for non-`pkg` casks, and is useful for a few corner cases. However, the documentation below concerns the typical case of using `uninstall` to define procedures for a `pkg`.
#### There Are Multiple Uninstall Techniques #### There are multiple uninstall techniques
Since `pkg` installers can do arbitrary things, different techniques are needed to uninstall in each case. You may need to specify one, or several, of the following key/value pairs as arguments to `uninstall`. Since `pkg` installers can do arbitrary things, different techniques are needed to uninstall in each case. You may need to specify one, or several, of the following key/value pairs as arguments to `uninstall`.
#### Summary of Keys #### Summary of keys
* **`early_script:`** (string or hash) - like [`script:`](#uninstall-script), but runs early (for special cases, best avoided) * **`early_script:`** (string or hash) - like [`script:`](#uninstall-script), but runs early (for special cases, best avoided)
* [`launchctl:`](#uninstall-launchctl) (string or array) - IDs of `launchd` jobs to remove * [`launchctl:`](#uninstall-launchctl) (string or array) - IDs of `launchd` jobs to remove
@ -757,7 +757,7 @@ IDs for the most recently installed packages can be listed using [`list_recent_p
"$(brew --repository homebrew/cask)/developer/bin/list_pkg_ids_by_regexp" <regular-expression> "$(brew --repository homebrew/cask)/developer/bin/list_pkg_ids_by_regexp" <regular-expression>
``` ```
#### List Files Associated With a Package ID #### List files associated with a package ID
Once you know the ID for an installed package (see above), you can list all files on your system associated with that package ID using the macOS `pkgutil` command: Once you know the ID for an installed package (see above), you can list all files on your system associated with that package ID using the macOS `pkgutil` command:
@ -879,7 +879,7 @@ To remove user-specific files, use the [`zap` stanza](#stanza-zap).
`trash:` arguments follow the same rules listed above for `delete:`. `trash:` arguments follow the same rules listed above for `delete:`.
#### Working With a `.pkg` File Manually #### Working with a `.pkg` file manually
Advanced users may wish to work with a `.pkg` file manually, without having the package installed. Advanced users may wish to work with a `.pkg` file manually, without having the package installed.
@ -911,11 +911,11 @@ A fully manual method for finding bundle IDs in a package file follows:
### Stanza: `url` ### Stanza: `url`
#### HTTPS URLs are Preferred #### HTTPS URLs are preferred
If available, an HTTPS URL is preferred. A plain HTTP URL should only be used in the absence of a secure alternative. If available, an HTTPS URL is preferred. A plain HTTP URL should only be used in the absence of a secure alternative.
#### Additional `url` Parameters #### Additional `url` parameters
When a plain URL string is insufficient to fetch a file, additional information may be provided to the `curl`-based downloader, in the form of key/value pairs appended to `url`: When a plain URL string is insufficient to fetch a file, additional information may be provided to the `curl`-based downloader, in the form of key/value pairs appended to `url`:
@ -929,7 +929,7 @@ When a plain URL string is insufficient to fetch a file, additional information
| `user_agent:` | string holding the user agent to set for the download request. Can also be set to the symbol `:fake`, which will use a generic browser-like user agent string. We prefer `:fake` when the server does not require a specific user agent. | `user_agent:` | string holding the user agent to set for the download request. Can also be set to the symbol `:fake`, which will use a generic browser-like user agent string. We prefer `:fake` when the server does not require a specific user agent.
| `data:` | hash of parameters to be set in the POST request (Example: [segger-jlink.rb](https://github.com/Homebrew/homebrew-cask/blob/38ac55614f146d68ae317594f0c119e9acbd7c9e/Casks/s/segger-jlink.rb#L6-L11)) | `data:` | hash of parameters to be set in the POST request (Example: [segger-jlink.rb](https://github.com/Homebrew/homebrew-cask/blob/38ac55614f146d68ae317594f0c119e9acbd7c9e/Casks/s/segger-jlink.rb#L6-L11))
#### When URL and Homepage Domains Differ, Add `verified:` #### When URL and homepage domains differ, add `verified:`
When the domains of `url` and `homepage` differ, the discrepancy should be documented with the `verified:` parameter, repeating the smallest possible portion of the URL that uniquely identifies the app or vendor, excluding the protocol. (Example: [shotcut.rb](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/s/shotcut.rb#L5-L6)) When the domains of `url` and `homepage` differ, the discrepancy should be documented with the `verified:` parameter, repeating the smallest possible portion of the URL that uniquely identifies the app or vendor, excluding the protocol. (Example: [shotcut.rb](https://github.com/Homebrew/homebrew-cask/blob/aa461148bbb5119af26b82cccf5003e2b4e50d95/Casks/s/shotcut.rb#L5-L6))
@ -937,7 +937,7 @@ This must be added so a user auditing the cask knows the URL was verified by the
The parameter doesnt mean you should trust the source blindly, but we only approve casks in which users can easily verify its authenticity with basic means, such as checking the official homepage or public repository. Occasionally, slightly more elaborate techniques may be used, such as inspecting a [`livecheck`](#stanza-livecheck) URL we established as official. Cases where such quick verifications arent possible (e.g. when the download URL is behind a registration wall) are [treated in a stricter manner](https://docs.brew.sh/Acceptable-Casks#unofficial-vendorless-and-walled-builds). The parameter doesnt mean you should trust the source blindly, but we only approve casks in which users can easily verify its authenticity with basic means, such as checking the official homepage or public repository. Occasionally, slightly more elaborate techniques may be used, such as inspecting a [`livecheck`](#stanza-livecheck) URL we established as official. Cases where such quick verifications arent possible (e.g. when the download URL is behind a registration wall) are [treated in a stricter manner](https://docs.brew.sh/Acceptable-Casks#unofficial-vendorless-and-walled-builds).
#### Difficulty Finding a URL #### Difficulty finding a URL
Web browsers may obscure the direct `url` download location for a variety of reasons. Homebrew Cask supplies a [`list_url_attributes_on_file`](https://github.com/Homebrew/homebrew-cask/blob/HEAD/developer/bin/list_url_attributes_on_file) script which can read extended file attributes to extract the actual source URL of most files downloaded by a browser on macOS. The script usually emits multiple candidate URLs; you may have to test each of them: Web browsers may obscure the direct `url` download location for a variety of reasons. Homebrew Cask supplies a [`list_url_attributes_on_file`](https://github.com/Homebrew/homebrew-cask/blob/HEAD/developer/bin/list_url_attributes_on_file) script which can read extended file attributes to extract the actual source URL of most files downloaded by a browser on macOS. The script usually emits multiple candidate URLs; you may have to test each of them:
@ -983,13 +983,13 @@ If these formats are not available, and the application is macOS-exclusive (othe
https://sourceforge.net/projects/<project_name>/files/latest/download https://sourceforge.net/projects/<project_name>/files/latest/download
#### Some Providers Block Command-line Downloads #### Some providers block command-line downloads
Some hosting providers actively block command-line HTTP clients. Such URLs cannot be used in casks. Some hosting providers actively block command-line HTTP clients. Such URLs cannot be used in casks.
Other providers may use URLs that change periodically, or even on each visit (example: FossHub). While some cases [could be circumvented](#using-a-block-to-defer-code-execution), they tend to occur when the vendor is actively trying to prevent automated downloads, so we prefer to not add those casks to the main repository. Other providers may use URLs that change periodically, or even on each visit (example: FossHub). While some cases [could be circumvented](#using-a-block-to-defer-code-execution), they tend to occur when the vendor is actively trying to prevent automated downloads, so we prefer to not add those casks to the main repository.
#### Using a Block to Defer Code Execution #### Using a block to defer code execution
Some casks—notably nightlies—have versioned download URLs but are updated so often that they become impractical to keep current with the usual process. For those, we want to dynamically determine `url`. Some casks—notably nightlies—have versioned download URLs but are updated so often that they become impractical to keep current with the usual process. For those, we want to dynamically determine `url`.
@ -999,7 +999,7 @@ In theory, one can write arbitrary Ruby code right in the cask definition to fet
However, this typically involves an HTTP round trip to a landing site, which may take a long time. Because of the way Homebrew Cask loads and parses casks, it is not acceptable that such expensive operations be performed directly in the body of a cask definition. However, this typically involves an HTTP round trip to a landing site, which may take a long time. Because of the way Homebrew Cask loads and parses casks, it is not acceptable that such expensive operations be performed directly in the body of a cask definition.
##### Writing the Block ##### Writing the block
Similar to the `preflight`, `postflight`, `uninstall_preflight`, and `uninstall_postflight` blocks, the `url` stanza offers an optional *block syntax*: Similar to the `preflight`, `postflight`, `uninstall_preflight`, and `uninstall_postflight` blocks, the `url` stanza offers an optional *block syntax*:
@ -1020,7 +1020,7 @@ You can use the `url` stanza with either a direct argument or a block but not wi
Example of using the block syntax: [vlc-nightly.rb](https://github.com/Homebrew/homebrew-cask-versions/blob/d3b9d0fdcf83f1f87c3ad64a852323a6e687c5f7/Casks/vlc-nightly.rb#L7-L12) Example of using the block syntax: [vlc-nightly.rb](https://github.com/Homebrew/homebrew-cask-versions/blob/d3b9d0fdcf83f1f87c3ad64a852323a6e687c5f7/Casks/vlc-nightly.rb#L7-L12)
##### Mixing Additional URL Parameters With the Block Syntax ##### Mixing additional URL parameters with the block syntax
In rare cases, you might need to set URL parameters like `cookies` or `referer` while also using the block syntax. In rare cases, you might need to set URL parameters like `cookies` or `referer` while also using the block syntax.
@ -1058,7 +1058,7 @@ version "1.2.3build4"
url "https://example.com/#{version.sub(%r{build\d+}, '')}/file-version-#{version}.dmg" url "https://example.com/#{version.sub(%r{build\d+}, '')}/file-version-#{version}.dmg"
``` ```
#### `version` Methods #### `version` methods
The examples above can become hard to read, however. Since many of these changes are common, we provide a number of helpers to clearly interpret otherwise obtuse cases: The examples above can become hard to read, however. Since many of these changes are common, we provide a number of helpers to clearly interpret otherwise obtuse cases:
@ -1081,7 +1081,7 @@ Finally, there is `csv` which returns an array of comma-separated values. `csv`,
#### `version :latest` #### `version :latest`
The special value `:latest` is used when The special value `:latest` is used when:
* `url` does not contain any version information and there is no way to retrieve * `url` does not contain any version information and there is no way to retrieve
the version using a `livecheck`, or the version using a `livecheck`, or
@ -1091,7 +1091,7 @@ The special value `:latest` is used when
### Stanza: `zap` ### Stanza: `zap`
#### `zap` Purpose #### `zap` purpose
The `zap` stanza describes a more complete uninstallation of files associated with a cask. The `zap` procedures will never be performed by default, but only if the user uses `--zap` on `uninstall`: The `zap` stanza describes a more complete uninstallation of files associated with a cask. The `zap` procedures will never be performed by default, but only if the user uses `--zap` on `uninstall`:
@ -1114,13 +1114,13 @@ Appending `--force` to the command will allow you to perform these actions even
brew uninstall --zap --force firefox brew uninstall --zap --force firefox
``` ```
#### `zap` Syntax #### `zap` syntax
The form of the `zap` stanza follows the [`uninstall` stanza](#stanza-uninstall). All the same directives are available. The `trash:` key is preferred over `delete:`. The form of the `zap` stanza follows the [`uninstall` stanza](#stanza-uninstall). All the same directives are available. The `trash:` key is preferred over `delete:`.
Example: [dropbox.rb](https://github.com/Homebrew/homebrew-cask/blob/974a55ade77bb4edc8bbb80ef72eec83ae0e76c0/Casks/d/dropbox.rb#L30-L68) Example: [dropbox.rb](https://github.com/Homebrew/homebrew-cask/blob/974a55ade77bb4edc8bbb80ef72eec83ae0e76c0/Casks/d/dropbox.rb#L30-L68)
#### `zap` Creation #### `zap` creation
The simplest method is to use [@nrlquaker's CreateZap](https://github.com/nrlquaker/homebrew-createzap), which can automatically generate the stanza. In a few instances it may fail to pick up anything and manual creation may be required. The simplest method is to use [@nrlquaker's CreateZap](https://github.com/nrlquaker/homebrew-createzap), which can automatically generate the stanza. In a few instances it may fail to pick up anything and manual creation may be required.
@ -1131,7 +1131,7 @@ Manual creation can be facilitated with:
* An uninstaller tool such as [AppCleaner](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/a/appcleaner.rb). * An uninstaller tool such as [AppCleaner](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/a/appcleaner.rb).
* Inspection of the usual paths, i.e. `/Library/{'Application Support',LaunchAgents,LaunchDaemons,Frameworks,Logs,Preferences,PrivilegedHelperTools}` and `~/Library/{'Application Support',Caches,Containers,LaunchAgents,Logs,Preferences,'Saved Application State'}`. * Inspection of the usual paths, i.e. `/Library/{'Application Support',LaunchAgents,LaunchDaemons,Frameworks,Logs,Preferences,PrivilegedHelperTools}` and `~/Library/{'Application Support',Caches,Containers,LaunchAgents,Logs,Preferences,'Saved Application State'}`.
## Conditional Statements ## Conditional statements
### Handling different system configurations ### Handling different system configurations
@ -1201,11 +1201,11 @@ cask "calibre" do
Such `on_<system>` blocks can be nested and contain other stanzas not listed here. Examples: [calhash.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/c/calhash.rb), [openzfs.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/o/openzfs.rb), [r.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/r/r.rb), [wireshark.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/w/wireshark.rb) Such `on_<system>` blocks can be nested and contain other stanzas not listed here. Examples: [calhash.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/c/calhash.rb), [openzfs.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/o/openzfs.rb), [r.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/r/r.rb), [wireshark.rb](https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/w/wireshark.rb)
### Switch Between Languages or Regions ### Switch between languages or regions
If a cask is available in multiple languages, you can use the [`language` stanza](#stanza-language) to switch between languages or regions based on the system locale. If a cask is available in multiple languages, you can use the [`language` stanza](#stanza-language) to switch between languages or regions based on the system locale.
## Arbitrary Ruby Methods ## Arbitrary Ruby methods
In the exceptional case that the cask DSL is insufficient, it is possible to define arbitrary Ruby variables and methods inside the cask by creating a `Utils` namespace. Example: In the exceptional case that the cask DSL is insufficient, it is possible to define arbitrary Ruby variables and methods inside the cask by creating a `Utils` namespace. Example:
@ -1254,9 +1254,9 @@ Software vendors are often inconsistent with their naming. By enforcing strict n
Details of software names and brands will inevitably be lost in the conversion to a minimal token. To capture the vendors full name for a distribution, use the [`name`](#stanza-name) within a cask. `name` accepts an unrestricted UTF-8 string. Details of software names and brands will inevitably be lost in the conversion to a minimal token. To capture the vendors full name for a distribution, use the [`name`](#stanza-name) within a cask. `name` accepts an unrestricted UTF-8 string.
### Finding the Simplified Name of the Vendors Distribution ### Finding the simplified name of the vendors distribution
#### Simplified Names of Apps #### Simplified names of apps
* Start with the exact name of the application bundle as it appears on disk, such as `Google Chrome.app`. * Start with the exact name of the application bundle as it appears on disk, such as `Google Chrome.app`.
@ -1303,17 +1303,17 @@ Details of software names and brands will inevitably be lost in the conversion t
* As a last resort, translate the name of the app bundle into English. * As a last resort, translate the name of the app bundle into English.
#### Simplified Names of `pkg`-based Installers #### Simplified names of `pkg`-based installers
* The Simplified Name of a `pkg` may be more tricky to determine than that of an App. If a `pkg` installs an App, then use that App name with the rules above. If not, just create the best name you can, based on the vendors web page. * The Simplified Name of a `pkg` may be more tricky to determine than that of an App. If a `pkg` installs an App, then use that App name with the rules above. If not, just create the best name you can, based on the vendors web page.
#### Simplified Names of non-App Software #### Simplified names of non-App software
* Currently, rules for generating a token are not well-defined for Preference Panes, QuickLook plugins, and several other types of software installable by Homebrew Cask. Just create the best name you can, based on the filename on disk or the vendors web page. Watch out for duplicates. * Currently, rules for generating a token are not well-defined for Preference Panes, QuickLook plugins, and several other types of software installable by Homebrew Cask. Just create the best name you can, based on the filename on disk or the vendors web page. Watch out for duplicates.
Non-app tokens should become more standardized in the future. Non-app tokens should become more standardized in the future.
### Converting the Simplified Name To a Token ### Converting the simplified name to a token
The token is the primary identifier for a package in this project. Its the unique string users refer to when operating on the cask. The token is the primary identifier for a package in this project. Its the unique string users refer to when operating on the cask.
@ -1331,15 +1331,15 @@ To convert the Apps Simplified Name (above) to a token:
* Collapse a series of multiple hyphens into one hyphen. * Collapse a series of multiple hyphens into one hyphen.
* Delete a leading or trailing hyphen. * Delete a leading or trailing hyphen.
### Cask Filenames ### Cask filenames
Casks are stored in a Ruby file named after the token, with the file extension `.rb`. Casks are stored in a Ruby file named after the token, with the file extension `.rb`.
### Cask Headers ### Cask headers
The token is also given in the header line for each cask. The token is also given in the header line for each cask.
### Cask Token Examples ### Cask token examples
These illustrate most of the rules for generating a token: These illustrate most of the rules for generating a token:
@ -1351,22 +1351,22 @@ App Name on Disk | Simplified App Name | Cask Token | Filename
`LPK25 Editor.app` | LPK25 Editor | lpk25-editor | `lpk25-editor.rb` `LPK25 Editor.app` | LPK25 Editor | lpk25-editor | `lpk25-editor.rb`
`Sublime Text 2.app` | Sublime Text | sublime-text | `sublime-text.rb` `Sublime Text 2.app` | Sublime Text | sublime-text | `sublime-text.rb`
#### Tap-Specific Cask Token Examples #### Tap-specific cask token examples
Cask taps have naming conventions specific to each tap. Cask taps have naming conventions specific to each tap.
* [Homebrew/cask-versions](https://github.com/Homebrew/homebrew-cask-versions/blob/HEAD/CONTRIBUTING.md#naming-versions-casks) * [Homebrew/cask-versions](https://github.com/Homebrew/homebrew-cask-versions/blob/HEAD/CONTRIBUTING.md#naming-versions-casks)
* [Homebrew/cask-fonts](https://github.com/Homebrew/homebrew-cask-fonts/blob/HEAD/CONTRIBUTING.md#naming-font-casks) * [Homebrew/cask-fonts](https://github.com/Homebrew/homebrew-cask-fonts/blob/HEAD/CONTRIBUTING.md#naming-font-casks)
### Special Affixes ### Special affixes
A few situations require a prefix or suffix to be added to the token. A few situations require a prefix or suffix to be added to the token.
#### Token Overlap #### Token overlap
When the token for a new cask would otherwise conflict with the token of an already existing cask, the nature of that overlap dictates the token, potentially for both casks. See [Forks and Apps with Conflicting Names](Acceptable-Casks.md#forks-and-apps-with-conflicting-names) for information on how to proceed. When the token for a new cask would otherwise conflict with the token of an already existing cask, the nature of that overlap dictates the token, potentially for both casks. See [Forks and Apps with Conflicting Names](Acceptable-Casks.md#forks-and-apps-with-conflicting-names) for information on how to proceed.
#### Potentially Misleading Name #### Potentially misleading name
If the token for a piece of unofficial software that interacts with a popular service would make it look official and the vendor is not authorised to use the name, [a prefix must be added](Acceptable-Casks.md#forks-and-apps-with-conflicting-names) for disambiguation. If the token for a piece of unofficial software that interacts with a popular service would make it look official and the vendor is not authorised to use the name, [a prefix must be added](Acceptable-Casks.md#forks-and-apps-with-conflicting-names) for disambiguation.

View File

@ -2,7 +2,7 @@
In early 2015 Homebrew started the process of deprecating _SHA1_ for package In early 2015 Homebrew started the process of deprecating _SHA1_ for package
integrity verification. Since then formulae under the Homebrew organisation integrity verification. Since then formulae under the Homebrew organisation
have been migrated to use _SHA256_ for verification; this includes both source have been migrated to use _SHA-256_ for verification; this includes both source
packages and our precompiled packages (bottles). packages and our precompiled packages (bottles).
Homebrew has since stopped supporting _SHA1_ and _MD5_ entirely. Homebrew has since stopped supporting _SHA1_ and _MD5_ entirely.
@ -15,4 +15,4 @@ This is enforced in the same way _MD5_ is, by blocking the installation of that
individual formula until the checksum is migrated. individual formula until the checksum is migrated.
This means custom taps, local custom formulae, etc. need to be migrated to use This means custom taps, local custom formulae, etc. need to be migrated to use
_SHA256_ before you can install them. _SHA-256_ before you can install them.

View File

@ -16,11 +16,11 @@ Follow these steps to fix this issue:
Alternative instructions using `pr-pull`: Alternative instructions using `pr-pull`:
* `git reset --hard <SHA>` in `homebrew/core` to reset to the commit before all the commits created by `brew pr-pull`. * `git reset --hard <SHA>` in `homebrew/core` to reset to the commit before all the commits created by `brew pr-pull`.
* `brew pr-pull <options>` to upload the right bottles. Add the `--warn-on-upload-failure` flag if the bottles have been partially uploaded and you're certain that the bottle checksums will match the checksums already present in the `bottle do` block of the formula. * `brew pr-pull <options>` to upload the right bottles. Add the `--warn-on-upload-failure` switch if the bottles have been partially uploaded and you're certain that the bottle checksums will match the checksums already present in the `bottle do` block of the formula.
* `git reset --hard origin/master` to return to the latest commit and discard the commits made by `brew pr-pull`. * `git reset --hard origin/master` to return to the latest commit and discard the commits made by `brew pr-pull`.
### `ld: internal error: atom not found in symbolIndex(__ZN10SQInstance3GetERK11SQObjectPtrRS0_) for architecture x86_64` ### `ld: internal error: atom not found in symbolIndex(__ZN10SQInstance3GetERK11SQObjectPtrRS0_) for architecture x86_64`
The exact atom may be different. The exact atom may be different.
This can be caused by passing the obsolete `-s` flag to the linker and can be fixed [using `inreplace`](https://github.com/Homebrew/homebrew-core/commit/c4ad981d788b21a406a6efe7748f2922986919a8). This can be caused by passing the obsolete `-s` option to the linker and can be fixed [using `inreplace`](https://github.com/Homebrew/homebrew-core/commit/c4ad981d788b21a406a6efe7748f2922986919a8).

View File

@ -133,7 +133,9 @@ xcode-select --install
brew upgrade brew upgrade
``` ```
## Cask - cURL error ## Homebrew Cask issues
### Cask - cURL error
First, let's tackle a common problem: do you have a `.curlrc` file? Check with `ls -A ~ | grep .curlrc` (if you get a result, the file exists). Those are a frequent cause of issues of this nature. Before anything else, remove that file and try again. If it now works, do not open an issue. Incompatible `.curlrc` configurations must be fixed on your side. First, let's tackle a common problem: do you have a `.curlrc` file? Check with `ls -A ~ | grep .curlrc` (if you get a result, the file exists). Those are a frequent cause of issues of this nature. Before anything else, remove that file and try again. If it now works, do not open an issue. Incompatible `.curlrc` configurations must be fixed on your side.
@ -142,7 +144,7 @@ If, however, you do not have a `.curlrc` or removing it did not work, lets se
1. Go to the vendors website (`brew home <cask_name>`). 1. Go to the vendors website (`brew home <cask_name>`).
2. Find the download link for the app and click on it. 2. Find the download link for the app and click on it.
### If the download works #### If the download works
The cask is outdated. Lets fix it: The cask is outdated. Lets fix it:
@ -151,7 +153,7 @@ The cask is outdated. Lets fix it:
Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble. Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble.
### If the download does not work #### If the download does not work
The issue isnt in any way related to Homebrew Cask, but with the vendor or your connection. The issue isnt in any way related to Homebrew Cask, but with the vendor or your connection.
@ -161,7 +163,7 @@ If youre sure the issue is not with your connection, contact the apps vend
**Do not open an issue.** **Do not open an issue.**
## Cask - checksum does not match ### Cask - checksum does not match
First, check if the problem was with your download. Delete the downloaded file (its location will be pointed out in the error message) and try again. First, check if the problem was with your download. Delete the downloaded file (its location will be pointed out in the error message) and try again.
@ -173,7 +175,7 @@ If the problem persists, the cask must be outdated. Itll likely need a new ve
Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble. Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble.
## Cask - permission denied ### Cask - permission denied
In this case, its likely your user account has no admin rights and therefore lacks permissions for writing to `/Applications`, which is the default install location. You can use [`--appdir`](https://github.com/Homebrew/homebrew-cask/blob/HEAD/USAGE.md#options) to choose where to install your applications. In this case, its likely your user account has no admin rights and therefore lacks permissions for writing to `/Applications`, which is the default install location. You can use [`--appdir`](https://github.com/Homebrew/homebrew-cask/blob/HEAD/USAGE.md#options) to choose where to install your applications.
@ -183,7 +185,7 @@ Some app bundles dont have certain permissions that are necessary for us to m
Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble. Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble.
## Cask - source is not there ### Cask - source is not there
First, you need to identify which artifact is not being handled correctly anymore. Its explicit in the error message: if it says `It seems the App source…'` then the problem is with the [`app`](https://docs.brew.sh/Cask-Cookbook#stanza-app) stanza. This pattern is the same across [all artifacts](https://docs.brew.sh/Cask-Cookbook#at-least-one-artifact-stanza-is-also-required). First, you need to identify which artifact is not being handled correctly anymore. Its explicit in the error message: if it says `It seems the App source…'` then the problem is with the [`app`](https://docs.brew.sh/Cask-Cookbook#stanza-app) stanza. This pattern is the same across [all artifacts](https://docs.brew.sh/Cask-Cookbook#at-least-one-artifact-stanza-is-also-required).
@ -206,7 +208,7 @@ Note that occasionally the apps name changes completely (from `SomeApp.app` t
Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble. Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask). If you get stumped, [open an issue](https://github.com/Homebrew/homebrew-cask/issues/new?template=01_bug_report.md) explaining your steps so far and where youre having trouble.
## Cask - wrong number of arguments ### Cask - wrong number of arguments
Make sure the issue really lies with your macOS version. To do so, try to install the software manually. If it is incompatible with your macOS version, it will tell you. In that case, there is nothing we can do to help you install the software, but we can add a [`depends_on macos:`](https://docs.brew.sh/Cask-Cookbook#depends_on-macos) stanza to prevent the cask from being installed on incompatible macOS versions. Make sure the issue really lies with your macOS version. To do so, try to install the software manually. If it is incompatible with your macOS version, it will tell you. In that case, there is nothing we can do to help you install the software, but we can add a [`depends_on macos:`](https://docs.brew.sh/Cask-Cookbook#depends_on-macos) stanza to prevent the cask from being installed on incompatible macOS versions.

View File

@ -198,7 +198,7 @@ In the resulting dialog, click the *Open* button to have macOS permanently allow
<img src="assets/img/docs/gatekeeper-unidentified-open.png" width="532" alt="Gatekeeper unidentified developer open prompt"> <img src="assets/img/docs/gatekeeper-unidentified-open.png" width="532" alt="Gatekeeper unidentified developer open prompt">
Alternatively, you may provide the [`--no-quarantine` flag](https://github.com/Homebrew/homebrew-cask/blob/HEAD/USAGE.md#options) at install time to not add this feature to a specific app. Alternatively, you may provide the [`--no-quarantine` switch](https://github.com/Homebrew/homebrew-cask/blob/HEAD/USAGE.md#options) at install time to not add this feature to a specific app.
## Why arent some apps included during `brew upgrade`? ## Why arent some apps included during `brew upgrade`?
@ -225,7 +225,7 @@ If you still want to force software to be upgraded via Homebrew Cask, you can re
brew upgrade <cask> brew upgrade <cask>
Or use the `--greedy` flag: Or use the `--greedy` switch:
brew upgrade --greedy brew upgrade --greedy

View File

@ -210,7 +210,7 @@ When a version scheme of a formula fails to recognise a new version as newer it
When you already have a lot of formulae installed, it's easy to miss a common dependency. You can double-check which libraries a binary links to with the `otool` command (perhaps you need to use `xcrun otool`): When you already have a lot of formulae installed, it's easy to miss a common dependency. You can double-check which libraries a binary links to with the `otool` command (perhaps you need to use `xcrun otool`):
```sh ```console
$ otool -L /usr/local/bin/ldapvi $ otool -L /usr/local/bin/ldapvi
/usr/local/bin/ldapvi: /usr/local/bin/ldapvi:
/usr/local/opt/openssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
@ -268,7 +268,7 @@ end
[`jrnl`](https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/j/jrnl.rb) is an example of a formula that does this well. The end result means the user doesn't have to use `pip` or Python and can just run `jrnl`. [`jrnl`](https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/j/jrnl.rb) is an example of a formula that does this well. The end result means the user doesn't have to use `pip` or Python and can just run `jrnl`.
For Python formulae, running `brew update-python-resources <formula>` will automatically add the necessary [`resource`](https://rubydoc.brew.sh/Formula#resource-class_method) stanzas for the dependencies of your Python application to the formula. Note that `brew update-python-resources` is run automatically by `brew create` if you pass the `--python` flag. If `brew update-python-resources` is unable to determine the correct `resource` stanzas, [homebrew-pypi-poet](https://github.com/tdsmith/homebrew-pypi-poet) is a good third-party alternative that may help. For Python formulae, running `brew update-python-resources <formula>` will automatically add the necessary [`resource`](https://rubydoc.brew.sh/Formula#resource-class_method) stanzas for the dependencies of your Python application to the formula. Note that `brew update-python-resources` is run automatically by `brew create` if you pass the `--python` switch. If `brew update-python-resources` is unable to determine the correct `resource` stanzas, [homebrew-pypi-poet](https://github.com/tdsmith/homebrew-pypi-poet) is a good third-party alternative that may help.
### Install the formula ### Install the formula

View File

@ -41,7 +41,7 @@ There are many checks that run on every PR. The following is a quick list of the
- `CI / vendored gems`: This checks whether there was a change to the vendored gems on Linux that needs to be committed to the PR branch. - `CI / vendored gems`: This checks whether there was a change to the vendored gems on Linux that needs to be committed to the PR branch.
- `CI / test default formula (Linux)`: This runs `brew test-bot` on Linux to ensure it still works as expected. - `CI / test default formula (Linux)`: This runs `brew test-bot` on Linux to ensure it still works as expected.
- `CI / syntax`: This is run first to check whether the PR passes `brew style` and `brew typecheck`. If this job fails the following jobs will not run. - `CI / syntax`: This is run first to check whether the PR passes `brew style` and `brew typecheck`. If this job fails the following jobs will not run.
- `CI / tap syntax`: This runs `brew style` and `brew audit` on all official taps (note that although this runs on Linux, it does check all cask repos). - `CI / tap syntax`: This runs `brew style` and `brew audit` on all official taps (note that although this runs on Linux, it does check all cask repositories).
- `CI / docker`: This builds and deploys a new Homebrew Docker image to GitHub Packages and Docker Hub. - `CI / docker`: This builds and deploys a new Homebrew Docker image to GitHub Packages and Docker Hub.
- `CI / test everything (macOS)`: This runs several checks on macOS including `brew tests`, `brew update-tests`, `brew test-bot --only-formulae --test-default-formula`, `brew readall` and `brew doctor`. - `CI / test everything (macOS)`: This runs several checks on macOS including `brew tests`, `brew update-tests`, `brew test-bot --only-formulae --test-default-formula`, `brew readall` and `brew doctor`.
- `CI / tests (generic OS)` and `CI / tests (Linux)`: These run `brew tests` with various options on Linux. - `CI / tests (generic OS)` and `CI / tests (Linux)`: These run `brew tests` with various options on Linux.

View File

@ -130,13 +130,13 @@ using this quick command:_
## Pre-planning ## Pre-planning
### Finding a Meeting Venue ### Finding a meeting venue
In the past, PLC hosted the AGM at the In the past, PLC hosted the AGM at the
[THON Hotel Brussels City Centre](https://www.thonhotels.com/conference/belgium/brussels/thon-hotel-brussels-city-centre/?Persons=20) [THON Hotel Brussels City Centre](https://www.thonhotels.com/conference/belgium/brussels/thon-hotel-brussels-city-centre/?Persons=20)
and arranged for a room block checking in the day before FOSDEM and AGM weekend, generally on Friday, and checking out the day after, generally Tuesday when the AGM is Monday. and arranged for a room block checking in the day before FOSDEM and AGM weekend, generally on Friday, and checking out the day after, generally Tuesday when the AGM is Monday.
### Who Qualifies For AGM Travel Assistance ### Who qualifies for AGM travel assistance
Travel assistance is available for AGM participants who are expected to attend the AGM in-person. Travel assistance is available for AGM participants who are expected to attend the AGM in-person.
Those who have employers able to cover all or a part of the costs of attending FOSDEM should exhaust that Those who have employers able to cover all or a part of the costs of attending FOSDEM should exhaust that

View File

@ -141,7 +141,12 @@ Show dependencies for *`formula`*. When given multiple formula arguments,
show the intersection of dependencies for each formula. By default, `deps` show the intersection of dependencies for each formula. By default, `deps`
shows all required and recommended dependencies. shows all required and recommended dependencies.
Note: `--missing` and `--skip-recommended` have precedence over `--include-*`. If any version of each formula argument is installed and no other options
are passed, this command displays their actual runtime dependencies (similar
to `brew linkage`), which may differ from the current versons' stated
dependencies if the installed versions are outdated.
*Note:* `--missing` and `--skip-recommended` have precedence over `--include-*`.
* `-n`, `--topological`: * `-n`, `--topological`:
Sort dependencies in topological order. Sort dependencies in topological order.
@ -214,15 +219,16 @@ branch instead of the latest stable version along with some other behaviour chan
### `docs` ### `docs`
Open Homebrew's online documentation (https://docs.brew.sh) in a browser. Open Homebrew's online documentation at <https://docs.brew.sh> in a browser.
### `doctor`, `dr` [`--list-checks`] [`--audit-debug`] [*`diagnostic_check`* ...] ### `doctor`, `dr` [`--list-checks`] [`--audit-debug`] [*`diagnostic_check`* ...]
Check your system for potential problems. Will exit with a non-zero status Check your system for potential problems. Will exit with a non-zero status
if any potential problems are found. Please note that these warnings are just if any potential problems are found.
used to help the Homebrew maintainers with debugging if you file an issue. If
everything you use Homebrew for is working fine: please don't worry or file Please note that these warnings are just used to help the Homebrew maintainers
an issue; just ignore this. with debugging if you file an issue. If everything you use Homebrew for
is working fine: please don't worry or file an issue; just ignore this.
* `--list-checks`: * `--list-checks`:
List all audit methods, which can be run individually if provided as arguments. List all audit methods, which can be run individually if provided as arguments.
@ -292,7 +298,6 @@ Homebrew's own homepage if no argument is provided.
### `info`, `abv` [*`options`*] [*`formula`*|*`cask`* ...] ### `info`, `abv` [*`options`*] [*`formula`*|*`cask`* ...]
Display brief statistics for your Homebrew installation. Display brief statistics for your Homebrew installation.
If a *`formula`* or *`cask`* is provided, show summary of information about it. If a *`formula`* or *`cask`* is provided, show summary of information about it.
* `--analytics`: * `--analytics`:
@ -337,13 +342,13 @@ is already installed but outdated.
* `-f`, `--force`: * `-f`, `--force`:
Install formulae without checking for previously installed keg-only or non-migrated versions. When installing casks, overwrite existing files (binaries and symlinks are excluded, unless originally from the same cask). Install formulae without checking for previously installed keg-only or non-migrated versions. When installing casks, overwrite existing files (binaries and symlinks are excluded, unless originally from the same cask).
* `-v`, `--verbose`: * `-v`, `--verbose`:
Print the verification and postinstall steps. Print the verification and post-install steps.
* `-n`, `--dry-run`: * `-n`, `--dry-run`:
Show what would be installed, but do not actually install anything. Show what would be installed, but do not actually install anything.
* `--formula`: * `--formula`:
Treat all named arguments as formulae. Treat all named arguments as formulae.
* `--ignore-dependencies`: * `--ignore-dependencies`:
An unsupported Homebrew development flag to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you're not developing Homebrew, consider adjusting your PATH rather than using this flag. An unsupported Homebrew development option to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you're not developing Homebrew, consider adjusting your PATH rather than using this option.
* `--only-dependencies`: * `--only-dependencies`:
Install the dependencies with specified options but do not install the formula itself. Install the dependencies with specified options but do not install the formula itself.
* `--cc`: * `--cc`:
@ -402,9 +407,9 @@ List installed formulae that are not dependencies of another installed formula o
### `link`, `ln` [*`options`*] *`installed_formula`* [...] ### `link`, `ln` [*`options`*] *`installed_formula`* [...]
Symlink all of *`formula`*'s installed files into Homebrew's prefix. This Symlink all of *`formula`*'s installed files into Homebrew's prefix.
is done automatically when you install formulae but can be useful for DIY This is done automatically when you install formulae but can be useful
installations. for manual installations.
* `--overwrite`: * `--overwrite`:
Delete files that already exist in the prefix while linking. Delete files that already exist in the prefix while linking.
@ -418,7 +423,6 @@ installations.
### `list`, `ls` [*`options`*] [*`installed_formula`*|*`installed_cask`* ...] ### `list`, `ls` [*`options`*] [*`installed_formula`*|*`installed_cask`* ...]
List all installed formulae and casks. List all installed formulae and casks.
If *`formula`* is provided, summarise the paths within its current keg. If *`formula`* is provided, summarise the paths within its current keg.
If *`cask`* is provided, list its artifacts. If *`cask`* is provided, list its artifacts.
@ -488,7 +492,7 @@ to be missing dependencies.
### `nodenv-sync` ### `nodenv-sync`
Create symlinks for Homebrew's installed NodeJS versions in ~/.nodenv/versions. Create symlinks for Homebrew's installed NodeJS versions in `~/.nodenv/versions`.
Note that older version symlinks will also be created so e.g. NodeJS 19.1.0 will Note that older version symlinks will also be created so e.g. NodeJS 19.1.0 will
also be symlinked to 19.0.0. also be symlinked to 19.0.0.
@ -541,14 +545,14 @@ Rerun the post-install steps for *`formula`*.
### `pyenv-sync` ### `pyenv-sync`
Create symlinks for Homebrew's installed Python versions in ~/.pyenv/versions. Create symlinks for Homebrew's installed Python versions in `~/.pyenv/versions`.
Note that older patch version symlinks will be created and linked to the minor Note that older patch version symlinks will be created and linked to the minor
version so e.g. Python 3.11.0 will also be symlinked to 3.11.3. version so e.g. Python 3.11.0 will also be symlinked to 3.11.3.
### `rbenv-sync` ### `rbenv-sync`
Create symlinks for Homebrew's installed Ruby versions in ~/.rbenv/versions. Create symlinks for Homebrew's installed Ruby versions in `~/.rbenv/versions`.
Note that older version symlinks will also be created so e.g. Ruby 3.2.1 will Note that older version symlinks will also be created so e.g. Ruby 3.2.1 will
also be symlinked to 3.2.0. also be symlinked to 3.2.0.
@ -567,7 +571,7 @@ all items or checking if any current formulae/casks have Ruby issues.
* `--aliases`: * `--aliases`:
Verify any alias symlinks in each tap. Verify any alias symlinks in each tap.
* `--syntax`: * `--syntax`:
Syntax-check all of Homebrew's Ruby files (if no `*`tap`*` is passed). Syntax-check all of Homebrew's Ruby files (if no *`tap`* is passed).
* `--eval-all`: * `--eval-all`:
Evaluate all available formulae and casks, whether installed or not. Implied if `HOMEBREW_EVAL_ALL` is set. Evaluate all available formulae and casks, whether installed or not. Implied if `HOMEBREW_EVAL_ALL` is set.
* `--no-simulate`: * `--no-simulate`:
@ -589,7 +593,7 @@ reinstalled formulae or, every 30 days, for all formulae.
* `-f`, `--force`: * `-f`, `--force`:
Install without checking for previously installed keg-only or non-migrated versions. Install without checking for previously installed keg-only or non-migrated versions.
* `-v`, `--verbose`: * `-v`, `--verbose`:
Print the verification and postinstall steps. Print the verification and post-install steps.
* `--formula`: * `--formula`:
Treat all named arguments as formulae. Treat all named arguments as formulae.
* `-s`, `--build-from-source`: * `-s`, `--build-from-source`:
@ -671,7 +675,6 @@ The shell can be specified explicitly with a supported shell name parameter. Unk
### `tap` [*`options`*] [*`user`*`/`*`repo`*] [*`URL`*] ### `tap` [*`options`*] [*`user`*`/`*`repo`*] [*`URL`*]
Tap a formula repository. Tap a formula repository.
If no arguments are provided, list all installed taps. If no arguments are provided, list all installed taps.
With *`URL`* unspecified, tap a formula repository from GitHub using HTTPS. With *`URL`* unspecified, tap a formula repository from GitHub using HTTPS.
@ -698,7 +701,6 @@ using protocols other than HTTPS, e.g. SSH, git, HTTP, FTP(S), rsync.
### `tap-info` [`--installed`] [`--json`] [*`tap`* ...] ### `tap-info` [`--installed`] [`--json`] [*`tap`* ...]
Show detailed information about one or more *`tap`*s. Show detailed information about one or more *`tap`*s.
If no *`tap`* names are provided, display brief statistics for all installed taps. If no *`tap`* names are provided, display brief statistics for all installed taps.
* `--installed`: * `--installed`:
@ -776,7 +778,7 @@ upgraded formulae or, every 30 days, for all formulae.
* `-f`, `--force`: * `-f`, `--force`:
Install formulae without checking for previously installed keg-only or non-migrated versions. When installing casks, overwrite existing files (binaries and symlinks are excluded, unless originally from the same cask). Install formulae without checking for previously installed keg-only or non-migrated versions. When installing casks, overwrite existing files (binaries and symlinks are excluded, unless originally from the same cask).
* `-v`, `--verbose`: * `-v`, `--verbose`:
Print the verification and postinstall steps. Print the verification and post-install steps.
* `-n`, `--dry-run`: * `-n`, `--dry-run`:
Show what would be upgraded, but do not actually upgrade anything. Show what would be upgraded, but do not actually upgrade anything.
* `--formula`: * `--formula`:
@ -821,7 +823,7 @@ of *`formula`*. When given multiple formula arguments, show the intersection
of formulae that use *`formula`*. By default, `uses` shows all formulae and casks that of formulae that use *`formula`*. By default, `uses` shows all formulae and casks that
specify *`formula`* as a required or recommended dependency for their stable builds. specify *`formula`* as a required or recommended dependency for their stable builds.
Note: `--missing` and `--skip-recommended` have precedence over `--include-*`. *Note:* `--missing` and `--skip-recommended` have precedence over `--include-*`.
* `--recursive`: * `--recursive`:
Resolve more than one level of dependencies. Resolve more than one level of dependencies.
@ -898,8 +900,8 @@ the list is formatted for export to `bash`(1) unless `--plain` is passed.
Display Homebrew's install path. *Default:* Display Homebrew's install path. *Default:*
- macOS Intel: `/usr/local`
- macOS ARM: `/opt/homebrew` - macOS ARM: `/opt/homebrew`
- macOS Intel: `/usr/local`
- Linux: `/home/linuxbrew/.linuxbrew` - Linux: `/home/linuxbrew/.linuxbrew`
If *`formula`* is provided, display the location where *`formula`* is or would be installed. If *`formula`* is provided, display the location where *`formula`* is or would be installed.
@ -911,7 +913,7 @@ If *`formula`* is provided, display the location where *`formula`* is or would b
### `--repository`, `--repo` [*`tap`* ...] ### `--repository`, `--repo` [*`tap`* ...]
Display where Homebrew's git repository is located. Display where Homebrew's Git repository is located.
If *`user`*`/`*`repo`* are provided, display where tap *`user`*`/`*`repo`*'s directory is located. If *`user`*`/`*`repo`* are provided, display where tap *`user`*`/`*`repo`*'s directory is located.
@ -1169,7 +1171,7 @@ Display the path to the file being used when invoking `brew` *`cmd`*.
### `contributions` [--user=*`email|username`*] [*`--repositories`*`=`] [*`--csv`*] ### `contributions` [--user=*`email|username`*] [*`--repositories`*`=`] [*`--csv`*]
Contributions to Homebrew repositories. Summarise contributions to Homebrew repositories.
* `--repositories`: * `--repositories`:
Specify a comma-separated list of repositories to search. Supported repositories: `brew`, `core`, `cask`, `aliases`, `autoupdate`, `bundle`, `command-not-found`, `test-bot`, `services`, `cask-fonts` and `cask-versions`. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: brew,core,cask. Specifying `--repositories=all`, searches all repositories. Specify a comma-separated list of repositories to search. Supported repositories: `brew`, `core`, `cask`, `aliases`, `autoupdate`, `bundle`, `command-not-found`, `test-bot`, `services`, `cask-fonts` and `cask-versions`. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: brew,core,cask. Specifying `--repositories=all`, searches all repositories.
@ -1282,8 +1284,7 @@ Display the path where *`formula`* is located.
### `generate-cask-api` [`--dry-run`] ### `generate-cask-api` [`--dry-run`]
Generates Cask API data files for formulae.brew.sh. Generate `homebrew/cask` API data files for <https://formulae.brew.sh>.
The generated files are written to the current directory. The generated files are written to the current directory.
* `-n`, `--dry-run`: * `-n`, `--dry-run`:
@ -1291,8 +1292,7 @@ The generated files are written to the current directory.
### `generate-formula-api` [`--dry-run`] ### `generate-formula-api` [`--dry-run`]
Generates Formula API data files for formulae.brew.sh. Generate `homebrew/core` API data files for <https://formulae.brew.sh>.
The generated files are written to the current directory. The generated files are written to the current directory.
* `-n`, `--dry-run`: * `-n`, `--dry-run`:
@ -1335,7 +1335,6 @@ provided, check all kegs. Raises an error if run on uninstalled formulae.
### `livecheck`, `lc` [*`options`*] [*`formula`*|*`cask`* ...] ### `livecheck`, `lc` [*`options`*] [*`formula`*|*`cask`* ...]
Check for newer versions of formulae and/or casks from upstream. Check for newer versions of formulae and/or casks from upstream.
If no formula or cask argument is passed, the list of formulae and If no formula or cask argument is passed, the list of formulae and
casks to check is taken from `HOMEBREW_LIVECHECK_WATCHLIST` or casks to check is taken from `HOMEBREW_LIVECHECK_WATCHLIST` or
`~/.homebrew/livecheck_watchlist.txt`. `~/.homebrew/livecheck_watchlist.txt`.
@ -1486,7 +1485,7 @@ By default, `brew release` will bump the patch version number. Pass
The command will fail if the previous major or minor release was made less than The command will fail if the previous major or minor release was made less than
one month ago. one month ago.
Requires write access to the Homebrew/brew repository. *Note:* Requires write access to the Homebrew/brew repository.
* `--major`: * `--major`:
Create a major release. Create a major release.
@ -1698,7 +1697,7 @@ Install and commit Homebrew's vendored gems.
## GLOBAL CASK OPTIONS ## GLOBAL CASK OPTIONS
These options are applicable to the `install`, `reinstall`, and `upgrade` subcommands with the `--cask` flag. These options are applicable to the `install`, `reinstall`, and `upgrade` subcommands with the `--cask` switch.
* `--appdir`: * `--appdir`:
Target location for Applications (default: `/Applications`). Target location for Applications (default: `/Applications`).
@ -2306,7 +2305,7 @@ prefix-specific files take precedence over system-wide files (unless
- `HOMEBREW_NO_INSECURE_REDIRECT` - `HOMEBREW_NO_INSECURE_REDIRECT`
<br>If set, forbid redirects from secure HTTPS to insecure HTTP. <br>If set, forbid redirects from secure HTTPS to insecure HTTP.
*Note:* While ensuring your downloads are fully secure, this is likely to cause from-source SourceForge, some GNU & GNOME-hosted formulae to fail to download. *Note:* while ensuring your downloads are fully secure, this is likely to cause from-source SourceForge, some GNU & GNOME-hosted formulae to fail to download.
- `HOMEBREW_NO_INSTALL_CLEANUP` - `HOMEBREW_NO_INSTALL_CLEANUP`
<br>If set, `brew install`, `brew upgrade` and `brew reinstall` will never automatically cleanup installed/upgraded/reinstalled formulae or all formulae every `HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS` days. Alternatively, `HOMEBREW_NO_CLEANUP_FORMULAE` allows specifying specific formulae to not clean up. <br>If set, `brew install`, `brew upgrade` and `brew reinstall` will never automatically cleanup installed/upgraded/reinstalled formulae or all formulae every `HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS` days. Alternatively, `HOMEBREW_NO_CLEANUP_FORMULAE` allows specifying specific formulae to not clean up.
@ -2315,7 +2314,7 @@ prefix-specific files take precedence over system-wide files (unless
<br>If set, do not install formulae and casks in homebrew/core and homebrew/cask taps using Homebrew's API and instead use (large, slow) local checkouts of these repositories. <br>If set, do not install formulae and casks in homebrew/core and homebrew/cask taps using Homebrew's API and instead use (large, slow) local checkouts of these repositories.
- `HOMEBREW_NO_INSTALL_UPGRADE` - `HOMEBREW_NO_INSTALL_UPGRADE`
<br>If set, `brew install` <formula/cask> will not upgrade <formula/cask> if it is installed but outdated. <br>If set, `brew install` *`formula|cask`* will not upgrade *`formula|cask`* if it is installed but outdated.
- `HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK` - `HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK`
<br>If set, do not check for broken linkage of dependents or outdated dependents after installing, upgrading or reinstalling formulae. This will result in fewer dependents (and their dependencies) being upgraded or reinstalled but may result in more breakage from running `brew install` *`formula`* or `brew upgrade` *`formula`*. <br>If set, do not check for broken linkage of dependents or outdated dependents after installing, upgrading or reinstalling formulae. This will result in fewer dependents (and their dependencies) being upgraded or reinstalled but may result in more breakage from running `brew install` *`formula`* or `brew upgrade` *`formula`*.
@ -2324,7 +2323,7 @@ prefix-specific files take precedence over system-wide files (unless
<br>If set, `brew update` will not show the list of newly added formulae/casks. <br>If set, `brew update` will not show the list of newly added formulae/casks.
- `HOMEBREW_PIP_INDEX_URL` - `HOMEBREW_PIP_INDEX_URL`
<br>If set, `brew install *`formula`*` will use this URL to download PyPI package resources. <br>If set, `brew install` *`formula`* will use this URL to download PyPI package resources.
*Default:* `https://pypi.org/simple`. *Default:* `https://pypi.org/simple`.
@ -2344,7 +2343,7 @@ prefix-specific files take precedence over system-wide files (unless
<br>If set, enable runtime typechecking using Sorbet. Set by default for HOMEBREW_DEVELOPER or when running some developer commands. <br>If set, enable runtime typechecking using Sorbet. Set by default for HOMEBREW_DEVELOPER or when running some developer commands.
- `HOMEBREW_SSH_CONFIG_PATH` - `HOMEBREW_SSH_CONFIG_PATH`
<br>If set, Homebrew will use the given config file instead of `~/.ssh/config` when fetching `git` repos over `ssh`. <br>If set, Homebrew will use the given config file instead of `~/.ssh/config` when fetching Git repositories over SSH.
*Default:* `$HOME/.ssh/config` *Default:* `$HOME/.ssh/config`

View File

@ -9,7 +9,7 @@ but the command isn't limited to any one location.
* `brew tap` without arguments lists all currently tapped repositories. For * `brew tap` without arguments lists all currently tapped repositories. For
example: example:
```sh ```console
$ brew tap $ brew tap
homebrew/cask homebrew/cask
homebrew/core homebrew/core

View File

@ -39,7 +39,7 @@ brew install --only-dependencies <formula>
## Use the interactive Homebrew shell ## Use the interactive Homebrew shell
```sh ```console
$ brew irb $ brew irb
==> Interactive Homebrew Shell ==> Interactive Homebrew Shell
Example commands available with: `brew irb --examples` Example commands available with: `brew irb --examples`
@ -67,7 +67,7 @@ export HOMEBREW_INSTALL_BADGE="☕️ 🐸"
## Migrate a Homebrew installation to a new location ## Migrate a Homebrew installation to a new location
Run `brew bundle dump` and `brew bundle install` record an installation to and install from a `Brewfile`. See `brew bundle --help` for more details. Running `brew bundle dump` will record an installation to a `Brewfile` and `brew bundle install` will install from a `Brewfile`. See `brew bundle --help` for more details.
## Appoint Homebrew Cask to manage a manually-installed app ## Appoint Homebrew Cask to manage a manually-installed app

View File

@ -6,7 +6,7 @@ The [Sorbet Documentation] is a good place to get started if you want to dive de
## Sorbet in the Homebrew Codebase ## Sorbet in the Homebrew Codebase
### Inline Type Annotations ### Inline type annotations
The `sig` method is used to annotate method signatures. Here's a simple example: The `sig` method is used to annotate method signatures. Here's a simple example:
@ -30,7 +30,7 @@ For more information on how to express more complex types, refer to the official
- [Nilable Types](https://sorbet.org/docs/nilable-types) - [Nilable Types](https://sorbet.org/docs/nilable-types)
- [Union Types](https://sorbet.org/docs/union-types) - [Union Types](https://sorbet.org/docs/union-types)
### Ruby Interface Files (`.rbi`) ### Ruby interface files (`.rbi`)
[RBI files](https://sorbet.org/docs/rbi) help Sorbet learn about constants, ancestors and methods defined in ways it doesnt understand natively. We can also create an RBI file to help Sorbet understand dynamic definitions. [RBI files](https://sorbet.org/docs/rbi) help Sorbet learn about constants, ancestors and methods defined in ways it doesnt understand natively. We can also create an RBI file to help Sorbet understand dynamic definitions.
@ -38,7 +38,7 @@ Sometimes it is necessary to explicitly include the `Kernel` module in order for
[example]: https://github.com/Homebrew/brew/blob/61b79318ed089b5010501e2cbf163fd8e48e2dfc/Library/Homebrew/global.rbi [example]: https://github.com/Homebrew/brew/blob/61b79318ed089b5010501e2cbf163fd8e48e2dfc/Library/Homebrew/global.rbi
### The [`Library/Homebrew/sorbet`] Directory ### The [`Library/Homebrew/sorbet`] directory
[`Library/Homebrew/sorbet`]: https://github.com/Homebrew/brew/tree/master/Library/Homebrew/sorbet [`Library/Homebrew/sorbet`]: https://github.com/Homebrew/brew/tree/master/Library/Homebrew/sorbet

View File

@ -8,4 +8,5 @@ scope: paragraph
swap: swap:
"(?<!How to Open a Homebrew )Pull Request": pull request "(?<!How to Open a Homebrew )Pull Request": pull request
repo: repository repo: repository
repos: repositories
Rubocop: RuboCop Rubocop: RuboCop

View File

@ -158,7 +158,10 @@ Show Homebrew and system configuration info useful for debugging\. If you file a
Show dependencies for \fIformula\fR\. When given multiple formula arguments, show the intersection of dependencies for each formula\. By default, \fBdeps\fR shows all required and recommended dependencies\. Show dependencies for \fIformula\fR\. When given multiple formula arguments, show the intersection of dependencies for each formula\. By default, \fBdeps\fR shows all required and recommended dependencies\.
. .
.P .P
Note: \fB\-\-missing\fR and \fB\-\-skip\-recommended\fR have precedence over \fB\-\-include\-*\fR\. If any version of each formula argument is installed and no other options are passed, this command displays their actual runtime dependencies (similar to \fBbrew linkage\fR), which may differ from the current versons\' stated dependencies if the installed versions are outdated\.
.
.P
\fINote:\fR \fB\-\-missing\fR and \fB\-\-skip\-recommended\fR have precedence over \fB\-\-include\-*\fR\.
. .
.TP .TP
\fB\-n\fR, \fB\-\-topological\fR \fB\-n\fR, \fB\-\-topological\fR
@ -275,10 +278,13 @@ Control Homebrew\'s developer mode\. When developer mode is enabled, \fBbrew upd
Turn Homebrew\'s developer mode on or off respectively\. Turn Homebrew\'s developer mode on or off respectively\.
. .
.SS "\fBdocs\fR" .SS "\fBdocs\fR"
Open Homebrew\'s online documentation (https://docs\.brew\.sh) in a browser\. Open Homebrew\'s online documentation at \fIhttps://docs\.brew\.sh\fR in a browser\.
. .
.SS "\fBdoctor\fR, \fBdr\fR [\fB\-\-list\-checks\fR] [\fB\-\-audit\-debug\fR] [\fIdiagnostic_check\fR \.\.\.]" .SS "\fBdoctor\fR, \fBdr\fR [\fB\-\-list\-checks\fR] [\fB\-\-audit\-debug\fR] [\fIdiagnostic_check\fR \.\.\.]"
Check your system for potential problems\. Will exit with a non\-zero status if any potential problems are found\. Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue\. If everything you use Homebrew for is working fine: please don\'t worry or file an issue; just ignore this\. Check your system for potential problems\. Will exit with a non\-zero status if any potential problems are found\.
.
.P
Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue\. If everything you use Homebrew for is working fine: please don\'t worry or file an issue; just ignore this\.
. .
.TP .TP
\fB\-\-list\-checks\fR \fB\-\-list\-checks\fR
@ -377,10 +383,7 @@ Treat all named arguments as formulae\.
Treat all named arguments as casks\. Treat all named arguments as casks\.
. .
.SS "\fBinfo\fR, \fBabv\fR [\fIoptions\fR] [\fIformula\fR|\fIcask\fR \.\.\.]" .SS "\fBinfo\fR, \fBabv\fR [\fIoptions\fR] [\fIformula\fR|\fIcask\fR \.\.\.]"
Display brief statistics for your Homebrew installation\. Display brief statistics for your Homebrew installation\. If a \fIformula\fR or \fIcask\fR is provided, show summary of information about it\.
.
.P
If a \fIformula\fR or \fIcask\fR is provided, show summary of information about it\.
. .
.TP .TP
\fB\-\-analytics\fR \fB\-\-analytics\fR
@ -448,7 +451,7 @@ Install formulae without checking for previously installed keg\-only or non\-mig
. .
.TP .TP
\fB\-v\fR, \fB\-\-verbose\fR \fB\-v\fR, \fB\-\-verbose\fR
Print the verification and postinstall steps\. Print the verification and post\-install steps\.
. .
.TP .TP
\fB\-n\fR, \fB\-\-dry\-run\fR \fB\-n\fR, \fB\-\-dry\-run\fR
@ -460,7 +463,7 @@ Treat all named arguments as formulae\.
. .
.TP .TP
\fB\-\-ignore\-dependencies\fR \fB\-\-ignore\-dependencies\fR
An unsupported Homebrew development flag to skip installing any dependencies of any kind\. If the dependencies are not already present, the formula will have issues\. If you\'re not developing Homebrew, consider adjusting your PATH rather than using this flag\. An unsupported Homebrew development option to skip installing any dependencies of any kind\. If the dependencies are not already present, the formula will have issues\. If you\'re not developing Homebrew, consider adjusting your PATH rather than using this option\.
. .
.TP .TP
\fB\-\-only\-dependencies\fR \fB\-\-only\-dependencies\fR
@ -566,7 +569,7 @@ Only list leaves that were manually installed\.
Only list leaves that were installed as dependencies\. Only list leaves that were installed as dependencies\.
. .
.SS "\fBlink\fR, \fBln\fR [\fIoptions\fR] \fIinstalled_formula\fR [\.\.\.]" .SS "\fBlink\fR, \fBln\fR [\fIoptions\fR] \fIinstalled_formula\fR [\.\.\.]"
Symlink all of \fIformula\fR\'s installed files into Homebrew\'s prefix\. This is done automatically when you install formulae but can be useful for DIY installations\. Symlink all of \fIformula\fR\'s installed files into Homebrew\'s prefix\. This is done automatically when you install formulae but can be useful for manual installations\.
. .
.TP .TP
\fB\-\-overwrite\fR \fB\-\-overwrite\fR
@ -585,10 +588,7 @@ Allow keg\-only formulae to be linked\.
Link the HEAD version of the formula if it is installed\. Link the HEAD version of the formula if it is installed\.
. .
.SS "\fBlist\fR, \fBls\fR [\fIoptions\fR] [\fIinstalled_formula\fR|\fIinstalled_cask\fR \.\.\.]" .SS "\fBlist\fR, \fBls\fR [\fIoptions\fR] [\fIinstalled_formula\fR|\fIinstalled_cask\fR \.\.\.]"
List all installed formulae and casks\. List all installed formulae and casks\. If \fIformula\fR is provided, summarise the paths within its current keg\. If \fIcask\fR is provided, list its artifacts\.
.
.P
If \fIformula\fR is provided, summarise the paths within its current keg\. If \fIcask\fR is provided, list its artifacts\.
. .
.TP .TP
\fB\-\-formula\fR \fB\-\-formula\fR
@ -688,7 +688,7 @@ Check the given \fIformula\fR kegs for missing dependencies\. If no \fIformula\f
Act as if none of the specified \fIhidden\fR are installed\. \fIhidden\fR should be a comma\-separated list of formulae\. Act as if none of the specified \fIhidden\fR are installed\. \fIhidden\fR should be a comma\-separated list of formulae\.
. .
.SS "\fBnodenv\-sync\fR" .SS "\fBnodenv\-sync\fR"
Create symlinks for Homebrew\'s installed NodeJS versions in ~/\.nodenv/versions\. Create symlinks for Homebrew\'s installed NodeJS versions in \fB~/\.nodenv/versions\fR\.
. .
.P .P
Note that older version symlinks will also be created so e\.g\. NodeJS 19\.1\.0 will also be symlinked to 19\.0\.0\. Note that older version symlinks will also be created so e\.g\. NodeJS 19\.1\.0 will also be symlinked to 19\.0\.0\.
@ -758,13 +758,13 @@ Pin the specified \fIformula\fR, preventing them from being upgraded when issuin
Rerun the post\-install steps for \fIformula\fR\. Rerun the post\-install steps for \fIformula\fR\.
. .
.SS "\fBpyenv\-sync\fR" .SS "\fBpyenv\-sync\fR"
Create symlinks for Homebrew\'s installed Python versions in ~/\.pyenv/versions\. Create symlinks for Homebrew\'s installed Python versions in \fB~/\.pyenv/versions\fR\.
. .
.P .P
Note that older patch version symlinks will be created and linked to the minor version so e\.g\. Python 3\.11\.0 will also be symlinked to 3\.11\.3\. Note that older patch version symlinks will be created and linked to the minor version so e\.g\. Python 3\.11\.0 will also be symlinked to 3\.11\.3\.
. .
.SS "\fBrbenv\-sync\fR" .SS "\fBrbenv\-sync\fR"
Create symlinks for Homebrew\'s installed Ruby versions in ~/\.rbenv/versions\. Create symlinks for Homebrew\'s installed Ruby versions in \fB~/\.rbenv/versions\fR\.
. .
.P .P
Note that older version symlinks will also be created so e\.g\. Ruby 3\.2\.1 will also be symlinked to 3\.2\.0\. Note that older version symlinks will also be created so e\.g\. Ruby 3\.2\.1 will also be symlinked to 3\.2\.0\.
@ -786,7 +786,7 @@ Verify any alias symlinks in each tap\.
. .
.TP .TP
\fB\-\-syntax\fR \fB\-\-syntax\fR
Syntax\-check all of Homebrew\'s Ruby files (if no \fB<tap>\fR is passed)\. Syntax\-check all of Homebrew\'s Ruby files (if no \fItap\fR is passed)\.
. .
.TP .TP
\fB\-\-eval\-all\fR \fB\-\-eval\-all\fR
@ -815,7 +815,7 @@ Install without checking for previously installed keg\-only or non\-migrated ver
. .
.TP .TP
\fB\-v\fR, \fB\-\-verbose\fR \fB\-v\fR, \fB\-\-verbose\fR
Print the verification and postinstall steps\. Print the verification and post\-install steps\.
. .
.TP .TP
\fB\-\-formula\fR \fB\-\-formula\fR
@ -950,10 +950,7 @@ The variables \fBHOMEBREW_PREFIX\fR, \fBHOMEBREW_CELLAR\fR and \fBHOMEBREW_REPOS
The shell can be specified explicitly with a supported shell name parameter\. Unknown shells will output POSIX exports\. The shell can be specified explicitly with a supported shell name parameter\. Unknown shells will output POSIX exports\.
. .
.SS "\fBtap\fR [\fIoptions\fR] [\fIuser\fR\fB/\fR\fIrepo\fR] [\fIURL\fR]" .SS "\fBtap\fR [\fIoptions\fR] [\fIuser\fR\fB/\fR\fIrepo\fR] [\fIURL\fR]"
Tap a formula repository\. Tap a formula repository\. If no arguments are provided, list all installed taps\.
.
.P
If no arguments are provided, list all installed taps\.
. .
.P .P
With \fIURL\fR unspecified, tap a formula repository from GitHub using HTTPS\. Since so many taps are hosted on GitHub, this command is a shortcut for \fBbrew tap\fR \fIuser\fR\fB/\fR\fIrepo\fR \fBhttps://github\.com/\fR\fIuser\fR\fB/homebrew\-\fR\fIrepo\fR\. With \fIURL\fR unspecified, tap a formula repository from GitHub using HTTPS\. Since so many taps are hosted on GitHub, this command is a shortcut for \fBbrew tap\fR \fIuser\fR\fB/\fR\fIrepo\fR \fBhttps://github\.com/\fR\fIuser\fR\fB/homebrew\-\fR\fIrepo\fR\.
@ -982,10 +979,7 @@ Evaluate all the formulae, casks and aliases in the new tap to check validity\.
Force install core taps even under API mode\. Force install core taps even under API mode\.
. .
.SS "\fBtap\-info\fR [\fB\-\-installed\fR] [\fB\-\-json\fR] [\fItap\fR \.\.\.]" .SS "\fBtap\-info\fR [\fB\-\-installed\fR] [\fB\-\-json\fR] [\fItap\fR \.\.\.]"
Show detailed information about one or more \fItap\fRs\. Show detailed information about one or more \fItap\fRs\. If no \fItap\fR names are provided, display brief statistics for all installed taps\.
.
.P
If no \fItap\fR names are provided, display brief statistics for all installed taps\.
. .
.TP .TP
\fB\-\-installed\fR \fB\-\-installed\fR
@ -1075,7 +1069,7 @@ Install formulae without checking for previously installed keg\-only or non\-mig
. .
.TP .TP
\fB\-v\fR, \fB\-\-verbose\fR \fB\-v\fR, \fB\-\-verbose\fR
Print the verification and postinstall steps\. Print the verification and post\-install steps\.
. .
.TP .TP
\fB\-n\fR, \fB\-\-dry\-run\fR \fB\-n\fR, \fB\-\-dry\-run\fR
@ -1153,7 +1147,7 @@ Disable/enable quarantining of downloads (default: enabled)\.
Show formulae and casks that specify \fIformula\fR as a dependency; that is, show dependents of \fIformula\fR\. When given multiple formula arguments, show the intersection of formulae that use \fIformula\fR\. By default, \fBuses\fR shows all formulae and casks that specify \fIformula\fR as a required or recommended dependency for their stable builds\. Show formulae and casks that specify \fIformula\fR as a dependency; that is, show dependents of \fIformula\fR\. When given multiple formula arguments, show the intersection of formulae that use \fIformula\fR\. By default, \fBuses\fR shows all formulae and casks that specify \fIformula\fR as a required or recommended dependency for their stable builds\.
. .
.P .P
Note: \fB\-\-missing\fR and \fB\-\-skip\-recommended\fR have precedence over \fB\-\-include\-*\fR\. \fINote:\fR \fB\-\-missing\fR and \fB\-\-skip\-recommended\fR have precedence over \fB\-\-include\-*\fR\.
. .
.TP .TP
\fB\-\-recursive\fR \fB\-\-recursive\fR
@ -1263,10 +1257,10 @@ Generate plain output even when piped\.
Display Homebrew\'s install path\. \fIDefault:\fR Display Homebrew\'s install path\. \fIDefault:\fR
. .
.IP "\(bu" 4 .IP "\(bu" 4
macOS Intel: \fB/usr/local\fR macOS ARM: \fB/opt/homebrew\fR
. .
.IP "\(bu" 4 .IP "\(bu" 4
macOS ARM: \fB/opt/homebrew\fR macOS Intel: \fB/usr/local\fR
. .
.IP "\(bu" 4 .IP "\(bu" 4
Linux: \fB/home/linuxbrew/\.linuxbrew\fR Linux: \fB/home/linuxbrew/\.linuxbrew\fR
@ -1285,7 +1279,7 @@ List files in Homebrew\'s prefix not installed by Homebrew\.
Outputs nothing and returns a failing status code if \fIformula\fR is not installed\. Outputs nothing and returns a failing status code if \fIformula\fR is not installed\.
. .
.SS "\fB\-\-repository\fR, \fB\-\-repo\fR [\fItap\fR \.\.\.]" .SS "\fB\-\-repository\fR, \fB\-\-repo\fR [\fItap\fR \.\.\.]"
Display where Homebrew\'s git repository is located\. Display where Homebrew\'s Git repository is located\.
. .
.P .P
If \fIuser\fR\fB/\fR\fIrepo\fR are provided, display where tap \fIuser\fR\fB/\fR\fIrepo\fR\'s directory is located\. If \fIuser\fR\fB/\fR\fIrepo\fR are provided, display where tap \fIuser\fR\fB/\fR\fIrepo\fR\'s directory is located\.
@ -1686,7 +1680,7 @@ Treat all named arguments as casks\.
Display the path to the file being used when invoking \fBbrew\fR \fIcmd\fR\. Display the path to the file being used when invoking \fBbrew\fR \fIcmd\fR\.
. .
.SS "\fBcontributions\fR [\-\-user=\fIemail|username\fR] [\fI\-\-repositories\fR\fB=\fR] [\fI\-\-csv\fR]" .SS "\fBcontributions\fR [\-\-user=\fIemail|username\fR] [\fI\-\-repositories\fR\fB=\fR] [\fI\-\-csv\fR]"
Contributions to Homebrew repositories\. Summarise contributions to Homebrew repositories\.
. .
.TP .TP
\fB\-\-repositories\fR \fB\-\-repositories\fR
@ -1852,20 +1846,14 @@ Overwrite the destination formula if it already exists\.
Display the path where \fIformula\fR is located\. Display the path where \fIformula\fR is located\.
. .
.SS "\fBgenerate\-cask\-api\fR [\fB\-\-dry\-run\fR]" .SS "\fBgenerate\-cask\-api\fR [\fB\-\-dry\-run\fR]"
Generates Cask API data files for formulae\.brew\.sh\. Generate \fBhomebrew/cask\fR API data files for \fIhttps://formulae\.brew\.sh\fR\. The generated files are written to the current directory\.
.
.P
The generated files are written to the current directory\.
. .
.TP .TP
\fB\-n\fR, \fB\-\-dry\-run\fR \fB\-n\fR, \fB\-\-dry\-run\fR
Generate API data without writing it to files\. Generate API data without writing it to files\.
. .
.SS "\fBgenerate\-formula\-api\fR [\fB\-\-dry\-run\fR]" .SS "\fBgenerate\-formula\-api\fR [\fB\-\-dry\-run\fR]"
Generates Formula API data files for formulae\.brew\.sh\. Generate \fBhomebrew/core\fR API data files for \fIhttps://formulae\.brew\.sh\fR\. The generated files are written to the current directory\.
.
.P
The generated files are written to the current directory\.
. .
.TP .TP
\fB\-n\fR, \fB\-\-dry\-run\fR \fB\-n\fR, \fB\-\-dry\-run\fR
@ -1912,10 +1900,7 @@ For every library that a keg references, print its dylib path followed by the bi
Print the cached linkage values stored in \fBHOMEBREW_CACHE\fR, set by a previous \fBbrew linkage\fR run\. Print the cached linkage values stored in \fBHOMEBREW_CACHE\fR, set by a previous \fBbrew linkage\fR run\.
. .
.SS "\fBlivecheck\fR, \fBlc\fR [\fIoptions\fR] [\fIformula\fR|\fIcask\fR \.\.\.]" .SS "\fBlivecheck\fR, \fBlc\fR [\fIoptions\fR] [\fIformula\fR|\fIcask\fR \.\.\.]"
Check for newer versions of formulae and/or casks from upstream\. Check for newer versions of formulae and/or casks from upstream\. If no formula or cask argument is passed, the list of formulae and casks to check is taken from \fBHOMEBREW_LIVECHECK_WATCHLIST\fR or \fB~/\.homebrew/livecheck_watchlist\.txt\fR\.
.
.P
If no formula or cask argument is passed, the list of formulae and casks to check is taken from \fBHOMEBREW_LIVECHECK_WATCHLIST\fR or \fB~/\.homebrew/livecheck_watchlist\.txt\fR\.
. .
.TP .TP
\fB\-\-full\-name\fR \fB\-\-full\-name\fR
@ -2155,7 +2140,7 @@ Create a new draft Homebrew/brew release with the appropriate version number and
By default, \fBbrew release\fR will bump the patch version number\. Pass \fB\-\-major\fR or \fB\-\-minor\fR to bump the major or minor version numbers, respectively\. The command will fail if the previous major or minor release was made less than one month ago\. By default, \fBbrew release\fR will bump the patch version number\. Pass \fB\-\-major\fR or \fB\-\-minor\fR to bump the major or minor version numbers, respectively\. The command will fail if the previous major or minor release was made less than one month ago\.
. .
.P .P
Requires write access to the Homebrew/brew repository\. \fINote:\fR Requires write access to the Homebrew/brew repository\.
. .
.TP .TP
\fB\-\-major\fR \fB\-\-major\fR
@ -2443,7 +2428,7 @@ Update the specified list of vendored gems to the latest version\.
Do not generate a new commit upon completion\. Do not generate a new commit upon completion\.
. .
.SH "GLOBAL CASK OPTIONS" .SH "GLOBAL CASK OPTIONS"
These options are applicable to the \fBinstall\fR, \fBreinstall\fR, and \fBupgrade\fR subcommands with the \fB\-\-cask\fR flag\. These options are applicable to the \fBinstall\fR, \fBreinstall\fR, and \fBupgrade\fR subcommands with the \fB\-\-cask\fR switch\.
. .
.TP .TP
\fB\-\-appdir\fR \fB\-\-appdir\fR
@ -3395,7 +3380,7 @@ If set, do not use the GitHub API, e\.g\. for searches or fetching relevant issu
If set, forbid redirects from secure HTTPS to insecure HTTP\. If set, forbid redirects from secure HTTPS to insecure HTTP\.
. .
.IP .IP
\fINote:\fR While ensuring your downloads are fully secure, this is likely to cause from\-source SourceForge, some GNU & GNOME\-hosted formulae to fail to download\. \fINote:\fR while ensuring your downloads are fully secure, this is likely to cause from\-source SourceForge, some GNU & GNOME\-hosted formulae to fail to download\.
. .
.TP .TP
\fBHOMEBREW_NO_INSTALL_CLEANUP\fR \fBHOMEBREW_NO_INSTALL_CLEANUP\fR
@ -3413,7 +3398,7 @@ If set, do not install formulae and casks in homebrew/core and homebrew/cask tap
\fBHOMEBREW_NO_INSTALL_UPGRADE\fR \fBHOMEBREW_NO_INSTALL_UPGRADE\fR
. .
.br .br
If set, \fBbrew install\fR <formula/cask> will not upgrade <formula/cask> if it is installed but outdated\. If set, \fBbrew install\fR \fIformula|cask\fR will not upgrade \fIformula|cask\fR if it is installed but outdated\.
. .
.TP .TP
\fBHOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK\fR \fBHOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK\fR
@ -3431,7 +3416,7 @@ If set, \fBbrew update\fR will not show the list of newly added formulae/casks\.
\fBHOMEBREW_PIP_INDEX_URL\fR \fBHOMEBREW_PIP_INDEX_URL\fR
. .
.br .br
If set, \fBbrew install <formula>\fR will use this URL to download PyPI package resources\. If set, \fBbrew install\fR \fIformula\fR will use this URL to download PyPI package resources\.
. .
.IP .IP
\fIDefault:\fR \fBhttps://pypi\.org/simple\fR\. \fIDefault:\fR \fBhttps://pypi\.org/simple\fR\.
@ -3470,7 +3455,7 @@ If set, enable runtime typechecking using Sorbet\. Set by default for HOMEBREW_D
\fBHOMEBREW_SSH_CONFIG_PATH\fR \fBHOMEBREW_SSH_CONFIG_PATH\fR
. .
.br .br
If set, Homebrew will use the given config file instead of \fB~/\.ssh/config\fR when fetching \fBgit\fR repos over \fBssh\fR\. If set, Homebrew will use the given config file instead of \fB~/\.ssh/config\fR when fetching Git repositories over SSH\.
. .
.IP .IP
\fIDefault:\fR \fB$HOME/\.ssh/config\fR \fIDefault:\fR \fB$HOME/\.ssh/config\fR