dependabot-elm 0.299.1 → 0.300.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: 5e8238dda785b28e4f6b9f4c18cc34c21e41a9e249b2a9a19b5cddc68695c1d3
4
- data.tar.gz: 7f97f69920637588afacce901fa5f851d966bf84413604beabc5252234373248
3
+ metadata.gz: 44e5852715cc8edb9f556f249cf57c5b49a357d21d44d5d5843adfe61cf68ed8
4
+ data.tar.gz: c64d802a4334a7a9274dcf1864fcd14b559f4cdd7bc400642c792f292b4df4ca
5
5
  SHA512:
6
- metadata.gz: 88a11490b84c0967df8beaaea75cd21e8c991d4dbb3c349b0d5dec8ce9008d71f9be84883a793bddb51112c4cb50c1ed3bd6930469d2762b64ff4fa9af4ba1fd
7
- data.tar.gz: b0acbc614de131f419eb5058674c6cbafcb6b735b049628acd9cc34112f183f14f4c6b10453897ea10f5daaf454bedd48d56a7abda2eca6950fae1d878c134ec
6
+ metadata.gz: ac343cd2fd2d38e6a1a4c59317ad079c7cb47f6654bffcd1a112d2cac45c627a5bb9bff53b79390d53e621a135a6a0ceb6da935f9efc24323a368067b636d2f9
7
+ data.tar.gz: 0f8252922e02c171289e5aa1a61a03d0039a4d0c2395750e97b1cd75afcb53031e31c6a1c5a7715c6b54dac16b13200396031116bd0d96cc7fcfa631bde7673f
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strong
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "dependabot/elm/version"
@@ -8,9 +8,12 @@ module Dependabot
8
8
  module Elm
9
9
  class UpdateChecker
10
10
  class CliParser
11
+ extend T::Sig
12
+
11
13
  INSTALL_DEPENDENCY_REGEX = %r{([^\s]+\/[^\s]+)\s+(\d+\.\d+\.\d+)}
12
14
  UPGRADE_DEPENDENCY_REGEX = %r{([^\s]+\/[^\s]+) \(\d+\.\d+\.\d+ => (\d+\.\d+\.\d+)\)}
13
15
 
16
+ sig { params(text: String).returns(T::Hash[String, Elm::Version]) }
14
17
  def self.decode_install_preview(text)
15
18
  installs = {}
16
19
 
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "open3"
@@ -28,6 +28,9 @@ module Dependabot
28
28
  def initialize(dependency:, dependency_files:)
29
29
  @dependency = dependency
30
30
  @dependency_files = dependency_files
31
+
32
+ @install_metadata = T.let(nil, T.nilable(T::Hash[String, Dependabot::Elm::Version]))
33
+ @original_dependency_details ||= T.let(nil, T.nilable(T::Array[Dependabot::Dependency]))
31
34
  end
32
35
 
33
36
  sig { params(unlock_requirement: Symbol).returns(T.nilable(Dependabot::Elm::Version)) }
@@ -113,22 +116,26 @@ module Dependabot
113
116
 
114
117
  sig { returns(T::Hash[String, Dependabot::Elm::Version]) }
115
118
  def install_metadata
116
- @install_metadata ||=
117
- SharedHelpers.in_a_temporary_directory do
118
- write_temporary_dependency_files
119
-
120
- # Elm package install outputs a preview of the actions to be
121
- # performed. We can use this preview to calculate whether it
122
- # would do anything funny
123
- dependency_name = Shellwords.escape(dependency.name)
124
- command = "yes n | elm19 install #{dependency_name}"
125
- response = run_shell_command(command)
126
-
127
- CliParser.decode_install_preview(response)
128
- rescue SharedHelpers::HelperSubprocessFailed => e
129
- # 5) We bump our dep but elm blows up
130
- handle_elm_errors(e)
131
- end
119
+ @install_metadata ||= parse_install_metadata
120
+ end
121
+
122
+ sig { returns(T.any(T::Hash[String, Dependabot::Elm::Version], T.noreturn)) }
123
+ def parse_install_metadata
124
+ SharedHelpers.in_a_temporary_directory do
125
+ write_temporary_dependency_files
126
+
127
+ # Elm package install outputs a preview of the actions to be
128
+ # performed. We can use this preview to calculate whether it
129
+ # would do anything funny
130
+ dependency_name = Shellwords.escape(dependency.name)
131
+ command = "yes n | elm19 install #{dependency_name}"
132
+ response = run_shell_command(command)
133
+
134
+ CliParser.decode_install_preview(response)
135
+ rescue SharedHelpers::HelperSubprocessFailed => e
136
+ # 5) We bump our dep but elm blows up
137
+ handle_elm_errors(e)
138
+ end
132
139
  end
133
140
 
134
141
  sig { params(command: String).returns(::String) }
@@ -151,7 +158,7 @@ module Dependabot
151
158
  )
152
159
  end
153
160
 
154
- sig { params(error: Dependabot::DependabotError).void }
161
+ sig { params(error: Dependabot::DependabotError).returns(T.noreturn) }
155
162
  def handle_elm_errors(error)
156
163
  if error.message.include?("OLD DEPENDENCIES") ||
157
164
  error.message.include?("BAD JSON")
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "excon"
@@ -10,15 +10,19 @@ require "dependabot/errors"
10
10
  module Dependabot
11
11
  module Elm
12
12
  class UpdateChecker < Dependabot::UpdateCheckers::Base
