diff --git a/Library/Homebrew/dev-cmd/unbottled.rb b/Library/Homebrew/dev-cmd/unbottled.rb index 359724dfbb..b64c1fbb43 100644 --- a/Library/Homebrew/dev-cmd/unbottled.rb +++ b/Library/Homebrew/dev-cmd/unbottled.rb @@ -1,4 +1,4 @@ -# typed: true +# typed: strict # frozen_string_literal: true require "abstract_command" @@ -34,11 +34,11 @@ module Homebrew def run Formulary.enable_factory_cache! - @bottle_tag = if (tag = args.tag) + @bottle_tag = T.let(if (tag = args.tag) Utils::Bottles::Tag.from_symbol(tag.to_sym) else Utils::Bottles.tag - end + end, T.nilable(Utils::Bottles::Tag)) if args.lost? if args.named.present? @@ -51,13 +51,13 @@ module Homebrew end end - os = @bottle_tag.system - arch = if Hardware::CPU::INTEL_ARCHS.include?(@bottle_tag.arch) + os = T.must(@bottle_tag).system + arch = if Hardware::CPU::INTEL_ARCHS.include?(T.must(@bottle_tag).arch) :intel - elsif Hardware::CPU::ARM_ARCHS.include?(@bottle_tag.arch) + elsif Hardware::CPU::ARM_ARCHS.include?(T.must(@bottle_tag).arch) :arm else - raise "Unknown arch #{@bottle_tag.arch}." + raise "Unknown arch #{T.must(@bottle_tag).arch}." end Homebrew::SimulateSystem.with(os:, arch:) do @@ -98,12 +98,13 @@ module Homebrew ["installs", formula_installs] end - output_unbottled(formulae, deps_hash, noun, hash, args.named.present?) + output_unbottled(formulae, deps_hash, noun, T.must(hash), args.named.present?) end end private + sig { params(all: T::Boolean).returns([T::Array[Formula], T::Array[Formula], T.nilable(T::Hash[Symbol, Integer])]) } def formulae_all_installs_from_args(all) if args.named.present? formulae = all_formulae = args.named.to_formulae @@ -115,7 +116,7 @@ module Homebrew formulae = all_formulae = Formula.all(eval_all: args.eval_all?) - @sort = " (sorted by number of dependents)" + @sort = T.let(" (sorted by number of dependents)", T.nilable(String)) elsif all formulae = all_formulae = Formula.all(eval_all: args.eval_all?) else @@ -142,7 +143,7 @@ module Homebrew nil end end - @sort = " (sorted by installs in the last 90 days; top 10,000 only)" + @sort = T.let(" (sorted by installs in the last 90 days; top 10,000 only)", T.nilable(String)) all_formulae = Formula.all(eval_all: args.eval_all?) end @@ -151,9 +152,10 @@ module Homebrew formulae = Array(formulae).reject(&:deprecated?) if formulae.present? all_formulae = Array(all_formulae).reject(&:deprecated?) if all_formulae.present? - [formulae, all_formulae, formula_installs] + [T.let(formulae, T::Array[Formula]), T.let(all_formulae, T::Array[Formula]), T.let(T.must(formula_installs), T.nilable(T::Hash[Symbol, Integer]))] end + sig { params(all_formulae: T.untyped).returns([T::Hash[String, T.untyped], T::Hash[String, T.untyped]]) } def deps_uses_from_formulae(all_formulae) ohai "Populating dependency tree..." @@ -175,6 +177,7 @@ module Homebrew [deps_hash, uses_hash] end + sig { params(formulae: T::Array[Formula]).returns(NilClass) } def output_total(formulae) ohai "Unbottled :#{@bottle_tag} formulae" unbottled_formulae = 0 @@ -188,6 +191,7 @@ module Homebrew puts "#{unbottled_formulae}/#{formulae.length} remaining." end + sig { params(formulae: T::Array[Formula], deps_hash: T::Hash[T.any(Symbol, String), T.untyped], noun: T.nilable(String), hash: T::Hash[T.any(Symbol, String), T.untyped], any_named_args: T::Boolean).returns(NilClass) } def output_unbottled(formulae, deps_hash, noun, hash, any_named_args) ohai ":#{@bottle_tag} bottle status#{@sort}" any_found = T.let(false, T::Boolean) @@ -201,7 +205,7 @@ module Homebrew end requirements = f.recursive_requirements - if @bottle_tag.linux? + if T.must(@bottle_tag).linux? if requirements.any? { |r| r.is_a?(MacOSRequirement) && !r.version } puts "#{Tty.bold}#{Tty.red}#{name}#{Tty.reset}: requires macOS" if any_named_args next @@ -210,7 +214,7 @@ module Homebrew puts "#{Tty.bold}#{Tty.red}#{name}#{Tty.reset}: requires Linux" if any_named_args next else - macos_version = @bottle_tag.to_macos_version + macos_version = T.must(@bottle_tag).to_macos_version macos_satisfied = requirements.all? do |r| case r when MacOSRequirement @@ -222,7 +226,7 @@ module Homebrew Version.new(MacOS::Xcode.latest_version(macos: macos_version)) >= r.version when ArchRequirement - r.arch == @bottle_tag.arch + r.arch == T.must(@bottle_tag).arch else true end @@ -258,6 +262,7 @@ module Homebrew puts "No unbottled dependencies found!" end + sig { returns(NilClass) } def output_lost_bottles ohai ":#{@bottle_tag} lost bottles"