dependabot-elm 0.364.0 → 0.365.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: c007965a651130d28a97c4838ba25cfa0f77a2d661b635702c0480437125ffe4
4
- data.tar.gz: 8e81fcbd096a863c7bb6ccef298b445852f02c287d16705e5b11826b78787377
3
+ metadata.gz: e9e41f54d5b97f943a9bf8e5e7da6b4af66a3a1e6d577ed0c9fb9b9127b156ab
4
+ data.tar.gz: 6f24cc10c0ba54c38215a2c62d9aceea0f8b62c515292c81b6afd83f8ff5ef4c
5
5
  SHA512:
6
- metadata.gz: 9b6350658d2c53e3774607101460bbd95c6afc9a42f43486d6b1f4624ff21ba7d60fb1c41bea232165445aaa67218fdfe0232778925f592f094eb16e977304b7
7
- data.tar.gz: 16fc5de230b0c9139bc7cda5dae900b30cc45c41c4fb2196f74fd5c1fb5006d6217c2b9b80a1d49c4af1fd5eae7ec9fe023c50393309e620c62ddf07c72668a3
6
+ metadata.gz: cbc603570ffa409f0b55b5358eb3cf3b5a2eb3f1718d55de0fde3398160c7fd5c2bc6227786a1068506a57f80096c3eca76cb0c2541e8afb65c83c5f36d4b8c5
7
+ data.tar.gz: 159c85588a710184e0058152b6ecd8dff5243505b6f59ae210c2c4a6d10ec52cfa8ecf58b0f2891c14fe877ce5de2b13e03e908b750b123af71e04b7f70fcb2d
@@ -117,12 +117,14 @@ module Dependabot
117
117
  params(
118
118
  dependency: Dependabot::Dependency,
119
119
  dependency_files: T::Array[Dependabot::DependencyFile],
120
+ ignored_versions: T::Array[String],
120
121
  cooldown_options: T.nilable(Dependabot::Package::ReleaseCooldownOptions)
121
122
  ).void
122
123
  end
123
- def initialize(dependency:, dependency_files:, cooldown_options: nil)
124
+ def initialize(dependency:, dependency_files:, ignored_versions: [], cooldown_options: nil)
124
125
  @dependency = dependency
125
126
  @dependency_files = dependency_files
127
+ @ignored_versions = ignored_versions
126
128
  @cooldown_options = cooldown_options
127
129
 
128
130
  @install_metadata = T.let(nil, T.nilable(T::Hash[String, Dependabot::Elm::Version]))
@@ -137,9 +139,17 @@ module Dependabot
137
139
  # unlock requirements are `none`. Just return the current version.
138
140
  return current_version if unlock_requirement == :none
139
141
 
140
- # Otherwise, we gotta check a few conditions to see if bumping
141
- # wouldn't also bump other deps in elm.json
142
- fetch_latest_resolvable_version(unlock_requirement)
142
+ current = current_version
143
+ # Run the solver first so errors (unsupported deps, invalid layouts) propagate
144
+ resolved = fetch_latest_resolvable_version(unlock_requirement)
145
+ return current unless resolved
146
+ # If there is no current version (e.g., only a range in elm.json), treat any
147
+ # successfully resolved version as the candidate update.
148
+ return cap_at_max_allowed_version(resolved) unless current
149
+ return current unless resolved > current
150
+
151
+ # Cap the solver result at the highest non-ignored, non-cooldown version
152
+ cap_at_max_allowed_version(resolved)
143
153
  end
144
154
 
145
155
  sig { returns(T::Array[Dependabot::Dependency]) }
@@ -181,6 +191,27 @@ module Dependabot
181
191
  sig { returns(T::Array[Dependabot::DependencyFile]) }
182
192
  attr_reader :dependency_files
183
193
 
194
+ sig { returns(T::Array[String]) }
195
+ attr_reader :ignored_versions
196
+
197
+ sig { params(resolved: Dependabot::Elm::Version).returns(Dependabot::Elm::Version) }
198
+ def cap_at_max_allowed_version(resolved)
199
+ current = current_version
200
+ releases = package_releases
201
+ releases = filter_ignored_versions(T.must(releases))
202
+ releases = filter_by_cooldown(releases)
203
+ max_allowed = releases.max_by(&:version)&.version
204
+
205
+ return resolved unless current
206
+ return current unless max_allowed && max_allowed > current
207
+
208
+ if resolved > max_allowed
209
+ T.cast(max_allowed, Dependabot::Elm::Version)
210
+ else
211
+ resolved
212
+ end
213
+ end
214
+
184
215
  sig { returns(T.nilable(T::Array[Dependabot::Package::PackageRelease])) }
185
216
  def package_releases
186
217
  T.let(
@@ -197,17 +228,6 @@ module Dependabot
197
228
  result = check_install_result(changed_deps)
198
229
  version_after_install = changed_deps.fetch(dependency.name)
199
230
 
200
- # returns current version if new proposed version is in cooldown period
201
- new_release = package_releases&.find { |release| release.version == version_after_install }
202
-
203
- if cooldown_options && in_cooldown_period?(T.must(new_release))
204
- Dependabot.logger.info(
205
- "#{dependency.name} #{new_release} is in cooldown period," \
206
- " returning current version #{current_version}"
207
- )
208
- return current_version
209
- end
210
-
211
231
  # If the install was clean then we can definitely update
212
232
  return version_after_install if result == :clean_bump
213
233
 
@@ -75,6 +75,7 @@ module Dependabot
75
75
  Elm19LatestVersionFinder.new(
76
76
  dependency: dependency,
77
77
  dependency_files: dependency_files,
78
+ ignored_versions: ignored_versions,
78
79
  cooldown_options: update_cooldown
79
80
  )
80
81
  end,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-elm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.364.0
4
+ version: 0.365.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.364.0
18
+ version: 0.365.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.364.0
25
+ version: 0.365.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -261,7 +261,7 @@ licenses:
261
261
  - MIT
262
262
  metadata:
263
263
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
264
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.364.0
264
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.365.0
265
265
  rdoc_options: []
266
266
  require_paths:
267
267
  - lib