diff --git a/Library/Homebrew/cli/args.rbi b/Library/Homebrew/cli/args.rbi index b072016115..b719d78fa4 100644 --- a/Library/Homebrew/cli/args.rbi +++ b/Library/Homebrew/cli/args.rbi @@ -59,6 +59,12 @@ module Homebrew sig { returns(T.nilable(T::Boolean)) } def formula?; end + + sig { returns(T.nilable(T::Boolean)) } + def zap?; end + + sig { returns(T.nilable(T::Boolean)) } + def ignore_dependencies?; end end end end diff --git a/Library/Homebrew/cli/named_args.rb b/Library/Homebrew/cli/named_args.rb index 87663712c9..9e848f8a29 100644 --- a/Library/Homebrew/cli/named_args.rb +++ b/Library/Homebrew/cli/named_args.rb @@ -5,6 +5,7 @@ require "delegate" require "cask/cask_loader" require "cli/args" +require "formula" require "formulary" require "keg" require "missing_formula" @@ -99,6 +100,7 @@ module Homebrew end private :resolve_formula + sig { returns(T::Array[Formula]) } def to_resolved_formulae @to_resolved_formulae ||= to_formulae_and_casks(only: :formula, method: :resolve) .freeze diff --git a/Library/Homebrew/cli/parser.rb b/Library/Homebrew/cli/parser.rb index 331bc71416..ee00aef2b4 100644 --- a/Library/Homebrew/cli/parser.rb +++ b/Library/Homebrew/cli/parser.rb @@ -264,6 +264,7 @@ module Homebrew [remaining, non_options] end + sig { params(argv: T::Array[String], ignore_invalid_options: T::Boolean).returns(Args) } def parse(argv = ARGV.freeze, ignore_invalid_options: false) raise "Arguments were already parsed!" if @args_parsed diff --git a/Library/Homebrew/cmd/--env.rb b/Library/Homebrew/cmd/--env.rb index 0181ad0f3a..b8c9107e05 100644 --- a/Library/Homebrew/cmd/--env.rb +++ b/Library/Homebrew/cmd/--env.rb @@ -30,6 +30,7 @@ module Homebrew end end + sig { void } def __env args = __env_args.parse diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index bb7968a9bf..dac06da9ee 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -61,13 +61,13 @@ module Homebrew ) if args.zap? - Cask::Cmd::Zap.zap_casks( + T.unsafe(Cask::Cmd::Zap).zap_casks( *casks, verbose: args.verbose?, force: args.force?, ) else - Cask::Cmd::Uninstall.uninstall_casks( + T.unsafe(Cask::Cmd::Uninstall).uninstall_casks( *casks, binaries: EnvConfig.cask_opts_binaries?, verbose: args.verbose?, diff --git a/Library/Homebrew/postinstall.rb b/Library/Homebrew/postinstall.rb index 1c6d5df21d..6856fa07ed 100644 --- a/Library/Homebrew/postinstall.rb +++ b/Library/Homebrew/postinstall.rb @@ -1,4 +1,4 @@ -# typed: false +# typed: strict # frozen_string_literal: true old_trap = trap("INT") { exit! 130 } @@ -17,7 +17,7 @@ begin trap("INT", old_trap) - formula = args.named.to_resolved_formulae.first + formula = T.must(args.named.to_resolved_formulae.first) formula.extend(Debrew::Formula) if args.debug? formula.run_post_install rescue Exception => e # rubocop:disable Lint/RescueException diff --git a/Library/Homebrew/sorbet/rbi/upstream.rbi b/Library/Homebrew/sorbet/rbi/upstream.rbi index 4a77637e5a..d36710b7e2 100644 --- a/Library/Homebrew/sorbet/rbi/upstream.rbi +++ b/Library/Homebrew/sorbet/rbi/upstream.rbi @@ -1,13 +1,16 @@ # typed: strict -class Pathname - # https://github.com/sorbet/sorbet/pull/3676 - sig { params(p1: T.any(String, Pathname), p2: String).returns(T::Array[Pathname]) } - def self.glob(p1, p2 = T.unsafe(nil)); end - - # https://github.com/sorbet/sorbet/pull/3678 - sig { params(with_directory: T::Boolean).returns(T::Array[Pathname]) } - def children(with_directory = true); end +class IO + # https://github.com/sorbet/sorbet/pull/3722 + sig do + type_parameters(:U).params( + fd: T.any(String, Integer), + mode: T.any(Integer, String), + opt: T.nilable(T::Hash[Symbol, T.untyped]), + blk: T.proc.params(io: T.attached_class).returns(T.type_parameter(:U)) + ).returns(T.type_parameter(:U)) + end + def self.open(fd, mode='r', opt=nil, &blk); end end module FileUtils