From 6918fb94ce65bb93adf63b39a310877d1e2e0b31 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 5 May 2023 08:56:49 +0100 Subject: [PATCH] Enable Sorbet by default for Homebrew developers and developer commands. I've been doing this personally for a few months and not hit any bugs. We already do this for `brew tests`. It will allow us to: - remove manual type checks from all developer commands (Sorbet does a better job with these) - better surface bugs - better surface type signatures - get closer to being able to enable this by default for everyone --- Library/Homebrew/brew.sh | 11 +++++++++++ Library/Homebrew/env_config.rb | 3 ++- docs/Manpage.md | 2 +- manpages/brew.1 | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 35a74283fc..7a15d7507a 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -850,6 +850,9 @@ if [[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" ]] || then export HOMEBREW_DEVELOPER_COMMAND="1" + # Always run developer commands with Sorbet. + export HOMEBREW_SORBET_RUNTIME="1" + if [[ -z "${HOMEBREW_NO_INSTALL_FROM_API}" ]] then NO_INSTALL_FROM_API_COMMANDS=( @@ -883,6 +886,14 @@ then fi fi +# brew readall is currently failing with Sorbet for homebrew/core. +# TODO: fix this and remove this HOMEBREW_COMMAND conditional. +if [[ -n "${HOMEBREW_DEVELOPER}" && "${HOMEBREW_COMMAND}" != "readall" ]] +then + # Always run with Sorbet for Homebrew developers. + export HOMEBREW_SORBET_RUNTIME="1" +fi + if [[ -n "${HOMEBREW_DEVELOPER_COMMAND}" && -z "${HOMEBREW_DEVELOPER}" ]] then if [[ -z "${HOMEBREW_DEV_CMD_RUN}" ]] diff --git a/Library/Homebrew/env_config.rb b/Library/Homebrew/env_config.rb index 5884ea4b05..70bfdabda4 100644 --- a/Library/Homebrew/env_config.rb +++ b/Library/Homebrew/env_config.rb @@ -357,7 +357,8 @@ module Homebrew boolean: true, }, HOMEBREW_SORBET_RUNTIME: { - description: "If set, enable runtime typechecking using Sorbet.", + description: "If set, enable runtime typechecking using Sorbet. " \ + "Set by default for HOMEBREW_DEVELOPER or when running developer commands.", boolean: true, }, HOMEBREW_SSH_CONFIG_PATH: { diff --git a/docs/Manpage.md b/docs/Manpage.md index 380b157e96..e1928d2fe1 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -2275,7 +2275,7 @@ example, run `export HOMEBREW_NO_INSECURE_REDIRECT=1` rather than just
If set along with `HOMEBREW_DEVELOPER`, do not use bottles from older versions of macOS. This is useful in development on new macOS versions. - `HOMEBREW_SORBET_RUNTIME` -
If set, enable runtime typechecking using Sorbet. +
If set, enable runtime typechecking using Sorbet. Set by default for HOMEBREW_DEVELOPER or when running developer commands. - `HOMEBREW_SSH_CONFIG_PATH`
If set, Homebrew will use the given config file instead of `~/.ssh/config` when fetching `git` repos over `ssh`. diff --git a/manpages/brew.1 b/manpages/brew.1 index 084df9013a..d068480138 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -3354,7 +3354,7 @@ If set along with \fBHOMEBREW_DEVELOPER\fR, do not use bottles from older versio \fBHOMEBREW_SORBET_RUNTIME\fR . .br -If set, enable runtime typechecking using Sorbet\. +If set, enable runtime typechecking using Sorbet\. Set by default for HOMEBREW_DEVELOPER or when running developer commands\. . .TP \fBHOMEBREW_SSH_CONFIG_PATH\fR