Class: Dependabot::Version
- Inherits:
-
Gem::Version
- Object
- Gem::Version
- Dependabot::Version
- Extended by:
- T::Helpers, T::Sig
- Defined in:
- lib/dependabot/version.rb
Constant Summary collapse
- VersionParameter =
T.type_alias { T.nilable(T.any(String, Integer, Gem::Version)) }
- SEMVER_REGEX =
T.let( / # major.minor.patch ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*) # pre-release (?:-( (?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*) (?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))* ))? # build metadata (?:\+( [0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)* ))?$/x, Regexp )
Class Method Summary collapse
- .correct?(version) ⇒ Boolean
- .new(version) ⇒ Object
- .update_type(_from_version, _to_version) ⇒ Object
- .valid_semver?(version) ⇒ Boolean
Instance Method Summary collapse
- #compute_sort_key ⇒ Object
- #ignored_major_versions ⇒ Object
- #ignored_minor_versions ⇒ Object
- #ignored_patch_versions ⇒ Object
-
#initialize(version) ⇒ Version
constructor
A new instance of Version.
- #lowest_prerelease_suffix ⇒ Object
- #semver_parts ⇒ Object
- #to_semver ⇒ Object
Constructor Details
#initialize(version) ⇒ Version
Returns a new instance of Version.
16 17 18 19 20 |
# File 'lib/dependabot/version.rb', line 16 def initialize(version) @original_version = T.let(version.to_s, String) super end |
Class Method Details
.correct?(version) ⇒ Boolean
38 39 40 41 42 |
# File 'lib/dependabot/version.rb', line 38 def self.correct?(version) return false if version.nil? version.to_s.match?(ANCHORED_VERSION_PATTERN) end |
.new(version) ⇒ Object
23 24 25 |
# File 'lib/dependabot/version.rb', line 23 def self.new(version) T.cast(super, Dependabot::Version) end |
.update_type(_from_version, _to_version) ⇒ Object
32 33 34 |
# File 'lib/dependabot/version.rb', line 32 def self.update_type(_from_version, _to_version) nil end |
.valid_semver?(version) ⇒ Boolean
117 118 119 |
# File 'lib/dependabot/version.rb', line 117 def self.valid_semver?(version) !version.match(SEMVER_REGEX).nil? end |
Instance Method Details
#compute_sort_key ⇒ Object
51 52 53 54 55 |
# File 'lib/dependabot/version.rb', line 51 def compute_sort_key return if canonical_segments.any?(String) super end |
#ignored_major_versions ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/dependabot/version.rb', line 86 def ignored_major_versions version_parts = to_semver.split(".") lower_parts = [version_parts[0].to_i + 1] + [lowest_prerelease_suffix] lower_bound = ">= #{lower_parts.join('.')}" [lower_bound] end |
#ignored_minor_versions ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/dependabot/version.rb', line 74 def ignored_minor_versions parts = to_semver.split(".") version_parts = parts.fill("0", parts.length...2) lower_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + [lowest_prerelease_suffix] upper_parts = version_parts.first(0) + [version_parts[0].to_i + 1] lower_bound = ">= #{lower_parts.join('.')}" upper_bound = "< #{upper_parts.join('.')}" ["#{lower_bound}, #{upper_bound}"] end |
#ignored_patch_versions ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/dependabot/version.rb', line 63 def ignored_patch_versions parts = to_semver.split(".") version_parts = parts.fill("0", parts.length...2) upper_parts = version_parts.first(1) + [version_parts[1].to_i + 1] lower_bound = "> #{to_semver}" upper_bound = "< #{upper_parts.join('.')}" ["#{lower_bound}, #{upper_bound}"] end |
#lowest_prerelease_suffix ⇒ Object
95 96 97 |
# File 'lib/dependabot/version.rb', line 95 def lowest_prerelease_suffix "a" end |
#semver_parts ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/dependabot/version.rb', line 122 def semver_parts # Extracts only the numeric major.minor.patch part of the version, ensuring it starts with a number match = to_semver.match(/^\d+(?:\.\d+)?(?:\.\d+)?(?=[^\d]|$)/) return nil unless match first_match = match[0] return nil unless first_match major, minor, patch = first_match.split(".").map(&:to_i) [major || 0, minor || 0, patch || 0] end |
#to_semver ⇒ Object
58 59 60 |
# File 'lib/dependabot/version.rb', line 58 def to_semver @original_version end |