Skip to content

Commit a76c33f

Browse files
committed
extend/kernel: tighten up some type signatures
Allowing either `Formula`e or `String`s in these methods leads to errors at runtime when one hasn't done `require "formula"` yet. Let's tighten these up so that they only accept `Formula` arguments to guarantee that `require "formula"` has been done before they are called. For callers that need to pass a `String`, we update them to call a version of these methods that accepts only `String`s. See discussion at #20352.
1 parent d746234 commit a76c33f

File tree

3 files changed

+31
-16
lines changed

3 files changed

+31
-16
lines changed

Library/Homebrew/cmd/info.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,9 +371,9 @@ def info_formula(formula)
371371
def decorate_dependencies(dependencies)
372372
deps_status = dependencies.map do |dep|
373373
if dep.satisfied?([])
374-
pretty_installed(dep_display_s(dep))
374+
pretty_installed_string(dep_display_s(dep))
375375
else
376-
pretty_uninstalled(dep_display_s(dep))
376+
pretty_uninstalled_string(dep_display_s(dep))
377377
end
378378
end
379379
deps_status.join(", ")

Library/Homebrew/cmd/update-report.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,7 @@ def dump_new_cask_report
903903
sig { void }
904904
def dump_deleted_formula_report
905905
formulae = select_formula_or_cask(:D).sort.filter_map do |name|
906-
pretty_uninstalled(name) if installed?(name)
906+
pretty_uninstalled_string(name) if installed?(name)
907907
end
908908

909909
output_dump_formula_or_cask_report "Deleted Installed Formulae", formulae
@@ -915,7 +915,7 @@ def dump_deleted_cask_report
915915

916916
casks = select_formula_or_cask(:DC).sort.filter_map do |name|
917917
name = T.must(name.split("/").last)
918-
pretty_uninstalled(name) if cask_installed?(name)
918+
pretty_uninstalled_string(name) if cask_installed?(name)
919919
end
920920

921921
output_dump_formula_or_cask_report "Deleted Installed Casks", casks

Library/Homebrew/extend/kernel.rb

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -234,36 +234,51 @@ def odisabled(method, replacement = nil,
234234
odeprecated(method, replacement, disable: true, disable_on:, disable_for_developers:, caller:)
235235
end
236236

237-
sig { params(formula: T.any(String, Formula)).returns(String) }
237+
sig { params(formula: Formula).returns(String) }
238238
def pretty_installed(formula)
239+
pretty_installed_string(formula.to_s)
240+
end
241+
242+
sig { params(string: String).returns(String) }
243+
def pretty_installed_string(string)
239244
if !$stdout.tty?
240-
formula.to_s
245+
string
241246
elsif Homebrew::EnvConfig.no_emoji?
242-
Formatter.success("#{Tty.bold}#{formula} (installed)#{Tty.reset}")
247+
Formatter.success("#{Tty.bold}#{string} (installed)#{Tty.reset}")
243248
else
244-
"#{Tty.bold}#{formula} #{Formatter.success("✔")}#{Tty.reset}"
249+
"#{Tty.bold}#{string} #{Formatter.success("✔")}#{Tty.reset}"
245250
end
246251
end
247252

248-
sig { params(formula: T.any(String, Formula)).returns(String) }
253+
sig { params(formula: Formula).returns(String) }
249254
def pretty_outdated(formula)
255+
pretty_outdated_string(formula.to_s)
256+
end
257+
258+
sig { params(string: String).returns(String) }
259+
def pretty_outdated_string(string)
250260
if !$stdout.tty?
251-
formula.to_s
261+
string
252262
elsif Homebrew::EnvConfig.no_emoji?
253-
Formatter.error("#{Tty.bold}#{formula} (outdated)#{Tty.reset}")
263+
Formatter.error("#{Tty.bold}#{string} (outdated)#{Tty.reset}")
254264
else
255-
"#{Tty.bold}#{formula} #{Formatter.warning("⚠")}#{Tty.reset}"
265+
"#{Tty.bold}#{string} #{Formatter.warning("⚠")}#{Tty.reset}"
256266
end
257267
end
258268

259-
sig { params(formula: T.any(String, Formula)).returns(String) }
269+
sig { params(formula: Formula).returns(String) }
260270
def pretty_uninstalled(formula)
271+
pretty_uninstalled_string(formula.to_s)
272+
end
273+
274+
sig { params(string: String).returns(String) }
275+
def pretty_uninstalled_string(string)
261276
if !$stdout.tty?
262-
formula.to_s
277+
string
263278
elsif Homebrew::EnvConfig.no_emoji?
264-
Formatter.error("#{Tty.bold}#{formula} (uninstalled)#{Tty.reset}")
279+
Formatter.error("#{Tty.bold}#{string} (uninstalled)#{Tty.reset}")
265280
else
266-
"#{Tty.bold}#{formula} #{Formatter.error("✘")}#{Tty.reset}"
281+
"#{Tty.bold}#{string} #{Formatter.error("✘")}#{Tty.reset}"
267282
end
268283
end
269284

0 commit comments

Comments
 (0)