semver_dialects 1.2.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 545d60dd98889db6974b741b120bfbf036b5c2f03c003c3c76bd0869ce429a5b
4
- data.tar.gz: 65289d2e8856c19bcd13330a57db255163934c17ed8486b84388b275541150f5
3
+ metadata.gz: 477a8f6b9d50ce0b31df72e328f683e585e4eb191ea02e44a42101dba4e7be4a
4
+ data.tar.gz: c636be1d60cab7452ccda9963898eee992d969e3a8b490656fb8b8def27c3642
5
5
  SHA512:
6
- metadata.gz: 47cad5277161c8cad94ab902c8476467311f1b2e48b36f4d335d43e18ec882c5681fc9c168837f1e12502f0a890e35323bcd1583c5c29fa358ce52c25d281657
7
- data.tar.gz: 8db66efd085fb9b764effb1966dedcf6f1ac4602800cbcef8bee81d67805895ba54d65ef3cb25347409190ff5f548510018377c2b7b1174841768052e6fefc1b
6
+ metadata.gz: 134eb5c82a142e260bd946954383050966579cb40983e7ca6094c9d66001565eea5cb1250deeb84811b7a3556a5bde6c3eb53ca48815dda6a361649ade1fc537
7
+ data.tar.gz: 6039fc1f6d4163c7813e7f4155c93a8d5f2aa4ce43cfe62fb75784d524532a2662e8c8831d43c2e88592539955385981f60b52dfa5577657ce68580dd6720167
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SemverDialects
4
- VERSION = '1.2.1'
4
+ VERSION = '1.4.0'
5
5
  end
@@ -4,6 +4,7 @@ require 'semver_dialects/version'
4
4
  require 'semver_dialects/semantic_version/version_translator'
5
5
  require 'semver_dialects/semantic_version/version_parser'
6
6
  require 'semver_dialects/semantic_version/version_range'
7
+ require 'deb_version'
7
8
 
8
9
  module SemverDialects
9
10
  # Captures all errors that could be possibly raised
@@ -34,15 +35,18 @@ module SemverDialects
34
35
  when 'packagist'
35
36
  VersionTranslator.translate_packagist(version_string)
36
37
  else
37
- raise SemverDialects::Error, 'unsupported package type'
38
+ raise SemverDialects::Error, "unsupported package type '#{typ}'"
38
39
  end
39
40
  end
40
41
 
41
42
  def self.version_sat?(typ, raw_ver, raw_constraint)
42
- version_constraint = version_translate(typ, raw_constraint)
43
- version = VersionParser.parse('=' + raw_ver)
43
+ # os package versions are handled very differently from application package versions
44
+ return os_pkg_version_sat?(typ, raw_ver, raw_constraint) if os_purl_type?(typ)
44
45
 
46
+ version_constraint = version_translate(typ, raw_constraint)
45
47
  raise SemverDialects::Error, 'malformed constraint' if version_constraint.nil? || version_constraint.empty?
48
+
49
+ version = VersionParser.parse('=' + raw_ver)
46
50
  raise SemverDialects::Error, 'malformed constraint' if version.nil? || version.empty?
47
51
 
48
52
  constraint = VersionRange.new
@@ -52,5 +56,22 @@ module SemverDialects
52
56
 
53
57
  constraint.overlaps_with?(version)
54
58
  end
59
+
60
+ def self.os_purl_type?(typ)
61
+ ['deb', 'rpm', 'apk'].include?(typ)
62
+ end
63
+
64
+ def self.os_pkg_version_sat?(typ, raw_ver, raw_constraint)
65
+ if typ == 'deb'
66
+ # we only support the less than operator, because that's the only one currently output
67
+ # by the advisory exporter for operating system packages.
68
+ raise SemverDialects::Error, 'malformed constraint' unless raw_constraint[0] == '<'
69
+
70
+ v1 = DebVersion.new(raw_ver)
71
+ v2 = DebVersion.new(raw_constraint[1..-1])
72
+
73
+ return v1 < v2
74
+ end
75
+ end
55
76
  end
56
77
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semver_dialects
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Thome
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2023-04-13 00:00:00.000000000 Z
13
+ date: 2023-10-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pastel
@@ -54,20 +54,34 @@ dependencies:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: 0.10.1
57
+ - !ruby/object:Gem::Dependency
58
+ name: deb_version
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: 1.0.1
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 1.0.1
57
71
  - !ruby/object:Gem::Dependency
58
72
  name: bundler
59
73
  requirement: !ruby/object:Gem::Requirement
60
74
  requirements:
61
75
  - - "~>"
62
76
  - !ruby/object:Gem::Version
63
- version: '1.17'
77
+ version: 2.4.9
64
78
  type: :development
65
79
  prerelease: false
66
80
  version_requirements: !ruby/object:Gem::Requirement
67
81
  requirements:
68
82
  - - "~>"
69
83
  - !ruby/object:Gem::Version
70
- version: '1.17'
84
+ version: 2.4.9
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: rake
73
87
  requirement: !ruby/object:Gem::Requirement
@@ -155,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
169
  - !ruby/object:Gem::Version
156
170
  version: '0'
157
171
  requirements: []
158
- rubygems_version: 3.3.7
172
+ rubygems_version: 3.4.10
159
173
  signing_key:
160
174
  specification_version: 4
161
175
  summary: This gem provides utility function to process semantic versions expressed