dependabot-swift 0.326.0 → 0.327.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: 207a4a2534bd6f937a03b749841f5b83513a50a101b1f327999a91977181220b
4
- data.tar.gz: 4c8d5c6f8cfd7506162a5ef8e8ced9cf8ad2346e01113e7ef3917fb0169e82c6
3
+ metadata.gz: f9fca95a4b9cf055d24dacb7e0e4a8575d84c66faec2c9f97092d8558889ccd6
4
+ data.tar.gz: f1359a0add51ed5378e7ba0a685ffda9b7a4f43b95e136bbd821282d5b35e599
5
5
  SHA512:
6
- metadata.gz: 7f9f2f11580c0ac151b6141d638f642b6728a127efcddca5d28cd4be9b1179b97cb70963811f908587f9021c6592de9b5e3a1710e8507e58771735e05362e202
7
- data.tar.gz: 3ddcd96a342f75d98b6ca00f03cdc0ce6a1027cc3149d24479b79eddc5c2733bf1b582613d98502ba6af32d0af633b1c12faeda21d3ceea9381095e13a0ad664
6
+ metadata.gz: 70bd79cc7af1a7546cfc69a3218777be234ccc2e40fe867a95512f9894531116c49c07b8244d73b0f81ac55e09c542deb9e26d9260f8327e8dabdd00ab9c96bb
7
+ data.tar.gz: d8db379b5685d6f8714c9e9ab6221ffd74d7bc9ffba7f0dc6d2cb94dac09cdd643d142108deeaecf0b8e538d85dd38f52fae6456608134549bba0a03b8cfdb74
@@ -37,28 +37,36 @@ module Dependabot
37
37
  sig { returns(Dependabot::Dependency) }
38
38
  attr_reader :dependency
39
39
 
40
+ sig { returns(T::Array[Dependabot::Credential]) }
41
+ attr_reader :credentials
42
+
43
+ sig { returns(T.nilable(Dependabot::Package::ReleaseCooldownOptions)) }
44
+ attr_reader :cooldown_options
45
+
46
+ sig { returns(Dependabot::GitCommitChecker) }
47
+ attr_reader :git_commit_checker
48
+
40
49
  # Return latest version tag for the dependency, it removes tags that are in cooldown period
41
- # and returns the latest version tag that is not in cooldown period. If eexception occurs
42
- # it will return the latest version tag from the git_commit_checker. as it was before
50
+ # and returns the latest version tag that is not in cooldown period. If an exception occurs
51
+ # and returns the latest version tag that is not in cooldown period. If an exception occurs,
52
+ # it will return the latest version tag from the git_commit_checker, as before.
43
53
  sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
44
54
  def latest_version_tag
45
55
  # step one fetch allowed version tags and
56
+ return git_commit_checker.local_tag_for_latest_version unless cooldown_enabled?
57
+
46
58
  allowed_version_tags = git_commit_checker.allowed_version_tags
47
- begin
48
- # sort the allowed version tags by name in descending order
49
- select_version_tags_in_cooldown_period&.each do |tag_name|
50
- # filter out if name is not in cooldown period
51
- allowed_version_tags.reject! do |gitref_filtered|
52
- true if gitref_filtered.name == tag_name
53
- end
59
+ select_version_tags_in_cooldown_period&.each do |tag_name|
60
+ # filter out if name is in cooldown period
61
+ allowed_version_tags.reject! do |gitref_filtered|
62
+ gitref_filtered.name == tag_name
54
63
  end
