semverse 3.0.0 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/semverse/constraint.rb +36 -36
- data/lib/semverse/gem_version.rb +2 -1
- data/lib/semverse/version.rb +11 -7
- data/lib/semverse.rb +5 -5
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09316f184e3324a8d50f438c3fd43e0c6f0715aa758d8d1a5d38449f2b6b630e'
|
4
|
+
data.tar.gz: 07ab4bde856d6aac8b6ab1560f7fb725dfc242d3a08321237e1ea1eb6d384c42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4f38485a85c633ffac447f373eae2bfb9ebe4288ccca68c7fc881213d8f0fe30ad98a7170c16815017845ad59d229d08e8420fefb330885b14559a2957d95f9
|
7
|
+
data.tar.gz: c1c37b15aa3027da06fb3e56bb122b9f27f4688d54f9ca5a02da7df25e1508742d70648747d9b54facca4e75bbc0cfa6614eb30707d20d226eb2e947191439e1
|
data/lib/semverse/constraint.rb
CHANGED
@@ -3,7 +3,7 @@ module Semverse
|
|
3
3
|
class << self
|
4
4
|
# Coerce the object into a constraint.
|
5
5
|
#
|
6
|
-
# @param [Constraint, String]
|
6
|
+
# @param [Constraint, String] object
|
7
7
|
#
|
8
8
|
# @return [Constraint]
|
9
9
|
def coerce(object)
|
@@ -97,18 +97,18 @@ module Semverse
|
|
97
97
|
def compare_approx(constraint, target_version)
|
98
98
|
min = constraint.version
|
99
99
|
max = if constraint.patch.nil?
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
100
|
+
Version.new([min.major + 1, 0, 0, 0])
|
101
|
+
elsif constraint.build
|
102
|
+
identifiers = constraint.version.identifiers(:build)
|
103
|
+
replace = identifiers.last.to_i.to_s == identifiers.last.to_s ? "-" : nil
|
104
|
+
Version.new([min.major, min.minor, min.patch, min.pre_release, identifiers.fill(replace, -1).join(".")])
|
105
|
+
elsif constraint.pre_release
|
106
|
+
identifiers = constraint.version.identifiers(:pre_release)
|
107
|
+
replace = identifiers.last.to_i.to_s == identifiers.last.to_s ? "-" : nil
|
108
|
+
Version.new([min.major, min.minor, min.patch, identifiers.fill(replace, -1).join(".")])
|
109
|
+
else
|
110
|
+
Version.new([min.major, min.minor + 1, 0, 0])
|
111
|
+
end
|
112
112
|
min <= target_version && target_version < max
|
113
113
|
end
|
114
114
|
end
|
@@ -116,7 +116,7 @@ module Semverse
|
|
116
116
|
# The default constraint string.
|
117
117
|
#
|
118
118
|
# @return [String]
|
119
|
-
DEFAULT_OPERATOR =
|
119
|
+
DEFAULT_OPERATOR = "=".freeze
|
120
120
|
|
121
121
|
# The complete list of possible operators, paired with a proc to be used for
|
122
122
|
# evaluation.
|
@@ -126,14 +126,14 @@ module Semverse
|
|
126
126
|
#
|
127
127
|
# @return [Hash<String, Proc>]
|
128
128
|
OPERATORS = { #:nodoc:
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
129
|
+
"=" => ->(c, v) { v == c.version },
|
130
|
+
"!=" => ->(c, v) { v != c.version },
|
131
|
+
">" => ->(c, v) { v > c.version },
|
132
|
+
"<" => ->(c, v) { v < c.version },
|
133
|
+
">=" => ->(c, v) { v >= c.version },
|
134
|
+
"<=" => ->(c, v) { v <= c.version },
|
135
|
+
"~" => method(:compare_approx),
|
136
|
+
"~>" => method(:compare_approx),
|
137
137
|
}.freeze
|
138
138
|
|
139
139
|
# This is a magical regular expression that matches the Semantic versioning
|
@@ -165,24 +165,24 @@ module Semverse
|
|
165
165
|
attr_reader :version
|
166
166
|
|
167
167
|
# @param [#to_s] constraint
|
168
|
-
def initialize(constraint =
|
168
|
+
def initialize(constraint = ">= 0.0.0")
|
169
169
|
constraint = constraint.to_s
|
170
170
|
if constraint.nil? || constraint.empty?
|
171
171
|
constraint = ">= 0.0.0"
|
172
172
|
end
|
173
173
|
@operator, @major, @minor, @patch, @pre_release, @build = self.class.split(constraint)
|
174
174
|
|
175
|
-
unless [
|
175
|
+
unless ["~>", "~"].include?(@operator)
|
176
176
|
@minor ||= 0
|
177
177
|
@patch ||= 0
|
178
178
|
end
|
179
179
|
|
180
180
|
@version = Version.new([
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
181
|
+
major,
|
182
|
+
minor,
|
183
|
+
patch,
|
184
|
+
pre_release,
|
185
|
+
build,
|
186
186
|
])
|
187
187
|
end
|
188
188
|
|
@@ -195,7 +195,7 @@ module Semverse
|
|
195
195
|
def satisfies?(target)
|
196
196
|
target = Version.coerce(target)
|
197
197
|
|
198
|
-
if !version.zero? && greedy_match?(target)
|
198
|
+
if !version.zero? && greedy_match?(target) # rubocop:disable Style/NumericPredicate
|
199
199
|
return false
|
200
200
|
end
|
201
201
|
|
@@ -211,8 +211,8 @@ module Semverse
|
|
211
211
|
# @return [Boolean]
|
212
212
|
def ==(other)
|
213
213
|
other.is_a?(self.class) &&
|
214
|
-
|
215
|
-
|
214
|
+
operator == other.operator &&
|
215
|
+
version == other.version
|
216
216
|
end
|
217
217
|
alias_method :eql?, :==
|
218
218
|
|
@@ -220,7 +220,7 @@ module Semverse
|
|
220
220
|
#
|
221
221
|
# @return [String]
|
222
222
|
def inspect
|
223
|
-
"#<#{self.class
|
223
|
+
"#<#{self.class} #{self}>"
|
224
224
|
end
|
225
225
|
|
226
226
|
# The string representation of this constraint.
|
@@ -243,10 +243,10 @@ module Semverse
|
|
243
243
|
#
|
244
244
|
# @param [Semverse::Version] target_version
|
245
245
|
#
|
246
|
-
|
247
|
-
|
246
|
+
def greedy_match?(target_version)
|
247
|
+
!["<", "<="].include?(operator) &&
|
248
248
|
target_version.pre_release? &&
|
249
249
|
!version.pre_release?
|
250
|
-
|
250
|
+
end
|
251
251
|
end
|
252
252
|
end
|
data/lib/semverse/gem_version.rb
CHANGED
data/lib/semverse/version.rb
CHANGED
@@ -3,7 +3,7 @@ module Semverse
|
|
3
3
|
class << self
|
4
4
|
# Coerce the object into a version.
|
5
5
|
#
|
6
|
-
# @param [Version, String]
|
6
|
+
# @param [Version, String] object
|
7
7
|
#
|
8
8
|
# @return [Version]
|
9
9
|
def coerce(object)
|
@@ -75,12 +75,13 @@ module Semverse
|
|
75
75
|
#
|
76
76
|
# @return [Integer]
|
77
77
|
def <=>(other)
|
78
|
-
|
79
|
-
ans =
|
78
|
+
%i{major minor patch}.each do |release|
|
79
|
+
ans = send(release) <=> other.send(release)
|
80
80
|
return ans if ans != 0
|
81
81
|
end
|
82
82
|
ans = pre_release_and_build_presence_score <=> other.pre_release_and_build_presence_score
|
83
83
|
return ans if ans != 0
|
84
|
+
|
84
85
|
ans = identifiers_comparaison(other, :pre_release)
|
85
86
|
return ans if ans != 0
|
86
87
|
if build && other.build
|
@@ -88,12 +89,11 @@ module Semverse
|
|
88
89
|
else
|
89
90
|
return build.to_s <=> other.build.to_s
|
90
91
|
end
|
91
|
-
0
|
92
92
|
end
|
93
93
|
|
94
94
|
# @return [Array]
|
95
95
|
def identifiers(release)
|
96
|
-
send(release).to_s.split(
|
96
|
+
send(release).to_s.split(".").map do |str|
|
97
97
|
str.to_i.to_s == str ? str.to_i : str
|
98
98
|
end
|
99
99
|
end
|
@@ -108,7 +108,11 @@ module Semverse
|
|
108
108
|
|
109
109
|
# @return [Integer]
|
110
110
|
def pre_release_and_build_presence_score
|
111
|
-
pre_release
|
111
|
+
if pre_release
|
112
|
+
0
|
113
|
+
else
|
114
|
+
build.nil? ? 1 : 2
|
115
|
+
end
|
112
116
|
end
|
113
117
|
|
114
118
|
# @param [Semverse::Version] other
|
@@ -136,7 +140,7 @@ module Semverse
|
|
136
140
|
end
|
137
141
|
|
138
142
|
def inspect
|
139
|
-
"#<#{self.class
|
143
|
+
"#<#{self.class} #{self}>"
|
140
144
|
end
|
141
145
|
|
142
146
|
def to_s
|
data/lib/semverse.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Semverse
|
2
|
-
require_relative
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
2
|
+
require_relative "semverse/errors"
|
3
|
+
require_relative "semverse/gem_version"
|
4
|
+
require_relative "semverse/version"
|
5
|
+
require_relative "semverse/constraint"
|
6
6
|
|
7
|
-
DEFAULT_CONSTRAINT = Semverse::Constraint.new(
|
7
|
+
DEFAULT_CONSTRAINT = Semverse::Constraint.new(">= 0.0.0").freeze
|
8
8
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semverse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Winsor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: An elegant library for representing and comparing SemVer versions and
|
14
14
|
constraints
|
@@ -24,7 +24,7 @@ files:
|
|
24
24
|
- lib/semverse/errors.rb
|
25
25
|
- lib/semverse/gem_version.rb
|
26
26
|
- lib/semverse/version.rb
|
27
|
-
homepage: https://github.com/
|
27
|
+
homepage: https://github.com/chef/semverse/
|
28
28
|
licenses:
|
29
29
|
- Apache-2.0
|
30
30
|
metadata: {}
|
@@ -36,15 +36,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 2.
|
39
|
+
version: 2.7.0
|
40
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '0'
|
45
45
|
requirements: []
|
46
|
-
|
47
|
-
rubygems_version: 2.7.7
|
46
|
+
rubygems_version: 3.1.4
|
48
47
|
signing_key:
|
49
48
|
specification_version: 4
|
50
49
|
summary: An elegant library for representing and comparing SemVer versions and constraints
|