From 4deb4c18138b80369d10622a9450e85f00b2c2c3 Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Tue, 14 Feb 2023 15:39:32 -0800 Subject: [PATCH] Enable typing in Requirement classes --- Library/Homebrew/requirements/codesign_requirement.rb | 7 ++++--- Library/Homebrew/requirements/macos_requirement.rb | 9 +++++---- Library/Homebrew/requirements/xcode_requirement.rb | 7 +++++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/requirements/codesign_requirement.rb b/Library/Homebrew/requirements/codesign_requirement.rb index 06caebda71..c1c18d0d2f 100644 --- a/Library/Homebrew/requirements/codesign_requirement.rb +++ b/Library/Homebrew/requirements/codesign_requirement.rb @@ -1,4 +1,4 @@ -# typed: false +# typed: true # frozen_string_literal: true # A requirement on a code-signing identity. @@ -11,8 +11,8 @@ class CodesignRequirement < Requirement def initialize(tags) options = tags.shift - raise ArgumentError("CodesignRequirement requires an options Hash!") unless options.is_a?(Hash) - raise ArgumentError("CodesignRequirement requires an identity key!") unless options.key?(:identity) + raise ArgumentError, "CodesignRequirement requires an options Hash!" unless options.is_a?(Hash) + raise ArgumentError, "CodesignRequirement requires an identity key!" unless options.key?(:identity) @identity = options.fetch(:identity) @with = options.fetch(:with, "code signing") @@ -21,6 +21,7 @@ class CodesignRequirement < Requirement end satisfy(build_env: false) do + T.bind(self, CodesignRequirement) mktemp do FileUtils.cp "/usr/bin/false", "codesign_check" quiet_system "/usr/bin/codesign", "-f", "-s", @identity, diff --git a/Library/Homebrew/requirements/macos_requirement.rb b/Library/Homebrew/requirements/macos_requirement.rb index f1f855ae16..5bc13680ce 100644 --- a/Library/Homebrew/requirements/macos_requirement.rb +++ b/Library/Homebrew/requirements/macos_requirement.rb @@ -1,4 +1,4 @@ -# typed: false +# typed: true # frozen_string_literal: true require "requirement" @@ -55,6 +55,7 @@ class MacOSRequirement < Requirement end satisfy(build_env: false) do + T.bind(self, MacOSRequirement) next Array(@version).any? { |v| MacOS.version.public_send(@comparator, v) } if version_specified? next true if OS.mac? next true if @version @@ -115,10 +116,10 @@ class MacOSRequirement < Requirement end end - def to_json(*args) + def to_json(options) comp = @comparator.to_s - return { comp => @version.map(&:to_s) }.to_json(*args) if @version.is_a?(Array) + return { comp => @version.map(&:to_s) }.to_json(options) if @version.is_a?(Array) - { comp => [@version.to_s] }.to_json(*args) + { comp => [@version.to_s] }.to_json(options) end end diff --git a/Library/Homebrew/requirements/xcode_requirement.rb b/Library/Homebrew/requirements/xcode_requirement.rb index ccc8412b84..80de0ef42b 100644 --- a/Library/Homebrew/requirements/xcode_requirement.rb +++ b/Library/Homebrew/requirements/xcode_requirement.rb @@ -1,4 +1,4 @@ -# typed: false +# typed: true # frozen_string_literal: true require "requirement" @@ -13,7 +13,10 @@ class XcodeRequirement < Requirement attr_reader :version - satisfy(build_env: false) { xcode_installed_version } + satisfy(build_env: false) do + T.bind(self, XcodeRequirement) + xcode_installed_version + end def initialize(tags = []) @version = tags.shift if tags.first.to_s.match?(/(\d\.)+\d/)