semverse 1.2.1 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- 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 +8 -53
- data/.gitignore +0 -17
- data/.travis.yml +0 -8
- data/Gemfile +0 -29
- data/Guardfile +0 -11
- data/README.md +0 -34
- data/Rakefile +0 -6
- data/semverse.gemspec +0 -24
- data/spec/spec_helper.rb +0 -25
- data/spec/unit/semverse/constraint_spec.rb +0 -711
- data/spec/unit/semverse/version_spec.rb +0 -370
- data/spec/unit/semverse_spec.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
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,43 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semverse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
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:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.5'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.5'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
11
|
+
date: 2022-05-23 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
41
13
|
description: An elegant library for representing and comparing SemVer versions and
|
42
14
|
constraints
|
43
15
|
email:
|
@@ -46,26 +18,15 @@ executables: []
|
|
46
18
|
extensions: []
|
47
19
|
extra_rdoc_files: []
|
48
20
|
files:
|
49
|
-
- ".gitignore"
|
50
|
-
- ".travis.yml"
|
51
|
-
- Gemfile
|
52
|
-
- Guardfile
|
53
21
|
- LICENSE
|
54
|
-
- README.md
|
55
|
-
- Rakefile
|
56
22
|
- lib/semverse.rb
|
57
23
|
- lib/semverse/constraint.rb
|
58
24
|
- lib/semverse/errors.rb
|
59
25
|
- lib/semverse/gem_version.rb
|
60
26
|
- lib/semverse/version.rb
|
61
|
-
|
62
|
-
- spec/spec_helper.rb
|
63
|
-
- spec/unit/semverse/constraint_spec.rb
|
64
|
-
- spec/unit/semverse/version_spec.rb
|
65
|
-
- spec/unit/semverse_spec.rb
|
66
|
-
homepage: https://github.com/berkshelf/semverse
|
27
|
+
homepage: https://github.com/chef/semverse/
|
67
28
|
licenses:
|
68
|
-
- Apache
|
29
|
+
- Apache-2.0
|
69
30
|
metadata: {}
|
70
31
|
post_install_message:
|
71
32
|
rdoc_options: []
|
@@ -75,21 +36,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
75
36
|
requirements:
|
76
37
|
- - ">="
|
77
38
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
39
|
+
version: 2.7.0
|
79
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
41
|
requirements:
|
81
42
|
- - ">="
|
82
43
|
- !ruby/object:Gem::Version
|
83
44
|
version: '0'
|
84
45
|
requirements: []
|
85
|
-
|
86
|
-
rubygems_version: 2.2.2
|
46
|
+
rubygems_version: 3.1.4
|
87
47
|
signing_key:
|
88
48
|
specification_version: 4
|
89
49
|
summary: An elegant library for representing and comparing SemVer versions and constraints
|
90
|
-
test_files:
|
91
|
-
- spec/spec_helper.rb
|
92
|
-
- spec/unit/semverse/constraint_spec.rb
|
93
|
-
- spec/unit/semverse/version_spec.rb
|
94
|
-
- spec/unit/semverse_spec.rb
|
95
|
-
has_rdoc:
|
50
|
+
test_files: []
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
gemspec
|
4
|
-
|
5
|
-
group :development do
|
6
|
-
gem "fuubar"
|
7
|
-
gem "yard"
|
8
|
-
gem "guard-rspec"
|
9
|
-
gem "guard-spork"
|
10
|
-
gem "coolline"
|
11
|
-
|
12
|
-
require "rbconfig"
|
13
|
-
|
14
|
-
if RbConfig::CONFIG["target_os"] =~ /darwin/i
|
15
|
-
gem "ruby_gntp", require: false
|
16
|
-
|
17
|
-
elsif RbConfig::CONFIG["target_os"] =~ /linux/i
|
18
|
-
gem "libnotify", require: false
|
19
|
-
|
20
|
-
elsif RbConfig::CONFIG["target_os"] =~ /mswin|mingw/i
|
21
|
-
gem "win32console", require: false
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
group :test do
|
26
|
-
gem "spork"
|
27
|
-
gem "rake"
|
28
|
-
gem "rspec"
|
29
|
-
end
|
data/Guardfile
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
guard 'spork', rspec_port: 8991 do
|
2
|
-
watch('Gemfile')
|
3
|
-
watch('spec/spec_helper.rb') { :rspec }
|
4
|
-
end
|
5
|
-
|
6
|
-
guard 'rspec', cli: "--color --drb --drb-port 8991 --format Fuubar", all_on_start: false, all_after_pass: false, notification: false do
|
7
|
-
watch(%r{^spec/acceptance/.+_spec\.rb$})
|
8
|
-
watch(%r{^spec/unit/.+_spec\.rb$})
|
9
|
-
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
|
10
|
-
watch('spec/spec_helper.rb') { "spec" }
|
11
|
-
end
|
data/README.md
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# Semverse
|
2
|
-
[![Gem Version](http://img.shields.io/gem/v/semverse.svg)][gem]
|
3
|
-
[![Build Status](http://img.shields.io/travis/berkshelf/semverse.svg)][travis]
|
4
|
-
|
5
|
-
[gem]: https://rubygems.org/gems/semverse
|
6
|
-
[travis]: http://travis-ci.org/berkshelf/semverse
|
7
|
-
|
8
|
-
An elegant library for representing and comparing SemVer versions and constraints
|
9
|
-
|
10
|
-
## Installation
|
11
|
-
|
12
|
-
Add this line to your application's Gemfile:
|
13
|
-
|
14
|
-
gem 'semverse'
|
15
|
-
|
16
|
-
And then execute:
|
17
|
-
|
18
|
-
$ bundle
|
19
|
-
|
20
|
-
Or install it yourself as:
|
21
|
-
|
22
|
-
$ gem install semverse
|
23
|
-
|
24
|
-
## Usage
|
25
|
-
|
26
|
-
TODO: Write usage instructions here
|
27
|
-
|
28
|
-
## Contributing
|
29
|
-
|
30
|
-
1. Fork it ( http://github.com/berkshelf/semverse/fork )
|
31
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
32
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
33
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
34
|
-
5. Create new Pull Request
|
data/Rakefile
DELETED
data/semverse.gemspec
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'semverse/gem_version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "semverse"
|
8
|
-
spec.version = Semverse::VERSION
|
9
|
-
spec.authors = ["Jamie Winsor"]
|
10
|
-
spec.email = ["jamie@vialstudios.com"]
|
11
|
-
spec.summary = %q{An elegant library for representing and comparing SemVer versions and constraints}
|
12
|
-
spec.description = spec.summary
|
13
|
-
spec.homepage = "https://github.com/berkshelf/semverse"
|
14
|
-
spec.license = "Apache 2.0"
|
15
|
-
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
spec.required_ruby_version = ">= 1.9.1"
|
21
|
-
|
22
|
-
spec.add_development_dependency "bundler", "~> 1.5"
|
23
|
-
spec.add_development_dependency "rake"
|
24
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
require 'spork'
|
4
|
-
|
5
|
-
Spork.prefork do
|
6
|
-
require 'rspec'
|
7
|
-
|
8
|
-
APP_ROOT = File.expand_path('../../', __FILE__)
|
9
|
-
|
10
|
-
Dir[File.join(APP_ROOT, "spec/support/**/*.rb")].each {|f| require f}
|
11
|
-
|
12
|
-
RSpec.configure do |config|
|
13
|
-
config.mock_with :rspec
|
14
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
15
|
-
config.filter_run focus: true
|
16
|
-
config.run_all_when_everything_filtered = true
|
17
|
-
|
18
|
-
# Run specs in a random order
|
19
|
-
config.order = :random
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
Spork.each_run do
|
24
|
-
require 'semverse'
|
25
|
-
end
|