55
- Dependabot.logger.info("Allowed version tags after filtering versions in cooldown:
56
- #{allowed_version_tags.map(&:name).join(', ')}")
57
- git_commit_checker.max_local_tag(allowed_version_tags)
58
- rescue StandardError => e
59
- Dependabot.logger.error("Error fetching latest version tag: #{e.message}")
60
- git_commit_checker.local_tag_for_latest_version
61
64
  end
65
+
66
+ git_commit_checker.max_local_tag(allowed_version_tags)
67
+ rescue StandardError => e
68
+ Dependabot.logger.error("Error fetching latest version tag: #{e.message}")
69
+ git_commit_checker.local_tag_for_latest_version
62
70
  end
63
71
 
64
72
  sig { returns(T.nilable(T::Array[String])) }
@@ -66,7 +74,7 @@ module Dependabot
66
74
  version_tags_in_cooldown_period = T.let([], T::Array[String])
67
75
 
68
76
  package_details_fetcher.fetch_tag_and_release_date.each do |git_tag_with_detail|
69
- if check_if_version_in_cooldown_period?(T.must(git_tag_with_detail.release_date))
77
+ if check_if_version_in_cooldown_period?(git_tag_with_detail)
70
78
  version_tags_in_cooldown_period << git_tag_with_detail.tag
71
79
  end
72
80
  end
@@ -76,27 +84,59 @@ module Dependabot
76
84
  version_tags_in_cooldown_period
77
85
  end
78
86
 
79
- sig { params(release_date: String).returns(T::Boolean) }
80
- def check_if_version_in_cooldown_period?(release_date)
81
- return false unless release_date.length.positive?
87
+ sig { params(tag_with_detail: Dependabot::GitTagWithDetail).returns(T::Boolean) }
88
+ def check_if_version_in_cooldown_period?(tag_with_detail)
89
+ return false unless tag_with_detail.release_date
82
90
 
83
- cooldown = @cooldown_options
84
- return false unless cooldown
91
+ current_version = version_class.correct?(dependency.version) ? version_class.new(dependency.version) : nil
92
+ days = cooldown_days_for(current_version, version_class.new(tag_with_detail.tag.delete("v")))
85
93
 
86
- return false if cooldown.nil?
87
-
88
- # Get maximum cooldown days based on semver parts
89
- days = [cooldown.default_days, cooldown.semver_major_days].max
90
- days = cooldown.semver_minor_days unless days > cooldown.semver_minor_days
91
- days = cooldown.semver_patch_days unless days > cooldown.semver_patch_days
92
94
  # Calculate the number of seconds passed since the release
93
- passed_seconds = Time.now.to_i - release_date_to_seconds(release_date)
95
+ passed_seconds = Time.now.to_i - release_date_to_seconds(tag_with_detail.release_date)
94
96
  # Check if the release is within the cooldown period
95
97
  passed_seconds < days * DAY_IN_SECONDS
96
98
  end
97
99
 
98
- sig { params(release_date: String).returns(Integer) }
100
+ sig do
101
+ params(
102
+ current_version: T.nilable(Dependabot::Version),
103
+ new_version: Dependabot::Version
104
+ ).returns(Integer)
105
+ end
106
+ def cooldown_days_for(current_version, new_version)
107
+ return 0 unless cooldown_enabled?
108
+
109
+ cooldown = T.must(cooldown_options)
110
+ return 0 unless cooldown.included?(dependency.name)
111
+ return cooldown.default_days if current_version.nil?
112
+
113
+ current_version_semver = current_version.semver_parts
114
+ new_version_semver = new_version.semver_parts
115
+
116
+ # If semver_parts is nil for either, return default cooldown
117
+ return cooldown.default_days if current_version_semver.nil? || new_version_semver.nil?
118
+
119
+ # Ensure values are always integers
120
+ current_major, current_minor, current_patch = current_version_semver
121
+ new_major, new_minor, new_patch = new_version_semver
122
+
123
+ # Determine cooldown based on version difference
124
+ return cooldown.semver_major_days if new_major > current_major
125
+ return cooldown.semver_minor_days if new_minor > current_minor
126
+ return cooldown.semver_patch_days if new_patch > current_patch
127
+
128
+ cooldown.default_days
129
+ end
130
+
131
+ sig { returns(T.class_of(Dependabot::Version)) }
132
+ def version_class
133
+ dependency.version_class
134
+ end
135
+
136
+ sig { params(release_date: T.nilable(String)).returns(Integer) }
99
137
  def release_date_to_seconds(release_date)
138
+ return 0 unless release_date
139
+
100
140
  Time.parse(release_date).to_i
101
141
  rescue ArgumentError => e
102
142
  Dependabot.logger.error("Invalid release date format: #{release_date} and error: #{e.message}")
@@ -114,17 +154,16 @@ module Dependabot
114
154
  )
115
155
  end
116
156
 
117
- # Since base class is returning false, we need to override it.
118
157
  sig { returns(T::Boolean) }
119
158
  def cooldown_enabled?
120
- true
121
- end
122
-
123
- sig { returns(Dependabot::GitCommitChecker) }
124
- attr_reader :git_commit_checker
159
+ return false if cooldown_options.nil?
125
160
 
126
- sig { returns(T::Array[Dependabot::Credential]) }
127
- attr_reader :credentials
161
+ cooldown = T.must(cooldown_options)
162
+ cooldown.default_days.to_i.positive? ||
163
+ cooldown.semver_major_days.to_i.positive? ||
164
+ cooldown.semver_minor_days.to_i.positive? ||
165
+ cooldown.semver_patch_days.to_i.positive?
166
+ end
128
167
  end
129
168
  end
130
169
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-swift
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.326.0
4
+ version: 0.327.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.326.0
18
+ version: 0.327.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.326.0
25
+ version: 0.327.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -266,7 +266,7 @@ licenses:
266
266
  - MIT
267
267
  metadata:
268
268
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
269
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.326.0
269
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.327.0
270
270
  rdoc_options: []
271
271
  require_paths:
272
272
  - lib