From 55fab8849c47c9c11bc87a270522e9f9bbad0824 Mon Sep 17 00:00:00 2001 From: Michael Cho Date: Thu, 26 Sep 2024 10:30:21 -0400 Subject: [PATCH] caveats: `typed: strict` --- Library/Homebrew/caveats.rb | 18 +++++++++++++----- Library/Homebrew/cmd/link.rb | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/caveats.rb b/Library/Homebrew/caveats.rb index 745c21038e..f01c6774d8 100644 --- a/Library/Homebrew/caveats.rb +++ b/Library/Homebrew/caveats.rb @@ -1,4 +1,4 @@ -# typed: true # rubocop:todo Sorbet/StrictSigil +# typed: strict # frozen_string_literal: true require "language/python" @@ -8,12 +8,15 @@ require "utils/service" class Caveats extend Forwardable + sig { returns(Formula) } attr_reader :formula + sig { params(formula: Formula).void } def initialize(formula) @formula = formula end + sig { returns(String) } def caveats caveats = [] begin @@ -46,6 +49,7 @@ class Caveats delegate [:empty?, :to_s] => :caveats + sig { params(skip_reason: T::Boolean).returns(T.nilable(String)) } def keg_only_text(skip_reason: false) return unless formula.keg_only? @@ -99,16 +103,18 @@ class Caveats private + sig { returns(T.nilable(Keg)) } def keg - @keg ||= [formula.prefix, formula.opt_prefix, formula.linked_keg].filter_map do |d| + @keg ||= T.let([formula.prefix, formula.opt_prefix, formula.linked_keg].filter_map do |d| Keg.new(d.resolved_path) rescue nil - end.first + end.first, T.nilable(Keg)) end + sig { params(shell: Symbol).returns(T.nilable(String)) } def function_completion_caveats(shell) - return unless keg + return unless (keg = self.keg) return unless which(shell.to_s, ORIGINAL_PATHS) completion_installed = keg.completion_installed?(shell) @@ -140,9 +146,10 @@ class Caveats end end + sig { returns(T.nilable(String)) } def elisp_caveats return if formula.keg_only? - return unless keg + return unless (keg = self.keg) return unless keg.elisp_installed? <<~EOS @@ -151,6 +158,7 @@ class Caveats EOS end + sig { returns(T.nilable(String)) } def service_caveats return if !formula.service? && !Utils::Service.installed?(formula) && !keg&.plist_installed? return if formula.service? && !formula.service.command? && !Utils::Service.installed?(formula) diff --git a/Library/Homebrew/cmd/link.rb b/Library/Homebrew/cmd/link.rb index c185106751..6725453e6f 100644 --- a/Library/Homebrew/cmd/link.rb +++ b/Library/Homebrew/cmd/link.rb @@ -89,7 +89,7 @@ module Homebrew caveats = Caveats.new(formula) opoo <<~EOS Refusing to link macOS provided/shadowed software: #{keg.name} - #{caveats.keg_only_text(skip_reason: true).strip} + #{T.must(caveats.keg_only_text(skip_reason: true)).strip} EOS next end