dependabot-common 0.337.0 → 0.341.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b0ffe5707059285fd1f9a5ec262e5bb5ee208edbc66bf448bab3bafb1777e2f
4
- data.tar.gz: 8822c407c862de5043ac786b628a8640e977a2a806f5abc5b16cd2aebbcba0d1
3
+ metadata.gz: 258e743ccabcb1f78791965700ab1891705d53c161b25aa4bb88d7c60be56678
4
+ data.tar.gz: ee2a7d6fd7d626b18aa5dc1ba65b6bc07e37321e70a529a9ec27b8e8d32746e1
5
5
  SHA512:
6
- metadata.gz: 101633a5e8ee69f8b9da421b78ef56d080fa128574038f9ead3e66611e9411e12ae9e12ca71e0511a7be2ece9a586a061733aec9188b723acae48bef0c3dc226
7
- data.tar.gz: be0d92563c07aa54897bef06002c76e4c8ee262a48e6dde7298afb7aace9b0a14854600e99486d47d39eb3eb0d06b110c57f408cc9e662ae0b68f92a588289c6
6
+ metadata.gz: df1d185f7b202dc912dd4558a9e39f0d5a3e689b9e3ed8103395948fd38f485f6bc879a06c71344b8f9efecadef428a09356520b8270c571317bfabaa5cd320b
7
+ data.tar.gz: 9aae1f9d5217c7146a74b49bf2da406a69cd550dca4abadf72b8acdecf09307f319ae56e8ccd59da3a94b894bd98e3e1c0e413fcf4f100dd1152ee0afef657f3
@@ -65,6 +65,22 @@ module Dependabot
65
65
  nil
66
66
  end
67
67
 
68
+ # This is an optional public method that ecosystems can implement to allow collaborating classes, such as
69
+ # the ecosystem's DependencyGrapher to run native commands inside the parser's context.
70
+ #
71
+ # This is typically used to retrieve information about the relationships between dependencies that is not
72
+ # currently used as part of a Dependabot update to avoid adding latency to the parser's normal function.
73
+ #
74
+ # Any use of this method should be considered a candidate to become part of the parser's normal function
75
+ # when some of the following things have been addressed:
76
+ # - We have more broadly rolled out the Dependabot graph capability across ecosystems
77
+ # - We make the relationship information applicable to updates with new transitive update strategies
78
+ # - We work on ingesting pre-computed dependency snapshots
79
+ sig { params(_command: String).returns(String) }
80
+ def run_in_parsed_context(_command)
81
+ raise Dependabot::NotImplemented, "No run_parsed_context utility method is provided for this ecosystem."
82
+ end
83
+
68
84
  private
69
85
 
70
86
  sig { abstract.void }
@@ -12,7 +12,6 @@ Each `Dependabot::FileUpdaters` class implements the following methods:
12
12
 
13
13
  | Method | Description |
14
14
  |------------------------------|-----------------------------------------------------------------------------------------------|
15
- | `.updated_files_regex` | An array of regular expressions matching the names of the files this class updates. Intended to be used by integrators when checking whether a commit may cause merge-conflicts with a dependency update pull request. |
16
15
  | `#updated_dependency_files` | Returns an array of updated `Dependabot::DependencyFile` instances, with their content updated to include the updated dependency. |
17
16
 
18
17
  An integration might look as follows:
@@ -49,7 +48,6 @@ implement the following methods:
49
48
 
50
49
  | Method | Description |
51
50
  |-----------------------------|-------------------------|
52
- | `.updated_files_regex` | See Public API section. |
53
51
  | `#updated_dependency_files` | See Public API section. |
54
52
 
55
53
  To ensure the above are implemented, you should include
@@ -28,11 +28,6 @@ module Dependabot
28
28
  sig { returns(T::Hash[Symbol, T.untyped]) }
29
29
  attr_reader :options
30
30
 
31
- sig { overridable.returns(T::Array[Regexp]) }
32
- def self.updated_files_regex
33
- raise NotImplementedError
34
- end
35
-
36
31
  sig do
