dependabot-git_submodules 0.314.0 → 0.316.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: 2e0264b2a3069780f2e3dc799a4ca90fafe531fa5fc143068eeec91dc0dc151a
4
- data.tar.gz: ca1bd843c6a500562c769e27960bb274bf8883569ce6c2c5cb8da470ed7a37ed
3
+ metadata.gz: 9667cdfa37aaa6e90bba941f1b653fb5f8f158e6ca251728fedb387134a4d5f8
4
+ data.tar.gz: 49c4e869e2baad8f0e7af43eb19cab762abcce32581d1eaf4cb55058039e1838
5
5
  SHA512:
6
- metadata.gz: 24a18541b5a667b0efdf5d1285f70db1ac32916411f978c34859ffb445746c94e19c474836d0c9b07dc17397f78b80b2e80555fd5c59f8f19dea897dd749b67d
7
- data.tar.gz: a3d3024cf1315c7cdd4a0ec136a1fba5bea3a21d23fe460559e43397368ebceb43c488ebb6a0dab78aec16c3b3827c1665a7bb1c904eb870c0897287fe405df9
6
+ metadata.gz: e800f9531b77938d70e90e2acb9b9c41caaea92ec0f362d6b500c37298c0213fcf8ccd0d1302a935e919a2dc5420fcb4ee36942f8c15daee07c293ecb6cbf49c
7
+ data.tar.gz: 266c229f93ef4d8cfe09542d1b85151d3b76e1c89f6f8bb7c6f3c8aaa652ccdd4517690c5866656eea7b05dda2aaaf06ab6907fb6d2c7eb76b6c19a844be1b43
@@ -0,0 +1,145 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "json"
5
+ require "time"
6
+ require "cgi"
7
+ require "excon"
8
+ require "nokogiri"
9
+ require "sorbet-runtime"
10
+ require "dependabot/registry_client"
11
+ require "dependabot/git_submodules"
12
+ require "dependabot/package/package_release"
13
+ require "dependabot/package/package_details"
14
+
15
+ module Dependabot
16
+ module GitSubmodules
17
+ module Package
18
+ class PackageDetailsFetcher
19
+ extend T::Sig
20
+
21
+ sig do
22
+ params(
23
+ dependency: Dependabot::Dependency,
24
+ credentials: T::Array[Dependabot::Credential]
25
+ ).void
26
+ end
27
+ def initialize(dependency:, credentials:)
28
+ @dependency = dependency
29
+ @credentials = credentials
30
+
31
+ @ref = T.let(ref, String)
32
+ @url = T.let(url, String)
33
+ end
34
+
35
+ # as git submodules do not have versions (refs/tags are used instead), we use a pseudo version as placeholder
36
+ VERSION = "1.0.0"
37
+
38
+ # we use a default release date in case we reply on fallback logic of
39
+ # getting refs/tags to prevent filtering out head release (greater than max cooldown period)
40
+ DEFAULT_RELEASE_DATE = T.let(Time.now.utc - (60 * 60 * 24 * 91), Time)
41
+
42
+ sig { returns(Dependabot::Dependency) }
43
+ attr_reader :dependency
44
+
45
+ sig { returns(T::Array[T.untyped]) }
46
+ attr_reader :credentials
47
+
48
+ sig { returns(T.nilable(T::Array[Dependabot::Package::PackageRelease])) }
49
+ def available_versions
50
+ versions_metadata = T.let(fetch_tags_and_release_date, T.nilable(T::Array[GitTagWithDetail]))
51
+
52
+ # we fallback to the git based tag info if no versions metadata is available
53
+ if versions_metadata&.empty?
54
+ versions_metadata = T.let(fetch_latest_tag_info,
55
+ T.nilable(T::Array[GitTagWithDetail]))
56
+ end
57
+
58
+ releases = T.must(versions_metadata).map do |version_details|
59
+ Dependabot::Package::PackageRelease.new(
60
+ version: GitSubmodules::Version.new(VERSION),
61
+ tag: version_details.tag,
62
+ released_at: Time.parse(version_details.release_date)
63
+ )
64
+ end
65
+
66
+ releases
67
+ end
68
+
69
+ private
70
+
71
+ sig { returns(T::Array[GitTagWithDetail]) }
72
+ def fetch_latest_tag_info
73
+ parsed_results = T.let([], T::Array[GitTagWithDetail])
74
+
75
+ git_commit_checker = Dependabot::GitCommitChecker.new(
76
+ dependency: dependency,
77
+ credentials: credentials
78
+ )
79
+
80
+ parsed_results <<
81
+ GitTagWithDetail.new(
82
+ tag: T.must(git_commit_checker.head_commit_for_current_branch),
83
+ release_date: DEFAULT_RELEASE_DATE.to_s
84
+ )
85
+
86
+ parsed_results
87
+ end
88
+
89
+ sig { returns(T::Array[GitTagWithDetail]) }
90
+ def fetch_tags_and_release_date
91
+ parsed_results = T.let([], T::Array[GitTagWithDetail])
92
+
93
+ begin
94
+ Dependabot.logger.info("Fetching release info for Git Submodules: #{dependency.name}")
95
+
96
+ response = Excon.get(provider_url)
97
+
98
+ unless response.status == 200
99
+ Dependabot.logger.error("Error while fetching details for #{dependency.name}" \
100
+ " Detail : #{response.body}")
101
+ end
102
+
103
+ return parsed_results unless response.status == 200
104
+
105
+ releases = JSON.parse(response.body)
106
+
107
+ parsed_results = releases.map do |release|
108
+ GitTagWithDetail.new(
109
+ tag: release["sha"],
110
+ release_date: release["commit"]["committer"]["date"]
111
+ )
112
+ end
113
+
114
+ parsed_results
115
+ rescue StandardError => e
116
+ Dependabot.logger.error("Error while fetching package info for Git Submodules: #{e.message}")
117
+ parsed_results
118
+ end
119
+ end
120
+
121
+ sig { returns(String) }
122
+ def provider_url
123
+ provider_url = @url.gsub(/\.git$/, "")
124
+
125
+ api_url = {
126
+ github: provider_url.gsub("github.com", "api.github.com/repos")
127
+ }.freeze
128
+
129
+ "#{api_url[:github]}/commits?sha=#{@ref}"
130
+ end
131
+
132
+ sig { returns(String) }
133
+ def ref
134
+ dependency.source_details&.fetch(:ref, nil) ||
135
+ dependency.source_details&.fetch(:branch, nil) || "HEAD"
136
+ end
137
+
138
+ sig { returns(String) }
139
+ def url
140
+ dependency.source_details&.fetch(:url, nil)
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,55 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "excon"
5
+ require "json"
6
+ require "sorbet-runtime"
7
+
8
+ require "dependabot/errors"
9
+ require "dependabot/shared_helpers"
10
+ require "dependabot/update_checkers/version_filters"
11
+ require "dependabot/package/package_latest_version_finder"
12
+ require "dependabot/git_submodules/update_checker"
13
+ require "dependabot/git_submodules/package/package_details_fetcher"
14
+
15
+ module Dependabot
16
+ module GitSubmodules
17
+ class UpdateChecker
18
+ class LatestVersionFinder
19
+ extend T::Sig
20
+
21
+ sig do
22
+ params(
23
+ dependency: Dependabot::Dependency,
24
+ credentials: T::Array[Dependabot::Credential]
25
+ ).void
26
+ end
27
+ def initialize(dependency:, credentials:)
28
+ @dependency = dependency
29
+ @credentials = credentials
30
+ end
31
+
32
+ sig { returns(Dependabot::Dependency) }
33
+ attr_reader :dependency
34
+ sig { returns(T::Array[Dependabot::Credential]) }
35
+ attr_reader :credentials
36
+
37
+ sig { returns(T.nilable(T::Array[Dependabot::Package::PackageRelease])) }
38
+ def version_list
39
+ @version_list ||=
40
+ T.let(Package::PackageDetailsFetcher.new(
41
+ dependency: dependency,
42
+ credentials: credentials
43
+ ).available_versions, T.nilable(T::Array[Dependabot::Package::PackageRelease]))
44
+ end
45
+
46
+ sig { returns(T.nilable(String)) }
47
+ def latest_version
48
+ latest_version = version_list
49
+ latest_version = latest_version&.first&.tag.to_s
50
+ latest_version
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -13,6 +13,7 @@ module Dependabot
13
13
  module GitSubmodules
