diff --git a/Library/.rubocop.yml b/Library/.rubocop.yml index c9134c5611..fb376dda25 100644 --- a/Library/.rubocop.yml +++ b/Library/.rubocop.yml @@ -69,7 +69,7 @@ Naming/HeredocDelimiterNaming: Naming/MethodName: IgnoredPatterns: - - '\AHEAD\?\Z' + - '\A(fetch_)?HEAD\?\Z' # Allow dashes in filenames. Naming/FileName: diff --git a/Library/Homebrew/cask/caskroom.rb b/Library/Homebrew/cask/caskroom.rb index ab9c1b4dc0..4aa3ea067b 100644 --- a/Library/Homebrew/cask/caskroom.rb +++ b/Library/Homebrew/cask/caskroom.rb @@ -8,6 +8,8 @@ module Cask # # @api private module Caskroom + extend T::Sig + module_function def path @@ -30,6 +32,7 @@ module Cask SystemCommand.run("/usr/bin/chgrp", args: ["admin", path], sudo: sudo) end + sig { params(config: Config).returns(T::Array[Cask]) } def casks(config: nil) return [] unless path.exist? diff --git a/Library/Homebrew/cask/cmd/upgrade.rb b/Library/Homebrew/cask/cmd/upgrade.rb index 582d2c743e..28bc7b6a55 100644 --- a/Library/Homebrew/cask/cmd/upgrade.rb +++ b/Library/Homebrew/cask/cmd/upgrade.rb @@ -26,6 +26,7 @@ module Cask }], ].freeze + sig { returns(Homebrew::CLI::Parser) } def self.parser super do switch "--force", @@ -56,6 +57,20 @@ module Cask ) end + sig do + params( + casks: Cask, + args: Homebrew::CLI::Args, + force: T.nilable(T::Boolean), + greedy: T.nilable(T::Boolean), + dry_run: T.nilable(T::Boolean), + skip_cask_deps: T.nilable(T::Boolean), + verbose: T.nilable(T::Boolean), + binaries: T.nilable(T::Boolean), + quarantine: T.nilable(T::Boolean), + require_sha: T.nilable(T::Boolean), + ).void + end def self.upgrade_casks( *casks, args:, diff --git a/Library/Homebrew/cli/args.rb b/Library/Homebrew/cli/args.rb index d8f69c6077..b12f32712b 100644 --- a/Library/Homebrew/cli/args.rb +++ b/Library/Homebrew/cli/args.rb @@ -24,7 +24,7 @@ module Homebrew # Can set these because they will be overwritten by freeze_named_args! # (whereas other values below will only be overwritten if passed). - self[:named_args] = NamedArgs.new(parent: self) + self[:named] = NamedArgs.new(parent: self) self[:remaining] = [] end @@ -33,7 +33,7 @@ module Homebrew end def freeze_named_args!(named_args) - self[:named_args] = NamedArgs.new( + self[:named] = NamedArgs.new( *named_args.freeze, override_spec: spec(nil), force_bottle: force_bottle?, @@ -53,8 +53,9 @@ module Homebrew @flags_only = cli_args.select { |a| a.start_with?("--") }.freeze end + sig { returns(NamedArgs) } def named - named_args + self[:named] end def no_named? diff --git a/Library/Homebrew/cli/args.rbi b/Library/Homebrew/cli/args.rbi index 2314e9c8f3..b072016115 100644 --- a/Library/Homebrew/cli/args.rbi +++ b/Library/Homebrew/cli/args.rbi @@ -3,27 +3,62 @@ module Homebrew module CLI class Args < OpenStruct + sig { returns(T.nilable(T::Boolean)) } def devel?; end + sig { returns(T.nilable(T::Boolean)) } def HEAD?; end + sig { returns(T.nilable(T::Boolean)) } def include_test?; end + sig { returns(T.nilable(T::Boolean)) } def build_bottle?; end + sig { returns(T.nilable(T::Boolean)) } def build_universal?; end + sig { returns(T.nilable(T::Boolean)) } def build_from_source?; end - def named_args; end - + sig { returns(T.nilable(T::Boolean)) } def force_bottle?; end + sig { returns(T.nilable(T::Boolean)) } def debug?; end + sig { returns(T.nilable(T::Boolean)) } def quiet?; end + sig { returns(T.nilable(T::Boolean)) } def verbose?; end + + sig { returns(T.nilable(T::Boolean)) } + def fetch_HEAD?; end + + sig { returns(T.nilable(T::Boolean)) } + def cask?; end + + sig { returns(T.nilable(T::Boolean)) } + def dry_run?; end + + sig { returns(T.nilable(T::Boolean)) } + def skip_cask_deps?; end + + sig { returns(T.nilable(T::Boolean)) } + def greedy?; end + + sig { returns(T.nilable(T::Boolean)) } + def force?; end + + sig { returns(T.nilable(T::Boolean)) } + def ignore_pinned?; end + + sig { returns(T.nilable(T::Boolean)) } + def display_times?; end + + sig { returns(T.nilable(T::Boolean)) } + def formula?; end end end end diff --git a/Library/Homebrew/cli/named_args.rb b/Library/Homebrew/cli/named_args.rb index 99ef08e341..c179ee8a6c 100644 --- a/Library/Homebrew/cli/named_args.rb +++ b/Library/Homebrew/cli/named_args.rb @@ -13,7 +13,7 @@ module Homebrew # Helper class for loading formulae/casks from named arguments. # # @api private - class NamedArgs < SimpleDelegator + class NamedArgs < Array def initialize(*args, parent: Args.new, override_spec: nil, force_bottle: false, flags: []) @args = args @override_spec = override_spec diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index ce8ec7bf8a..f7c8da355e 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -92,6 +92,7 @@ module Homebrew end end + sig { void } def upgrade args = upgrade_args.parse @@ -109,6 +110,7 @@ module Homebrew upgrade_outdated_casks(casks, args: args) unless upgrade_formulae end + sig { params(formulae: T::Array[Formula], args: CLI::Args).void } def upgrade_outdated_formulae(formulae, args:) return if args.cask? @@ -176,6 +178,7 @@ module Homebrew Homebrew.messages.display_messages(display_times: args.display_times?) end + sig { params(casks: T::Array[Cask::Cask], args: CLI::Args).void } def upgrade_outdated_casks(casks, args:) return if args.formula? diff --git a/Library/Homebrew/test/cli/parser_spec.rb b/Library/Homebrew/test/cli/parser_spec.rb index 7f1c71c3ad..e5fae5af8e 100644 --- a/Library/Homebrew/test/cli/parser_spec.rb +++ b/Library/Homebrew/test/cli/parser_spec.rb @@ -62,7 +62,7 @@ describe Homebrew::CLI::Parser do it "passes through invalid options" do args = parser.parse(["-v", "named-arg", "--not-a-valid-option"], ignore_invalid_options: true) expect(args.remaining).to eq ["named-arg", "--not-a-valid-option"] - expect(args.named_args).to be_empty + expect(args.named).to be_empty end end