Class: Dependabot::Maven::Version
- Inherits:
-
Version
- Object
- Version
- Dependabot::Maven::Version
- Extended by:
- T::Helpers, T::Sig
- Defined in:
- lib/dependabot/maven/version.rb
Constant Summary collapse
- PRERELEASE_QUALIFIERS =
T.let( [ Dependabot::Maven::VersionParser::ALPHA, Dependabot::Maven::VersionParser::BETA, Dependabot::Maven::VersionParser::MILESTONE, Dependabot::Maven::VersionParser::RC, Dependabot::Maven::VersionParser::SNAPSHOT ].freeze, T::Array[Integer] )
- VERSION_PATTERN =
"[0-9a-zA-Z]+" \ '(?>\.[0-9a-zA-Z]*)*' \ '([_\-\+.][0-9A-Za-z]*)*'
Instance Attribute Summary collapse
-
#token_bucket ⇒ Object
Returns the value of attribute token_bucket.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #ignored_major_versions ⇒ Object
- #ignored_minor_versions ⇒ Object
- #ignored_patch_versions ⇒ Object
-
#initialize(version) ⇒ Version
constructor
A new instance of Version.
- #inspect ⇒ Object
- #lowest_prerelease_suffix ⇒ Object
- #prerelease? ⇒ Boolean
- #to_s ⇒ Object
Constructor Details
#initialize(version) ⇒ Version
Returns a new instance of Version.
46 47 48 49 50 51 52 |
# File 'lib/dependabot/maven/version.rb', line 46 def initialize(version) raise BadRequirementError, "Malformed version string - string is nil" if version.nil? @version_string = T.let(version.to_s, String) @token_bucket = T.let(Dependabot::Maven::VersionParser.parse(version_string), Dependabot::Maven::TokenBucket) super(version.to_s.tr("_", "-")) end |
Instance Attribute Details
#token_bucket ⇒ Object
Returns the value of attribute token_bucket.
33 34 35 |
# File 'lib/dependabot/maven/version.rb', line 33 def token_bucket @token_bucket end |
Class Method Details
.correct?(version) ⇒ Boolean
36 37 38 39 40 41 42 43 |
# File 'lib/dependabot/maven/version.rb', line 36 def self.correct?(version) return false if version.to_s.empty? Dependabot::Maven::VersionParser.parse(version.to_s).to_a.any? rescue ArgumentError Dependabot.logger.info("Malformed version string #{version}") false end |
Instance Method Details
#<=>(other) ⇒ Object
77 78 79 80 |
# File 'lib/dependabot/maven/version.rb', line 77 def <=>(other) other = Dependabot::Maven::Version.new(other.to_s) unless other.is_a? Dependabot::Maven::Version T.must(token_bucket <=> T.cast(other, Dependabot::Maven::Version).token_bucket) end |
#ignored_major_versions ⇒ Object
111 112 113 114 115 116 117 118 119 |
# File 'lib/dependabot/maven/version.rb', line 111 def ignored_major_versions version_parts = token_bucket.tokens # e.g [1,2,3] if version is 1.2.3-alpha3 return [] if version_parts.empty? # for non-semver versions lower_parts = [version_parts[0].to_i + 1] + [lowest_prerelease_suffix] # earliest next major version prerelease lower_bound = ">= #{lower_parts.join('.')}" [lower_bound] end |
#ignored_minor_versions ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/dependabot/maven/version.rb', line 97 def ignored_minor_versions parts = token_bucket.tokens # e.g [1,2,3] if version is 1.2.3-alpha3 return [] if parts.empty? # for non-semver versions 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] + [lowest_prerelease_suffix] lower_bound = ">= #{lower_parts.join('.')}" upper_bound = "< #{upper_parts.join('.')}" ["#{lower_bound}, #{upper_bound}"] end |
#ignored_patch_versions ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/dependabot/maven/version.rb', line 83 def ignored_patch_versions parts = token_bucket.tokens # e.g [1,2,3] if version is 1.2.3-alpha3 return [] if parts.empty? # for non-semver versions version_parts = parts.fill("0", parts.length...2) # the a0 is so we can get the next earliest prerelease patch version upper_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + [lowest_prerelease_suffix] lower_bound = "> #{to_semver}" upper_bound = "< #{upper_parts.join('.')}" ["#{lower_bound}, #{upper_bound}"] end |
#inspect ⇒ Object
55 56 57 |
# File 'lib/dependabot/maven/version.rb', line 55 def inspect "#<#{self.class} #{version_string}>" end |
#lowest_prerelease_suffix ⇒ Object
72 73 74 |
# File 'lib/dependabot/maven/version.rb', line 72 def lowest_prerelease_suffix "a0" end |
#prerelease? ⇒ Boolean
65 66 67 68 69 |
# File 'lib/dependabot/maven/version.rb', line 65 def prerelease? token_bucket.to_a.flatten.any? do |token| token.is_a?(Integer) && token.negative? end end |
#to_s ⇒ Object
60 61 62 |
# File 'lib/dependabot/maven/version.rb', line 60 def to_s version_string end |