nuget_versions 0.9.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/nuget_versions/nuget_version.rb +17 -7
- data/lib/nuget_versions/semantic_version.rb +66 -9
- data/lib/nuget_versions/version_comparer.rb +12 -10
- data/lib/nuget_versions.rb +3 -3
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b0bef5e659ed237d7a3e2c05cff2ade749563052eb2cc34d21cff4d6dd6c7a0c
|
|
4
|
+
data.tar.gz: 422d2ae1f8e0fe63ae046a63d0a220dd05f409f1f825e5d13c6c781d4f27c94c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 58e1cd3b428a053b83a82827cd6c20a95c3fcc1ea78e8b9dd925def07d334b004ddc8abf63dd3aa94ed328eb7f1f9d58f6a86f6bcc1f761e9e38567e0c3930ca
|
|
7
|
+
data.tar.gz: 394f472ca81caa5a782f5ea1b1b080a1c92f35c745942a6d4b4fc48f7a2682584ddcdd532f3a94740ea4d44ca62caf3a6aef9c5c2cbd2bf8bb2af9328f66f85a
|
|
@@ -21,11 +21,15 @@ module NuGetVersions
|
|
|
21
21
|
def initialize(major, minor, patch, revision = 0, release_labels = nil, metadata = nil)
|
|
22
22
|
super(major, minor, patch, release_labels, metadata)
|
|
23
23
|
|
|
24
|
-
@revision = revision
|
|
24
|
+
@revision = Integer(revision, revision.is_a?(String) ? 10 : 0)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
attr_reader :revision
|
|
28
28
|
|
|
29
|
+
def revision=(new_value)
|
|
30
|
+
@revision = Integer(new_value, new_value.is_a?(String) ? 10 : 0)
|
|
31
|
+
end
|
|
32
|
+
|
|
29
33
|
attr_accessor :original_version
|
|
30
34
|
|
|
31
35
|
def to_s
|
|
@@ -52,23 +56,29 @@ module NuGetVersions
|
|
|
52
56
|
value = value.to_s if !value.is_a? String
|
|
53
57
|
original_value = value
|
|
54
58
|
|
|
59
|
+
return nil if value.empty?
|
|
60
|
+
|
|
55
61
|
value = value.split("+", 2)
|
|
56
62
|
|
|
57
63
|
metadata = (value.length == 2) ? value.last : nil
|
|
58
64
|
|
|
59
65
|
value = value.first.split("-", 2)
|
|
60
66
|
|
|
61
|
-
|
|
67
|
+
return nil if value.empty?
|
|
68
|
+
|
|
69
|
+
release_labels = (value.length == 2) ? value.last.split('.') : nil
|
|
62
70
|
|
|
63
71
|
parts = value.first.split(".")
|
|
64
72
|
|
|
65
|
-
return nil if
|
|
73
|
+
return nil if parts.length < 2 || parts.length > 4
|
|
74
|
+
return nil if release_labels && !SemanticVersion.try_validate_identifiers(release_labels)
|
|
75
|
+
return nil if metadata && !SemanticVersion.try_validate_identifier(metadata)
|
|
66
76
|
|
|
67
77
|
begin
|
|
68
|
-
major = Integer(parts[0])
|
|
69
|
-
minor = (parts.length >= 2) ? Integer(parts[1]) : 0
|
|
70
|
-
patch = (parts.length >= 3) ? Integer(parts[2]) : 0
|
|
71
|
-
revision = (parts.length >= 4) ? Integer(parts[3]) : 0
|
|
78
|
+
major = Integer(parts[0], 10)
|
|
79
|
+
minor = (parts.length >= 2) ? Integer(parts[1], 10) : 0
|
|
80
|
+
patch = (parts.length >= 3) ? Integer(parts[2], 10) : 0
|
|
81
|
+
revision = (parts.length >= 4) ? Integer(parts[3], 10) : 0
|
|
72
82
|
rescue
|
|
73
83
|
return nil
|
|
74
84
|
end
|
|
@@ -17,15 +17,17 @@ module NuGetVersions
|
|
|
17
17
|
# - release_labels: Prerelease label
|
|
18
18
|
# - metadata: Build metadata
|
|
19
19
|
def initialize(major, minor, patch, release_labels = nil, metadata = nil)
|
|
20
|
-
@major = major
|
|
21
|
-
@minor = minor
|
|
22
|
-
@patch = patch
|
|
20
|
+
@major = Integer(major, major.is_a?(String) ? 10 : 0)
|
|
21
|
+
@minor = Integer(minor, minor.is_a?(String) ? 10 : 0)
|
|
22
|
+
@patch = Integer(patch, patch.is_a?(String) ? 10 : 0)
|
|
23
23
|
|
|
24
24
|
if !release_labels.nil?
|
|
25
25
|
release_labels = release_labels.to_s.split('.') if !release_labels.kind_of? Array
|
|
26
|
+
SemanticVersion.validate_identifiers release_labels
|
|
26
27
|
@release_labels = release_labels
|
|
27
28
|
end
|
|
28
29
|
|
|
30
|
+
SemanticVersion.validate_identifier metadata if !metadata.nil?
|
|
29
31
|
@metadata = metadata
|
|
30
32
|
end
|
|
31
33
|
|
|
@@ -35,11 +37,43 @@ module NuGetVersions
|
|
|
35
37
|
attr_reader :release_labels
|
|
36
38
|
attr_reader :metadata
|
|
37
39
|
|
|
40
|
+
def major=(new_value)
|
|
41
|
+
@major = Integer(new_value, new_value.is_a?(String) ? 10 : 0)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def minor=(new_value)
|
|
45
|
+
@minor = Integer(new_value, new_value.is_a?(String) ? 10 : 0)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def patch=(new_value)
|
|
49
|
+
@patch = Integer(new_value, new_value.is_a?(String) ? 10 : 0)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def release_labels=(new_value)
|
|
53
|
+
return @release_labels = nil if new_value.nil?
|
|
54
|
+
new_value = new_value.to_s.split('.') if !new_value.kind_of? Array
|
|
55
|
+
SemanticVersion.validate_identifiers new_value
|
|
56
|
+
@release_labels = new_value
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def metadata=(new_value)
|
|
60
|
+
return @metadata = nil if new_value.nil?
|
|
61
|
+
SemanticVersion.validate_identifier new_value
|
|
62
|
+
@metadata = new_value
|
|
63
|
+
end
|
|
64
|
+
|
|
38
65
|
def release
|
|
39
|
-
return
|
|
66
|
+
return nil if @release_labels.nil?
|
|
40
67
|
@release_labels.join('.')
|
|
41
68
|
end
|
|
42
69
|
|
|
70
|
+
def release=(new_value)
|
|
71
|
+
return @release_labels = nil if new_value.nil?
|
|
72
|
+
new_value = new_value.split('.')
|
|
73
|
+
SemanticVersion.validate_identifiers new_value
|
|
74
|
+
@release_labels = new_value
|
|
75
|
+
end
|
|
76
|
+
|
|
43
77
|
def is_prerelease?
|
|
44
78
|
!@release_labels.nil? && !@release_labels.all?(&:empty?)
|
|
45
79
|
end
|
|
@@ -96,27 +130,50 @@ module NuGetVersions
|
|
|
96
130
|
|
|
97
131
|
value = value.to_s if !value.is_a? String
|
|
98
132
|
|
|
133
|
+
return nil if value.empty?
|
|
134
|
+
|
|
99
135
|
value = value.split("+", 2)
|
|
100
136
|
|
|
101
137
|
metadata = (value.length == 2) ? value.last : nil
|
|
102
138
|
|
|
103
139
|
value = value.first.split("-", 2)
|
|
104
140
|
|
|
105
|
-
|
|
141
|
+
return nil if value.empty?
|
|
142
|
+
|
|
143
|
+
release_labels = (value.length == 2) ? value.last.split('.') : nil
|
|
106
144
|
|
|
107
145
|
parts = value.first.split(".")
|
|
108
146
|
|
|
109
|
-
return nil if
|
|
147
|
+
return nil if parts.length != 3
|
|
148
|
+
return nil if release_labels && !SemanticVersion.try_validate_identifiers(release_labels)
|
|
149
|
+
return nil if metadata && !SemanticVersion.try_validate_identifier(metadata)
|
|
110
150
|
|
|
111
151
|
begin
|
|
112
|
-
major = Integer(parts[0])
|
|
113
|
-
minor = (parts.length >= 2) ? Integer(parts[1]) : 0
|
|
114
|
-
patch = (parts.length >= 3) ? Integer(parts[2]) : 0
|
|
152
|
+
major = Integer(parts[0], 10)
|
|
153
|
+
minor = (parts.length >= 2) ? Integer(parts[1], 10) : 0
|
|
154
|
+
patch = (parts.length >= 3) ? Integer(parts[2], 10) : 0
|
|
115
155
|
rescue
|
|
116
156
|
return nil
|
|
117
157
|
end
|
|
118
158
|
|
|
119
159
|
return SemanticVersion.new(major, minor, patch, release_labels, metadata)
|
|
120
160
|
end
|
|
161
|
+
|
|
162
|
+
protected
|
|
163
|
+
def self.validate_identifiers(array)
|
|
164
|
+
array.each { |identifier| validate_identifier(identifier) }
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def self.validate_identifier(identifier)
|
|
168
|
+
raise "Invalid semantic version identifier: #{identifier}" if !try_validate_identifier(identifier)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def self.try_validate_identifiers(array)
|
|
172
|
+
array.all? { |identifier| try_validate_identifier(identifier) }
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def self.try_validate_identifier(identifier)
|
|
176
|
+
return identifier.count("^A-Za-z0-9-").zero?
|
|
177
|
+
end
|
|
121
178
|
end
|
|
122
179
|
end
|
|
@@ -18,25 +18,27 @@ module NuGetVersions
|
|
|
18
18
|
return -1 if b.kind_of?(NuGetVersion) && (b.revision > 0)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
a_labels = a.release_labels
|
|
22
|
-
b_labels = b.release_labels
|
|
21
|
+
a_labels = a.release_labels || []
|
|
22
|
+
b_labels = b.release_labels || []
|
|
23
23
|
|
|
24
|
-
count = [a_labels.length, b_labels.length].
|
|
24
|
+
count = [a_labels.length, b_labels.length].max
|
|
25
25
|
|
|
26
26
|
for i in 0..(count - 1)
|
|
27
|
-
return
|
|
28
|
-
return
|
|
27
|
+
return +1 if i >= a_labels.length
|
|
28
|
+
return -1 if i >= b_labels.length
|
|
29
29
|
|
|
30
30
|
a_release = a_labels[i].to_s
|
|
31
31
|
b_release = b_labels[i].to_s
|
|
32
32
|
|
|
33
|
-
a_release_int = Integer(
|
|
34
|
-
b_release_int = Integer(
|
|
33
|
+
a_release_int = Integer(a_release, 10) rescue nil
|
|
34
|
+
b_release_int = Integer(b_release, 10) rescue nil
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
if !(a_release_int.nil? || b_release_int.nil?)
|
|
37
|
+
return result if (result = a_release_int <=> b_release_int) != 0
|
|
38
|
+
end
|
|
37
39
|
|
|
38
|
-
return +1 if !a_release_int.nil?
|
|
39
|
-
return -1 if !b_release_int.nil?
|
|
40
|
+
return +1 if !a_release_int.nil? && b_release_int.nil?
|
|
41
|
+
return -1 if a_release_int.nil? && !b_release_int.nil?
|
|
40
42
|
|
|
41
43
|
return result if (result = a_release.casecmp(b_release)) != 0
|
|
42
44
|
end
|
data/lib/nuget_versions.rb
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
require_relative 'nuget_versions/semantic_version.rb'
|
|
2
|
+
require_relative 'nuget_versions/nuget_version.rb'
|
|
3
|
+
require_relative 'nuget_versions/version_comparer.rb'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nuget_versions
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jonathan Gilbert
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-08-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -38,6 +38,20 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: test-unit
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '3.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '3.0'
|
|
41
55
|
description: Provides facilities for parsing & working with NuGet Versions, which
|
|
42
56
|
are a superset of Semantic Versions 2.0.
|
|
43
57
|
email:
|