14
14
  class UpdateChecker < Dependabot::UpdateCheckers::Base
15
15
  extend T::Sig
16
+ require_relative "update_checker/latest_version_finder"
16
17
 
17
18
  sig { override.returns(T.nilable(T.any(String, Dependabot::Version))) }
18
19
  def latest_version
@@ -57,12 +58,10 @@ module Dependabot
57
58
 
58
59
  sig { returns(T.nilable(String)) }
59
60
  def fetch_latest_version
60
- git_commit_checker = Dependabot::GitCommitChecker.new(
61
+ T.let(LatestVersionFinder.new(
61
62
  dependency: dependency,
62
63
  credentials: credentials
63
- )
64
-
65
- git_commit_checker.head_commit_for_current_branch
64
+ ).latest_version, T.nilable(String))
66
65
  end
67
66
  end
68
67
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-git_submodules
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.314.0
4
+ version: 0.316.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-22 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: dependabot-common
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.314.0
18
+ version: 0.316.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.314.0
25
+ version: 0.316.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: parseconfig
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -266,16 +266,18 @@ files:
266
266
  - lib/dependabot/git_submodules/file_parser.rb
267
267
  - lib/dependabot/git_submodules/file_updater.rb
268
268
  - lib/dependabot/git_submodules/metadata_finder.rb
269
+ - lib/dependabot/git_submodules/package/package_details_fetcher.rb
269
270
  - lib/dependabot/git_submodules/package_manager.rb
270
271
  - lib/dependabot/git_submodules/requirement.rb
271
272
  - lib/dependabot/git_submodules/update_checker.rb
273
+ - lib/dependabot/git_submodules/update_checker/latest_version_finder.rb
272
274
  - lib/dependabot/git_submodules/version.rb
273
275
  homepage: https://github.com/dependabot/dependabot-core
274
276
  licenses:
275
277
  - MIT
276
278
  metadata:
277
279
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
278
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.314.0
280
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.316.0
279
281
  rdoc_options: []
280
282
  require_paths:
281
283
  - lib
@@ -283,14 +285,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
283
285
  requirements:
284
286
  - - ">="
285
287
  - !ruby/object:Gem::Version
286
- version: 3.1.0
288
+ version: 3.3.0
287
289
  required_rubygems_version: !ruby/object:Gem::Requirement
288
290
  requirements:
289
291
  - - ">="
290
292
  - !ruby/object:Gem::Version
291
- version: 3.1.0
293
+ version: 3.3.0
292
294
  requirements: []
293
- rubygems_version: 3.6.3
295
+ rubygems_version: 3.6.9
294
296
  specification_version: 4
295
297
  summary: Provides Dependabot support for Git Submodules
296
298
  test_files: []