|
1 | 1 | # typed: strong |
2 | 2 | # frozen_string_literal: true |
3 | 3 |
|
4 | | -# NOTE: This file was scaffolded automatically but is OPTIONAL. |
5 | | -# If your ecosystem uses standard Gem::Requirement logic, |
6 | | -# you can safely delete this file and remove the require from lib/dependabot/mise.rb |
7 | 4 | require "dependabot/requirement" |
8 | 5 | require "dependabot/utils" |
| 6 | +require "wildcard_matcher" |
9 | 7 |
|
10 | 8 | module Dependabot |
11 | 9 | module Mise |
12 | 10 | class Requirement < Dependabot::Requirement |
13 | 11 | extend T::Sig |
14 | 12 |
|
15 | | - # Add custom requirement parsing logic if needed |
16 | | - # If standard Gem::Requirement is sufficient, delete this file |
17 | | - # This abstract method must be implemented |
| 13 | + WILDCARD_PATTERN = /\*/ |
| 14 | + |
18 | 15 | sig do |
19 | 16 | override |
20 | 17 | .params(requirement_string: T.nilable(String)) |
21 | | - .returns(T::Array[Dependabot::Requirement]) |
| 18 | + .returns(T::Array[Requirement]) |
22 | 19 | end |
23 | 20 | def self.requirements_array(requirement_string) |
24 | 21 | [new(requirement_string)] |
25 | 22 | end |
| 23 | + |
| 24 | + sig { params(requirements: T.nilable(String)).void } |
| 25 | + def initialize(*requirements) |
| 26 | + requirements = requirements.flatten.compact.flat_map { |r| r.split(",").map(&:strip) } |
| 27 | + |
| 28 | + @wildcard_patterns = T.let( |
| 29 | + requirements.select { |r| r.match?(WILDCARD_PATTERN) }, |
| 30 | + T::Array[String] |
| 31 | + ) |
| 32 | + |
| 33 | + normal = requirements.reject { |r| r.match?(WILDCARD_PATTERN) } |
| 34 | + super(normal.empty? ? ["!= 0"] : normal) |
| 35 | + end |
| 36 | + |
| 37 | + sig { override.params(version: Gem::Version).returns(T::Boolean) } |
| 38 | + def satisfied_by?(version) |
| 39 | + version_string = T.cast(version, Gem::Version).to_s |
| 40 | + result = @wildcard_patterns.any? { |p| WildcardMatcher.match?(p, version_string) } || |
| 41 | + (@wildcard_patterns.empty? && super) |
| 42 | + T.cast(result, T::Boolean) |
| 43 | + end |
26 | 44 | end |
27 | 45 | end |
28 | 46 | end |
|
0 commit comments