From 9649ef975c6ac9f8cf1696de8db393bbad5c1316 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Sat, 5 Dec 2020 03:25:50 +0100 Subject: [PATCH] Only install default cask tap automatically on macOS. --- Library/Homebrew/cask/cmd.rb | 2 +- Library/Homebrew/cli/named_args.rb | 6 +----- Library/Homebrew/diagnostic.rb | 12 ++++++------ Library/Homebrew/extend/os/mac/tap.rb | 11 +++++++++++ Library/Homebrew/extend/os/tap.rb | 1 + Library/Homebrew/tap.rb | 6 ++++++ 6 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 Library/Homebrew/extend/os/mac/tap.rb diff --git a/Library/Homebrew/cask/cmd.rb b/Library/Homebrew/cask/cmd.rb index 628ce65d91..abb3764f1b 100644 --- a/Library/Homebrew/cask/cmd.rb +++ b/Library/Homebrew/cask/cmd.rb @@ -167,7 +167,7 @@ module Cask args = self.class.parser.parse(argv, ignore_invalid_options: true) - Tap.default_cask_tap.install unless Tap.default_cask_tap.installed? + Tap.install_default_cask_tap_if_necessary command, argv = detect_internal_command(*argv) || detect_external_command(*argv) || diff --git a/Library/Homebrew/cli/named_args.rb b/Library/Homebrew/cli/named_args.rb index ff960b57a0..16a80ae2c4 100644 --- a/Library/Homebrew/cli/named_args.rb +++ b/Library/Homebrew/cli/named_args.rb @@ -97,11 +97,7 @@ module Homebrew begin return Cask::CaskLoader.load(name, config: Cask::Config.from_args(@parent)) rescue Cask::CaskUnavailableError => e - default_cask_tap = Tap.default_cask_tap - unless default_cask_tap.installed? - default_cask_tap.install - retry - end + retry if Tap.install_default_cask_tap_if_necessary raise e if only == :cask end diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb index aaecac87e0..74c9aca8cd 100644 --- a/Library/Homebrew/diagnostic.rb +++ b/Library/Homebrew/diagnostic.rb @@ -560,10 +560,10 @@ module Homebrew end def check_casktap_git_origin - cask_tap = Tap.default_cask_tap - return unless cask_tap.installed? + default_cask_tap = Tap.default_cask_tap + return unless default_cask_tap.installed? - examine_git_origin(cask_tap.path, cask_tap.remote) + examine_git_origin(default_cask_tap.path, default_cask_tap.remote) end sig { returns(T.nilable(String)) } @@ -921,12 +921,12 @@ module Homebrew end def check_cask_taps - default_tap = Tap.default_cask_tap - alt_taps = Tap.select { |t| t.cask_dir.exist? && t != default_tap } + default_cask_tap = Tap.default_cask_tap + alt_taps = Tap.select { |t| t.cask_dir.exist? && t != default_cask_tap } error_tap_paths = [] - add_info "Homebrew Cask Taps:", ([default_tap, *alt_taps].map do |tap| + add_info "Homebrew Cask Taps:", ([default_cask_tap, *alt_taps].map do |tap| if tap.path.blank? none_string else diff --git a/Library/Homebrew/extend/os/mac/tap.rb b/Library/Homebrew/extend/os/mac/tap.rb new file mode 100644 index 0000000000..495901ea68 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/tap.rb @@ -0,0 +1,11 @@ +# typed: true +# frozen_string_literal: true + +class Tap + def self.install_default_cask_tap_if_necessary + return false if default_cask_tap.installed? + + default_cask_tap.install + true + end +end diff --git a/Library/Homebrew/extend/os/tap.rb b/Library/Homebrew/extend/os/tap.rb index 7ad0ad531e..b3ec23982f 100644 --- a/Library/Homebrew/extend/os/tap.rb +++ b/Library/Homebrew/extend/os/tap.rb @@ -2,3 +2,4 @@ # frozen_string_literal: true require "extend/os/linux/tap" if OS.linux? +require "extend/os/mac/tap" if OS.mac? diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index b2c87dccdc..d01c104edc 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -60,10 +60,16 @@ class Tap fetch(match[:user], match[:repo]) end + sig { returns(T.attached_class) } def self.default_cask_tap @default_cask_tap ||= fetch("Homebrew", "cask") end + sig { returns(T::Boolean) } + def self.install_default_cask_tap_if_necessary + false + end + extend Enumerable # The user name of this {Tap}. Usually, it's the GitHub username of