Class: Dependabot::Swift::NativeRequirement

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/swift/native_requirement.rb

Constant Summary collapse

REGEXP =

TODO: Support pinning to specific revisions

/(from.*|\.upToNextMajor.*|\.upToNextMinor.*|"[^"]*"\s*\.\.[\.<]\s*"[^"]*".*|exact.*|\.exact.*)/

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(declaration) ⇒ NativeRequirement

Returns a new instance of NativeRequirement.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/dependabot/swift/native_requirement.rb', line 62

def initialize(declaration)
  @declaration = declaration

  min, max = parse_declaration(declaration)

  constraint = if min == max
                 ["= #{min}"]
               elsif closed_range?
                 [">= #{min}", "<= #{max}"]
               else
                 [">= #{min}", "< #{max}"]
               end

  @min = T.let(min, String)
  @max = T.let(max, String)
  @requirement = T.let(Requirement.new(constraint), Requirement)
end

Instance Attribute Details

#declarationObject (readonly)

Returns the value of attribute declaration.



18
19
20
# File 'lib/dependabot/swift/native_requirement.rb', line 18

def declaration
  @declaration
end

Class Method Details

.map_requirements(requirements, &_blk) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/dependabot/swift/native_requirement.rb', line 27

def self.map_requirements(requirements, &_blk)
  requirements.map do |requirement|
     = requirement.
    next requirement unless 

    requirement_string = requirement.("requirement_string")
    next requirement unless requirement_string

    declaration = new(requirement_string)

    new_declaration = yield(declaration)
    new_requirement = new(new_declaration)

    Dependabot::DependencyRequirement.create(
      requirement.merge(
        requirement: new_requirement.to_s,
        metadata: (, new_declaration)
      )
    )
  end
end

Instance Method Details

#to_sObject



81
82
83
# File 'lib/dependabot/swift/native_requirement.rb', line 81

def to_s
  requirement.to_s
end

#update(version) ⇒ Object



93
94
95
96
97
98
99
100
101
# File 'lib/dependabot/swift/native_requirement.rb', line 93

def update(version)
  if single_version_declaration?
    declaration.sub(min, version.to_s)
  elsif closed_range?
    declaration.sub(max, version.to_s)
  elsif range?
    declaration.sub(max, bump_major(version.to_s))
  end
end

#update_if_needed(version) ⇒ Object



86
87
88
89
90
# File 'lib/dependabot/swift/native_requirement.rb', line 86

def update_if_needed(version)
  return declaration if requirement.satisfied_by?(version)

  update(version)
end