Class: Dependabot::Swift::UpdateChecker::XcodeVersionResolver
- Inherits:
-
Object
- Object
- Dependabot::Swift::UpdateChecker::XcodeVersionResolver
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/swift/update_checker/xcode_version_resolver.rb
Overview
Resolves versions for Xcode-only SwiftPM projects (no Package.swift).
Unlike the classic VersionResolver which relies on ‘swift package update`, this resolver uses GitCommitChecker to find the latest available version from git tags, since we cannot run the Swift CLI without a manifest.
Instance Method Summary collapse
-
#initialize(dependency:, git_commit_checker:, security_advisories:) ⇒ XcodeVersionResolver
constructor
A new instance of XcodeVersionResolver.
- #latest_resolvable_version ⇒ Object
- #latest_resolvable_version_tag ⇒ Object
- #lowest_security_fix_version ⇒ Object
- #version_pinned? ⇒ Boolean
Constructor Details
#initialize(dependency:, git_commit_checker:, security_advisories:) ⇒ XcodeVersionResolver
Returns a new instance of XcodeVersionResolver.
30 31 32 33 34 |
# File 'lib/dependabot/swift/update_checker/xcode_version_resolver.rb', line 30 def initialize(dependency:, git_commit_checker:, security_advisories:) @dependency = dependency @git_commit_checker = git_commit_checker @security_advisories = security_advisories end |
Instance Method Details
#latest_resolvable_version ⇒ Object
37 38 39 40 41 42 |
# File 'lib/dependabot/swift/update_checker/xcode_version_resolver.rb', line 37 def latest_resolvable_version tag = latest_resolvable_version_tag return nil unless tag Version.new(tag.fetch(:version)) end |
#latest_resolvable_version_tag ⇒ Object
47 48 49 50 51 52 |
# File 'lib/dependabot/swift/update_checker/xcode_version_resolver.rb', line 47 def latest_resolvable_version_tag @latest_resolvable_version_tag ||= T.let( compute_latest_resolvable_version_tag, T.nilable(T::Hash[Symbol, T.untyped]) ) end |
#lowest_security_fix_version ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/dependabot/swift/update_checker/xcode_version_resolver.rb', line 55 def lowest_security_fix_version return nil unless version_pinned? = git_commit_checker. = Dependabot::UpdateCheckers::VersionFilters.filter_vulnerable_versions( , security_advisories ) = () lowest_tag = .min_by { |tag| tag.fetch(:version) } return nil unless lowest_tag Version.new(lowest_tag.fetch(:version)) end |
#version_pinned? ⇒ Boolean
72 73 74 75 76 |
# File 'lib/dependabot/swift/update_checker/xcode_version_resolver.rb', line 72 def version_pinned? return false unless dependency.version Version.correct?(dependency.version) end |