13
+ extend T::Sig
14
+
13
15
  require_relative "update_checker/requirements_updater"
14
16
  require_relative "update_checker/elm_19_version_resolver"
15
17
 
18
+ sig { override.returns(T.nilable(Dependabot::Version)) }
16
19
  def latest_version
17
- @latest_version ||= candidate_versions.max
20
+ @latest_version ||= T.let(candidate_versions.max, T.nilable(Dependabot::Version))
18
21
  end
19
22
 
20
23
  # Overwrite the base class to allow multi-dependency update PRs for
21
24
  # dependencies for which we don't have a version.
25
+ sig { override.params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
22
26
  def can_update?(requirements_to_unlock:)
23
27
  if dependency.appears_in_lockfile?
24
28
  version_can_update?(requirements_to_unlock: requirements_to_unlock)
@@ -28,15 +32,20 @@ module Dependabot
28
32
  requirements_can_update?
29
33
  elsif requirements_to_unlock == :all
30
34
  updated_dependencies_after_full_unlock.any?
35
+ else
36
+ false
31
37
  end
32
38
  end
33
39
 
40
+ sig { override.returns(T.nilable(Dependabot::Version)) }
34
41
  def latest_resolvable_version
35
- @latest_resolvable_version ||=
42
+ @latest_resolvable_version ||= T.let(
36
43
  version_resolver
37
- .latest_resolvable_version(unlock_requirement: :own)
44
+ .latest_resolvable_version(unlock_requirement: :own), T.nilable(Dependabot::Version)
45
+ )
38
46
  end
39
47
 
48
+ sig { override.returns(T.nilable(Dependabot::Version)) }
40
49
  def latest_resolvable_version_with_no_unlock
41
50
  # Irrelevant, since Elm has a single dependency file (well, there's
42
51
  # also `exact-dependencies.json`, but it's not recommended that that
@@ -44,6 +53,7 @@ module Dependabot
44
53
  nil
45
54
  end
46
55
 
56
+ sig { override.returns(T::Array[T::Hash[Symbol, T.nilable(String)]]) }
47
57
  def updated_requirements
48
58
  RequirementsUpdater.new(
49
59
  requirements: dependency.requirements,
@@ -53,8 +63,9 @@ module Dependabot
53
63
 
54
64
  private
55
65
 
66
+ sig { returns(Elm19VersionResolver) }
56
67
  def version_resolver
57
- @version_resolver ||=
68
+ @version_resolver ||= T.let(
58
69
  begin
59
70
  unless dependency.requirements.any? { |r| r.fetch(:file) == MANIFEST_FILE }
60
71
  raise Dependabot::DependencyFileNotResolvable, "No #{MANIFEST_FILE} found"
@@ -64,18 +75,22 @@ module Dependabot
64
75
  dependency: dependency,
65
76
  dependency_files: dependency_files
66
77
  )
67
- end
78
+ end, T.nilable(Elm19VersionResolver)
79
+ )
68
80
  end
69
81
 
82
+ sig { override.returns(T::Array[Dependabot::Dependency]) }
70
83
  def updated_dependencies_after_full_unlock
71
84
  version_resolver.updated_dependencies_after_full_unlock
72
85
  end
73
86
 
87
+ sig { override.returns(T::Boolean) }
74
88
  def latest_version_resolvable_with_full_unlock?
75
89
  latest_version == version_resolver
76
90
  .latest_resolvable_version(unlock_requirement: :all)
77
91
  end
78
92
 
93
+ sig { returns(T::Array[Dependabot::Version]) }
79
94
  def candidate_versions
80
95
  filtered = all_versions
81
96
  .reject { |v| ignore_requirements.any? { |r| r.satisfied_by?(v) } }
@@ -87,6 +102,7 @@ module Dependabot
87
102
  filtered
88
103
  end
89
104
 
105
+ sig { params(versions_array: T::Array[Dependabot::Version]).returns(T::Array[Dependabot::Version]) }
90
106
  def filter_lower_versions(versions_array)
91
107
  return versions_array unless current_version
92
108
 
@@ -94,10 +110,12 @@ module Dependabot
94
110
  .select { |version| version > current_version }
95
111
  end
96
112
 
113
+ sig { returns(T::Array[Dependabot::Version]) }
97
114
  def all_versions
98
- @all_versions ||= fetch_all_versions
115
+ @all_versions ||= T.let(fetch_all_versions, T.nilable(T::Array[Dependabot::Version]))
99
116
  end
100
117
 
118
+ sig { returns(T::Array[Dependabot::Version]) }
101
119
  def fetch_all_versions
102
120
  response = Dependabot::RegistryClient.get(
103
121
  url: "https://package.elm-lang.org/packages/#{dependency.name}/releases.json"
@@ -113,6 +131,7 @@ module Dependabot
113
131
 
114
132
  # Overwrite the base class's requirements_up_to_date? method to instead
115
133
  # check whether the latest version is allowed
134
+ sig { override.returns(T::Boolean) }
116
135
  def requirements_up_to_date?
117
136
  return false unless latest_version
118
137
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-elm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.299.1
4
+ version: 0.300.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-28 00:00:00.000000000 Z
11
+ date: 2025-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dependabot-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.299.1
19
+ version: 0.300.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.299.1
26
+ version: 0.300.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: debug
29
29
  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.299.1
264
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.300.0
265
265
  post_install_message:
266
266
  rdoc_options: []
267
267
  require_paths: