Merge pull request #14630 from dduugg/type-requirement

Enable typing in Requirement classes
This commit is contained in:
Mike McQuaid 2023-02-15 14:55:23 +00:00 committed by GitHub
commit 8570cb9729
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 9 deletions

View File

@ -1,4 +1,4 @@
# typed: false # typed: true
# frozen_string_literal: true # frozen_string_literal: true
# A requirement on a code-signing identity. # A requirement on a code-signing identity.
@ -11,8 +11,8 @@ class CodesignRequirement < Requirement
def initialize(tags) def initialize(tags)
options = tags.shift options = tags.shift
raise ArgumentError("CodesignRequirement requires an options Hash!") unless options.is_a?(Hash) 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 identity key!" unless options.key?(:identity)
@identity = options.fetch(:identity) @identity = options.fetch(:identity)
@with = options.fetch(:with, "code signing") @with = options.fetch(:with, "code signing")
@ -21,6 +21,7 @@ class CodesignRequirement < Requirement
end end
satisfy(build_env: false) do satisfy(build_env: false) do
T.bind(self, CodesignRequirement)
mktemp do mktemp do
FileUtils.cp "/usr/bin/false", "codesign_check" FileUtils.cp "/usr/bin/false", "codesign_check"
quiet_system "/usr/bin/codesign", "-f", "-s", @identity, quiet_system "/usr/bin/codesign", "-f", "-s", @identity,

View File

@ -1,4 +1,4 @@
# typed: false # typed: true
# frozen_string_literal: true # frozen_string_literal: true
require "requirement" require "requirement"
@ -55,6 +55,7 @@ class MacOSRequirement < Requirement
end end
satisfy(build_env: false) do satisfy(build_env: false) do
T.bind(self, MacOSRequirement)
next Array(@version).any? { |v| MacOS.version.public_send(@comparator, v) } if version_specified? next Array(@version).any? { |v| MacOS.version.public_send(@comparator, v) } if version_specified?
next true if OS.mac? next true if OS.mac?
next true if @version next true if @version
@ -115,10 +116,10 @@ class MacOSRequirement < Requirement
end end
end end
def to_json(*args) def to_json(options)
comp = @comparator.to_s 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
end end

View File

@ -1,4 +1,4 @@
# typed: false # typed: true
# frozen_string_literal: true # frozen_string_literal: true
require "requirement" require "requirement"
@ -13,7 +13,10 @@ class XcodeRequirement < Requirement
attr_reader :version 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 = []) def initialize(tags = [])
@version = tags.shift if tags.first.to_s.match?(/(\d\.)+\d/) @version = tags.shift if tags.first.to_s.match?(/(\d\.)+\d/)