2020-10-10 14:16:11 +02:00
|
|
|
# typed: true
|
2020-04-05 15:43:59 +01:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Homebrew
|
2020-08-14 04:35:58 +02:00
|
|
|
# Helper module for querying Homebrew-specific environment variables.
|
|
|
|
#
|
|
|
|
# @api private
|
2020-04-05 15:43:59 +01:00
|
|
|
module EnvConfig
|
2020-10-20 12:03:48 +02:00
|
|
|
extend T::Sig
|
|
|
|
|
2020-04-05 15:43:59 +01:00
|
|
|
module_function
|
|
|
|
|
|
|
|
ENVS = {
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_ADDITIONAL_GOOGLE_ANALYTICS_ID: {
|
2021-10-13 13:40:54 -05:00
|
|
|
description: "Additional Google Analytics tracking ID to emit user behaviour analytics to. " \
|
|
|
|
"For more information, see: <https://docs.brew.sh/Analytics>",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_ARCH: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Linux only: Pass this value to a type name representing the compiler's `-march` option.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default: "native",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_ARTIFACT_DOMAIN: {
|
2021-01-26 15:21:24 -05:00
|
|
|
description: "Prefix all download URLs, including those for bottles, with this value. " \
|
|
|
|
"For example, `HOMEBREW_ARTIFACT_DOMAIN=http://localhost:8080` will cause a " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"formula with the URL `https://example.com/foo.tar.gz` to instead download from " \
|
|
|
|
"`http://localhost:8080/example.com/foo.tar.gz`.",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_AUTO_UPDATE_SECS: {
|
2021-11-25 09:10:59 +00:00
|
|
|
description: "Run `brew update` once every `HOMEBREW_AUTO_UPDATE_SECS` seconds before some commands, " \
|
|
|
|
"e.g. `brew install`, `brew upgrade` and `brew tap`. Alternatively, " \
|
|
|
|
"disable auto-update entirely with HOMEBREW_NO_AUTO_UPDATE.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default: 300,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_BAT: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, use `bat` for the `brew cat` command.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_BAT_CONFIG_PATH: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Use this as the `bat` configuration file.",
|
2021-09-05 23:11:03 +08:00
|
|
|
default_text: "`$HOME/.config/bat/config`.",
|
2020-05-02 18:21:36 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_BOOTSNAP: {
|
2021-02-25 11:06:50 +00:00
|
|
|
description: "If set, use Bootsnap to speed up repeated `brew` calls. "\
|
|
|
|
"A no-op when using Homebrew's vendored, relocatable Ruby on macOS (as it doesn't work).",
|
2021-02-02 11:52:56 +00:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_BOTTLE_DOMAIN: {
|
2021-07-29 21:15:40 +01:00
|
|
|
description: "Use this URL as the download mirror for bottles. " \
|
|
|
|
"If bottles at that URL are temporarily unavailable, " \
|
|
|
|
"the default bottle domain will be used as a fallback mirror. " \
|
|
|
|
"For example, `HOMEBREW_BOTTLE_DOMAIN=http://localhost:8080` will cause all bottles to " \
|
|
|
|
"download from the prefix `http://localhost:8080/`. " \
|
|
|
|
"If bottles are not available at `HOMEBREW_BOTTLE_DOMAIN` " \
|
|
|
|
"they will be downloaded from the default bottle domain.",
|
2021-10-20 11:01:38 +01:00
|
|
|
default_text: "`https://ghcr.io/v2/homebrew/core`.",
|
2021-07-29 21:15:40 +01:00
|
|
|
default: HOMEBREW_BOTTLE_DEFAULT_DOMAIN,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_BREW_GIT_REMOTE: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Use this URL as the Homebrew/brew `git`(1) remote.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default: HOMEBREW_BREW_DEFAULT_GIT_REMOTE,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_BROWSER: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this as the browser when opening project homepages.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default_text: "`$BROWSER` or the OS's default browser.",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CACHE: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Use this directory as the download cache.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default_text: "macOS: `$HOME/Library/Caches/Homebrew`, " \
|
|
|
|
"Linux: `$XDG_CACHE_HOME/Homebrew` or `$HOME/.cache/Homebrew`.",
|
|
|
|
default: HOMEBREW_DEFAULT_CACHE,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CASK_OPTS: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Append these options to all `cask` commands. All `--*dir` options, " \
|
2020-11-12 10:40:41 -05:00
|
|
|
"`--language`, `--require-sha`, `--no-quarantine` and `--no-binaries` are supported. " \
|
2020-08-01 02:30:46 +02:00
|
|
|
"For example, you might add something like the following to your " \
|
2020-11-12 10:40:41 -05:00
|
|
|
"`~/.profile`, `~/.bash_profile`, or `~/.zshenv`:\n\n" \
|
|
|
|
' `export HOMEBREW_CASK_OPTS="--appdir=~/Applications --fontdir=/Library/Fonts"`',
|
2020-08-05 11:50:01 +02:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS: {
|
2020-12-09 10:36:02 +00:00
|
|
|
description: "If set, `brew install`, `brew upgrade` and `brew reinstall` will cleanup all formulae " \
|
|
|
|
"when this number of days has passed.",
|
|
|
|
default: 30,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CLEANUP_MAX_AGE_DAYS: {
|
2020-04-20 10:33:15 +01:00
|
|
|
description: "Cleanup all cached files older than this many days.",
|
|
|
|
default: 120,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_COLOR: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, force colour output on non-TTY outputs.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CORE_GIT_REMOTE: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Use this URL as the Homebrew/homebrew-core `git`(1) remote.",
|
2021-10-20 11:01:38 +01:00
|
|
|
default_text: "`https://github.com/Homebrew/homebrew-core`.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default: HOMEBREW_CORE_DEFAULT_GIT_REMOTE,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CURLRC: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, do not pass `--disable` when invoking `curl`(1), which disables the " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"use of `curlrc`.",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CURL_RETRIES: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Pass the given retry count to `--retry` when invoking `curl`(1).",
|
2020-04-05 15:43:59 +01:00
|
|
|
default: 3,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_CURL_VERBOSE: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, pass `--verbose` when invoking `curl`(1).",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_DEVELOPER: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, tweak behaviour to be more relevant for Homebrew developers (active or " \
|
|
|
|
"budding) by e.g. turning warnings into errors.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_DISABLE_LOAD_FORMULA: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, refuse to load formulae. This is useful when formulae are not trusted (such " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"as in pull requests).",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_DISPLAY: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this X11 display when opening a page in a browser, for example with " \
|
2020-11-12 10:40:41 -05:00
|
|
|
"`brew home`. Primarily useful on Linux.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default_text: "`$DISPLAY`.",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_DISPLAY_INSTALL_TIMES: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, print install times for each formula at the end of the run.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_EDITOR: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this editor when editing a single formula, or several formulae in the " \
|
2020-11-12 10:40:41 -05:00
|
|
|
"same directory." \
|
|
|
|
"\n\n *Note:* `brew edit` will open all of Homebrew as discontinuous files " \
|
|
|
|
"and directories. Visual Studio Code can handle this correctly in project mode, but many " \
|
|
|
|
"editors will do strange things in this case.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default_text: "`$EDITOR` or `$VISUAL`.",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_FAIL_LOG_LINES: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Output this many lines of output on formula `system` failures.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default: 15,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_FORBIDDEN_LICENSES: {
|
2020-07-09 17:42:08 +08:00
|
|
|
description: "A space-separated list of licenses. Homebrew will refuse to install a " \
|
2020-11-12 10:40:48 -05:00
|
|
|
"formula if it or any of its dependencies has a license on this list.",
|
2020-07-01 21:45:47 +08:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_FORCE_BREWED_CA_CERTIFICATES: {
|
2021-10-01 15:06:04 +01:00
|
|
|
description: "If set, always use a Homebrew-installed `ca-certificates` rather than the system version. " \
|
|
|
|
"Automatically set if the system version is too old.",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_FORCE_BREWED_CURL: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, always use a Homebrew-installed `curl`(1) rather than the system version. " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"Automatically set if the system version of `curl` is too old.",
|
2020-04-09 19:33:50 +10:00
|
|
|
boolean: true,
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_FORCE_BREWED_GIT: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, always use a Homebrew-installed `git`(1) rather than the system version. " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"Automatically set if the system version of `git` is too old.",
|
2020-04-09 19:33:50 +10:00
|
|
|
boolean: true,
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_FORCE_VENDOR_RUBY: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, always use Homebrew's vendored, relocatable Ruby version even if the system version " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"of Ruby is new enough.",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_GITHUB_API_TOKEN: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this personal access token for the GitHub API, for features such as " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"`brew search`. You can create one at <https://github.com/settings/tokens>. If set, " \
|
|
|
|
"GitHub will allow you a greater number of API requests. For more information, see: " \
|
2020-11-12 10:40:41 -05:00
|
|
|
"<https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting>" \
|
|
|
|
"\n\n *Note:* Homebrew doesn't require permissions for any of the scopes, but some " \
|
|
|
|
"developer commands may require additional permissions.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_GITHUB_PACKAGES_TOKEN: {
|
2021-03-11 15:15:35 +00:00
|
|
|
description: "Use this GitHub personal access token when accessing the GitHub Packages Registry "\
|
|
|
|
"(where bottles may be stored).",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_DOCKER_REGISTRY_TOKEN: {
|
2021-07-26 19:07:23 +03:00
|
|
|
description: "Use this bearer token for authenticating with a Docker registry proxying GitHub Packages.",
|
2021-07-25 08:41:30 +03:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_GITHUB_PACKAGES_USER: {
|
2021-03-11 15:15:35 +00:00
|
|
|
description: "Use this username when accessing the GitHub Packages Registry (where bottles may be stored).",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_GIT_EMAIL: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Set the Git author and committer email to this value.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_GIT_NAME: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Set the Git author and committer name to this value.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_INSTALL_BADGE: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Print this text before the installation summary of each successful build.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default_text: 'The "Beer Mug" emoji.',
|
|
|
|
default: "🍺",
|
|
|
|
},
|
2021-10-22 11:46:54 -04:00
|
|
|
HOMEBREW_INSTALL_FROM_API: {
|
2021-10-25 11:25:07 +01:00
|
|
|
description: "If set, install formulae and casks in homebrew/core and homebrew/cask taps using Homebrew's " \
|
2021-10-27 02:09:55 -04:00
|
|
|
"API instead of needing (large, slow) local checkouts of these repositories." \
|
2021-10-27 11:43:15 +01:00
|
|
|
"\n\n *Note:* Setting HOMEBREW_INSTALL_FROM_API is not compatible with Homebrew's " \
|
|
|
|
"developer mode so will error (as Homebrew development needs a full clone).",
|
2021-10-22 11:46:54 -04:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_LIVECHECK_WATCHLIST: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Consult this file for the list of formulae to check by default when no formula argument " \
|
|
|
|
"is passed to `brew livecheck`.",
|
2020-08-02 00:59:36 +05:30
|
|
|
default: "$HOME/.brew_livecheck_watchlist",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_LOGS: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "Use this directory to store log files.",
|
|
|
|
default_text: "macOS: `$HOME/Library/Logs/Homebrew`, " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"Linux: `$XDG_CACHE_HOME/Homebrew/Logs` or `$HOME/.cache/Homebrew/Logs`.",
|
|
|
|
default: HOMEBREW_DEFAULT_LOGS,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_MAKE_JOBS: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this value as the number of parallel jobs to run when building with `make`(1).",
|
2020-04-05 15:43:59 +01:00
|
|
|
default_text: "The number of available CPU cores.",
|
|
|
|
default: lambda {
|
|
|
|
require "os"
|
|
|
|
require "hardware"
|
|
|
|
Hardware::CPU.cores
|
|
|
|
},
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_ANALYTICS: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "If set, do not send analytics. For more information, see: <https://docs.brew.sh/Analytics>",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_AUTO_UPDATE: {
|
2021-11-25 09:10:59 +00:00
|
|
|
description: "If set, do not automatically update before running some commands, e.g. " \
|
|
|
|
"`brew install`, `brew upgrade` and `brew tap`. Alternatively, " \
|
|
|
|
"run this less often by setting HOMEBREW_AUTO_UPDATE_SECS to a value higher than the default.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_BOOTSNAP: {
|
2021-02-02 11:52:56 +00:00
|
|
|
description: "If set, do not use Bootsnap to speed up repeated `brew` calls.",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: {
|
2021-11-25 09:10:59 +00:00
|
|
|
description: "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>`.",
|
2020-10-06 10:50:51 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_CLEANUP_FORMULAE: {
|
2021-08-27 18:00:43 +08:00
|
|
|
description: "A comma-separated list of formulae. Homebrew will refuse to clean up a " \
|
|
|
|
"formula if it appears on this list.",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_COLOR: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, do not print text with colour added.",
|
2020-04-05 15:43:59 +01:00
|
|
|
default_text: "`$NO_COLOR`.",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_COMPAT: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, disable all use of legacy compatibility code.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_EMOJI: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, do not print `HOMEBREW_INSTALL_BADGE` on a successful build." \
|
2020-11-12 10:40:48 -05:00
|
|
|
"\n\n *Note:* Will only try to print emoji on OS X Lion or newer.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_GITHUB_API: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, do not use the GitHub API, e.g. for searches or fetching relevant issues " \
|
2020-11-12 10:40:48 -05:00
|
|
|
"after a failed install.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_INSECURE_REDIRECT: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, forbid redirects from secure HTTPS to insecure HTTP." \
|
2020-04-05 15:43:59 +01:00
|
|
|
"\n\n *Note:* While ensuring your downloads are fully secure, this is likely to cause " \
|
2020-11-12 10:40:48 -05:00
|
|
|
"from-source SourceForge, some GNU & GNOME-hosted formulae to fail to download.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_INSTALL_CLEANUP: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, `brew install`, `brew upgrade` and `brew reinstall` will never automatically " \
|
2020-12-09 10:36:02 +00:00
|
|
|
"cleanup installed/upgraded/reinstalled formulae or all formulae every " \
|
2021-11-25 09:10:59 +00:00
|
|
|
"`HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS` days. Alternatively, HOMEBREW_NO_CLEANUP_FORMULAE " \
|
|
|
|
"allows specifying specific formulae to not clean up.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_NO_INSTALL_UPGRADE: {
|
2021-11-25 09:10:59 +00:00
|
|
|
description: "If set, `brew install <formula>` will not upgrade `<formula>` if it is installed but " \
|
|
|
|
"outdated.",
|
2021-06-10 15:06:12 -04:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_PRY: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, use Pry for the `brew irb` command.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_SIMULATE_MACOS_ON_LINUX: {
|
2021-03-03 00:30:40 +00:00
|
|
|
description: "If set, running Homebrew on Linux will simulate certain macOS code paths. This is useful " \
|
2021-10-20 11:01:38 +01:00
|
|
|
"when auditing macOS formulae while on Linux.",
|
2021-08-29 21:40:35 +02:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_SSH_CONFIG_PATH: {
|
2021-10-19 08:35:12 -05:00
|
|
|
description: "If set, Homebrew will use the given config file instead of `~/.ssh/config` when fetching " \
|
|
|
|
"`git` repos over `ssh`.",
|
|
|
|
default_text: "`$HOME/.ssh/config`",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_SKIP_OR_LATER_BOTTLES: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "If set along with `HOMEBREW_DEVELOPER`, do not use bottles from older versions " \
|
2020-04-09 19:33:50 +10:00
|
|
|
"of macOS. This is useful in development on new macOS versions.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_SORBET_RUNTIME: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "If set, enable runtime typechecking using Sorbet.",
|
2020-10-09 12:11:23 +02:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_SVN: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this as the `svn`(1) binary.",
|
|
|
|
default_text: "A Homebrew-built Subversion (if installed), or the system-provided binary.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_TEMP: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this path as the temporary directory for building packages. Changing " \
|
|
|
|
"this may be needed if your system temporary directory and Homebrew prefix are on " \
|
|
|
|
"different volumes, as macOS has trouble moving symlinks across volumes when the target " \
|
|
|
|
"does not yet exist. This issue typically occurs when using FileVault or custom SSD " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"configurations.",
|
|
|
|
default_text: "macOS: `/private/tmp`, Linux: `/tmp`.",
|
|
|
|
default: HOMEBREW_DEFAULT_TEMP,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "If set, `brew update` only lists updates to installed software.",
|
2020-09-11 11:59:47 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_UPDATE_TO_TAG: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, always use the latest stable tag (even if developer commands " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"have been run).",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_VERBOSE: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, always assume `--verbose` when running commands.",
|
2020-04-05 15:43:59 +01:00
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_DEBUG: {
|
2020-09-03 19:44:32 +02:00
|
|
|
description: "If set, always assume `--debug` when running commands.",
|
|
|
|
boolean: true,
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
HOMEBREW_VERBOSE_USING_DOTS: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "If set, verbose output will print a `.` no more than once a minute. This can be " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"useful to avoid long-running Homebrew commands being killed due to no output.",
|
2020-04-09 19:33:50 +10:00
|
|
|
boolean: true,
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
all_proxy: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this SOCKS5 proxy for `curl`(1), `git`(1) and `svn`(1) when downloading through Homebrew.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
ftp_proxy: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this FTP proxy for `curl`(1), `git`(1) and `svn`(1) when downloading through Homebrew.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
http_proxy: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this HTTP proxy for `curl`(1), `git`(1) and `svn`(1) when downloading through Homebrew.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
https_proxy: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "Use this HTTPS proxy for `curl`(1), `git`(1) and `svn`(1) when downloading through Homebrew.",
|
2020-04-05 15:43:59 +01:00
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
no_proxy: {
|
2020-04-09 19:33:50 +10:00
|
|
|
description: "A comma-separated list of hostnames and domain names excluded " \
|
2020-04-05 15:43:59 +01:00
|
|
|
"from proxying by `curl`(1), `git`(1) and `svn`(1) when downloading through Homebrew.",
|
|
|
|
},
|
2021-10-20 11:01:38 +01:00
|
|
|
SUDO_ASKPASS: {
|
2020-11-12 10:40:48 -05:00
|
|
|
description: "If set, pass the `-A` option when calling `sudo`(8).",
|
2020-08-01 02:30:46 +02:00
|
|
|
},
|
2020-04-05 15:43:59 +01:00
|
|
|
}.freeze
|
|
|
|
|
|
|
|
def env_method_name(env, hash)
|
|
|
|
method_name = env.to_s
|
|
|
|
.sub(/^HOMEBREW_/, "")
|
|
|
|
.downcase
|
|
|
|
method_name = "#{method_name}?" if hash[:boolean]
|
|
|
|
method_name
|
|
|
|
end
|
|
|
|
|
2020-09-11 10:29:21 +01:00
|
|
|
CUSTOM_IMPLEMENTATIONS = %w[
|
|
|
|
HOMEBREW_MAKE_JOBS
|
|
|
|
HOMEBREW_CASK_OPTS
|
|
|
|
].freeze
|
|
|
|
|
2020-04-05 15:43:59 +01:00
|
|
|
ENVS.each do |env, hash|
|
|
|
|
method_name = env_method_name(env, hash)
|
|
|
|
env = env.to_s
|
|
|
|
|
|
|
|
if hash[:boolean]
|
|
|
|
define_method(method_name) do
|
|
|
|
ENV[env].present?
|
|
|
|
end
|
|
|
|
elsif hash[:default].present?
|
|
|
|
# Needs a custom implementation.
|
2020-09-11 10:29:21 +01:00
|
|
|
next if CUSTOM_IMPLEMENTATIONS.include?(env)
|
2020-04-05 15:43:59 +01:00
|
|
|
|
|
|
|
define_method(method_name) do
|
|
|
|
ENV[env].presence || hash.fetch(:default).to_s
|
|
|
|
end
|
|
|
|
else
|
|
|
|
define_method(method_name) do
|
|
|
|
ENV[env].presence
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Needs a custom implementation.
|
2020-11-20 14:20:38 +01:00
|
|
|
sig { returns(String) }
|
2020-04-05 15:43:59 +01:00
|
|
|
def make_jobs
|
|
|
|
jobs = ENV["HOMEBREW_MAKE_JOBS"].to_i
|
|
|
|
return jobs.to_s if jobs.positive?
|
|
|
|
|
|
|
|
ENVS.fetch(:HOMEBREW_MAKE_JOBS)
|
|
|
|
.fetch(:default)
|
|
|
|
.call
|
|
|
|
.to_s
|
|
|
|
end
|
2020-08-05 11:50:01 +02:00
|
|
|
|
2020-10-20 12:03:48 +02:00
|
|
|
sig { returns(T::Array[String]) }
|
2020-08-05 11:50:01 +02:00
|
|
|
def cask_opts
|
|
|
|
Shellwords.shellsplit(ENV.fetch("HOMEBREW_CASK_OPTS", ""))
|
|
|
|
end
|
|
|
|
|
2020-10-20 12:03:48 +02:00
|
|
|
sig { returns(T::Boolean) }
|
2020-08-05 10:28:58 -04:00
|
|
|
def cask_opts_binaries?
|
|
|
|
cask_opts.reverse_each do |opt|
|
|
|
|
return true if opt == "--binaries"
|
|
|
|
return false if opt == "--no-binaries"
|
|
|
|
end
|
|
|
|
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
2020-10-20 12:03:48 +02:00
|
|
|
sig { returns(T::Boolean) }
|
2020-08-05 11:50:01 +02:00
|
|
|
def cask_opts_quarantine?
|
|
|
|
cask_opts.reverse_each do |opt|
|
|
|
|
return true if opt == "--quarantine"
|
|
|
|
return false if opt == "--no-quarantine"
|
|
|
|
end
|
|
|
|
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
2020-10-20 12:03:48 +02:00
|
|
|
sig { returns(T::Boolean) }
|
2020-08-05 11:50:01 +02:00
|
|
|
def cask_opts_require_sha?
|
|
|
|
cask_opts.include?("--require-sha")
|
|
|
|
end
|
2020-04-05 15:43:59 +01:00
|
|
|
end
|
|
|
|
end
|