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

T.let(/(from.*|\.upToNextMajor.*|\.upToNextMinor.*|".*"\s*\.\.[\.<]\s*".*"|exact.*|\.exact.*)/, Regexp)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(declaration) ⇒ NativeRequirement

Returns a new instance of NativeRequirement.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/dependabot/swift/native_requirement.rb', line 42

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.



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

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
# File 'lib/dependabot/swift/native_requirement.rb', line 27

def self.map_requirements(requirements, &_blk)
  requirements.map do |requirement|
    declaration = new(requirement[:metadata][:requirement_string])

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

    requirement.merge(
      requirement: new_requirement.to_s,
      metadata: { requirement_string: new_declaration }
    )
  end
end

Instance Method Details

#to_sObject



61
62
63
# File 'lib/dependabot/swift/native_requirement.rb', line 61

def to_s
  requirement.to_s
end

#update(version) ⇒ Object



73
74
75
76
77
78
79
80
81
# File 'lib/dependabot/swift/native_requirement.rb', line 73

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



66
67
68
69
70
# File 'lib/dependabot/swift/native_requirement.rb', line 66

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

  update(version)
end