37
32
  params(
38
33
  dependencies: T::Array[Dependabot::Dependency],
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.337.0"
5
+ VERSION = "0.341.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.337.0
4
+ version: 0.341.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -610,7 +610,6 @@ files:
610
610
  - lib/dependabot/requirements_update_strategy.rb
611
611
  - lib/dependabot/requirements_updater/base.rb
612
612
  - lib/dependabot/security_advisory.rb
613
- - lib/dependabot/sem_version2.rb
614
613
  - lib/dependabot/shared_helpers.rb
615
614
  - lib/dependabot/simple_instrumentor.rb
616
615
  - lib/dependabot/source.rb
@@ -630,7 +629,7 @@ licenses:
630
629
  - MIT
631
630
  metadata:
632
631
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
633
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.337.0
632
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.341.0
634
633
  rdoc_options: []
635
634
  require_paths:
636
635
  - lib
@@ -1,131 +0,0 @@
1
- # typed: strong
2
- # frozen_string_literal: true
3
-
4
- require "sorbet-runtime"
5
-
6
- # See https://semver.org/spec/v2.0.0.html for semver 2 details
7
- #
8
- module Dependabot
9
- class SemVersion2
10
- extend T::Sig
11
- extend T::Helpers
12
- include Comparable
13
-
14
- SEMVER2_REGEX = /^
15
- (0|[1-9]\d*)\. # major
16
- (0|[1-9]\d*)\. # minor
17
- (0|[1-9]\d*) # patch
18
- (?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))? # pre release
19
- (?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))? # build metadata
20
- $/x
21
-
22
- sig { returns(String) }
23
- attr_accessor :major
24
-
25
- sig { returns(String) }
26
- attr_accessor :minor
27
-
28
- sig { returns(String) }
29
- attr_accessor :patch
30
-
31
- sig { returns(T.nilable(String)) }
32
- attr_accessor :build
33
-
34
- sig { returns(T.nilable(String)) }
35
- attr_accessor :prerelease
36
-
37
- sig { params(version: String).void }
38
- def initialize(version)
39
- tokens = parse(version)
40
- @major = T.let(T.must(tokens[:major]), String)
41
- @minor = T.let(T.must(tokens[:minor]), String)
42
- @patch = T.let(T.must(tokens[:patch]), String)
43
- @build = T.let(tokens[:build], T.nilable(String))
44
- @prerelease = T.let(tokens[:prerelease], T.nilable(String))
45
- end
46
-
47
- sig { returns(T::Boolean) }
48
- def prerelease?
49
- !!prerelease
50
- end
51
-
52
- sig { returns(String) }
53
- def to_s
54
- value = [major, minor, patch].join(".")
55
- value += "-#{prerelease}" if prerelease
56
- value += "+#{build}" if build
57
- value
58
- end
59
-
60
- sig { returns(String) }
61
- def inspect
62
- "#<#{self.class} #{self}>"
63
- end
64
-
65
- sig { params(other: ::Dependabot::SemVersion2).returns(T::Boolean) }
66
- def eql?(other)
67
- other.is_a?(self.class) && to_s == other.to_s
68
- end
69
-
70
- sig { params(other: ::Dependabot::SemVersion2).returns(Integer) }
71
- def <=>(other)
72
- result = major.to_i <=> other.major.to_i
73
- return result unless result.zero?
74
-
75
- result = minor.to_i <=> other.minor.to_i
76
- return result unless result.zero?
77
-
78
- result = patch.to_i <=> other.patch.to_i
79
- return result unless result.zero?
80
-
81
- compare_prereleases(prerelease, other.prerelease)
82
- end
83
-
84
- sig { params(version: T.nilable(String)).returns(T::Boolean) }
85
- def self.correct?(version)
86
- return false if version.nil?
87
-
88
- version.match?(SEMVER2_REGEX)
89
- end
90
-
91
- private
92
-
93
- sig { params(version: String).returns(T::Hash[Symbol, T.nilable(String)]) }
94
- def parse(version)
95
- match = version.match(SEMVER2_REGEX)
96
- raise ArgumentError, "Malformed version number string #{version}" unless match
97
-
98
- major, minor, patch, prerelease, build = match.captures
99
-
100
- { major: major, minor: minor, patch: patch, prerelease: prerelease, build: build }
101
- end
102
-
103
- sig { params(prerelease1: T.nilable(String), prerelease2: T.nilable(String)).returns(Integer) }
104
- def compare_prereleases(prerelease1, prerelease2) # rubocop:disable Metrics/PerceivedComplexity
105
- return 0 if prerelease1.nil? && prerelease2.nil?
106
- return -1 if prerelease2.nil?
107
- return 1 if prerelease1.nil?
108
-
109
- prerelease1_tokens = prerelease1.split(".")
110
- prerelease2_tokens = prerelease2.split(".")
111
-
112
- prerelease1_tokens.zip(prerelease2_tokens) do |t1, t2|
113
- return 1 if t2.nil? # t1 is more specific e.g. 1.0.0-rc1.1 vs 1.0.0-rc1
114
-
115
- if t1 =~ /^\d+$/ && t2 =~ /^\d+$/
116
- # t1 and t2 are both ints so compare them as such
117
- a = t1.to_i
118
- b = t2.to_i
119
- compare = a <=> b
120
- return compare unless compare.zero?
121
- end
122
-
123
- comp = t1 <=> t2
124
- return T.must(comp) unless T.must(comp).zero?
125
- end
126
-
127
- # prereleases are equal or prerelease2 is more specific e.g. 1.0.0-rc1 vs 1.0.0-rc1.1
128
- prerelease1_tokens.length == prerelease2_tokens.length ? 0 : -1
129
- end
130
- end
131
- end