dependabot-bundler 0.292.0 → 0.294.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: f70e4f844c39cf5ceb31f08f8b89ab0e9016a5c5cc3fb6a2a00c32cfaefcf215
4
- data.tar.gz: f0a4e9b166d75b58cf4c43d437564dd031791a38480901b76e3a29f95ccab6d0
3
+ metadata.gz: ea55f401ee91f93504d7b0c6ef45f14b1d6b3a729830c5090ce31fe309425add
4
+ data.tar.gz: 89e1acee2cba3451d660f5cfe54ba52b43ebce4aa8e79399a7ff9ece241c4b93
5
5
  SHA512:
6
- metadata.gz: 4819898bf85d5ba1e082910f1d73af12afde17175a851a2f380699427f7e1afe04b5c69480e1487011a6f2021d316f169e20cbd9122d935fd51d067cc00a3b56
7
- data.tar.gz: 3a09cd58020bfe7bf75aefa5c0f31be81b23666b0535d04ec623f35de008782fbf2fd286c736cc053686ae2d1ebd8ad7ef0834a5704b0da1717fef485553e9a0
6
+ metadata.gz: ed004691bff5b07c9f3b3e910cc4b2b9d36b067bc012bb1acb76ce2698b0642bdace106c0f91c30891d40faeb61910162b0cc3501c835caec69f06b434f82e23
7
+ data.tar.gz: 8aa29af8206e1ec201e040ab59f8580fcd898f970a54bc60babd21179ba15f1d77415a20f3d147423508f5ed331d2daa6fe01f4512dc9deae7378b7642fd719b
@@ -55,7 +55,7 @@ module Bundler
55
55
  spec = Bundler.load_gemspec(spec_path)
56
56
  next unless spec
57
57
 
58
- Bundler.rubygems.set_installed_by_version(spec)
58
+ spec.installed_by_version = Gem::VERSION
59
59
  Bundler.rubygems.validate(spec)
60
60
  File.binwrite(spec_path, spec.to_ruby)
61
61
  end
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "dependabot/bundler/file_updater"
@@ -7,19 +7,23 @@ module Dependabot
7
7
  module Bundler
8
8
  class FileUpdater
9
9
  class GemfileUpdater
10
+ extend T::Sig
11
+
10
12
  GEMFILE_FILENAMES = %w(Gemfile gems.rb).freeze
11
13
 
12
14
  require_relative "git_pin_replacer"
13
15
  require_relative "git_source_remover"
14
16
  require_relative "requirement_replacer"
15
17
 
18
+ sig { params(dependencies: T::Array[Dependabot::Dependency], gemfile: Dependabot::DependencyFile).void }
16
19
  def initialize(dependencies:, gemfile:)
17
20
  @dependencies = dependencies
18
21
  @gemfile = gemfile
19
22
  end
20
23
 
24
+ sig { returns(String) }
21
25
  def updated_gemfile_content
22
- content = gemfile.content
26
+ content = T.must(gemfile.content)
23
27
 
24
28
  dependencies.each do |dependency|
25
29
  content = replace_gemfile_version_requirement(
@@ -38,21 +42,27 @@ module Dependabot
38
42
 
39
43
  private
40
44
 
45
+ sig { returns(T::Array[Dependabot::Dependency]) }
41
46
  attr_reader :dependencies
47
+
48
+ sig { returns(Dependabot::DependencyFile) }
42
49
  attr_reader :gemfile
43
50
 
51
+ sig do
52
+ params(dependency: Dependabot::Dependency, file: Dependabot::DependencyFile, content: String).returns(String)
53
+ end
44
54
  def replace_gemfile_version_requirement(dependency, file, content)
45
55
  return content unless requirement_changed?(file, dependency)
46
56
 
47
57
  updated_requirement =
48
58
  dependency.requirements
49
59
  .find { |r| r[:file] == file.name }
50
- .fetch(:requirement)
60
+ &.fetch(:requirement)
51
61
 
52
62
  previous_requirement =
53
63
  dependency.previous_requirements
54
- .find { |r| r[:file] == file.name }
55
- .fetch(:requirement)
64
+ &.find { |r| r[:file] == file.name }
65
+ &.fetch(:requirement)
56
66
 
57
67
  RequirementReplacer.new(
58
68
  dependency: dependency,
@@ -62,17 +72,19 @@ module Dependabot
62
72
  ).rewrite(content)
63
73
  end
64
74
 
75
+ sig { params(file: Dependabot::DependencyFile, dependency: Dependabot::Dependency).returns(T::Boolean) }
65
76
  def requirement_changed?(file, dependency)
66
77
  changed_requirements =
67
- dependency.requirements - dependency.previous_requirements
78
+ dependency.requirements - T.must(dependency.previous_requirements)
68
79
 
69
80
  changed_requirements.any? { |f| f[:file] == file.name }
70
81
  end
71
82
 
83
+ sig { params(dependency: Dependabot::Dependency).returns(T::Boolean) }
72
84
  def remove_git_source?(dependency)
73
85
  old_gemfile_req =
74
86
  dependency.previous_requirements
75
- .find { |f| GEMFILE_FILENAMES.include?(f[:file]) }
87
+ &.find { |f| GEMFILE_FILENAMES.include?(f[:file]) }
76
88
 
77
89
  return false unless old_gemfile_req&.dig(:source, :type) == "git"
78
90
 
@@ -80,9 +92,10 @@ module Dependabot
80
92
  dependency.requirements
81
93
  .find { |f| GEMFILE_FILENAMES.include?(f[:file]) }
82
94
 
83
- new_gemfile_req[:source].nil?
95
+ T.must(new_gemfile_req)[:source].nil?
84
96
  end
85
97
 
98
+ sig { params(dependency: Dependabot::Dependency, file: Dependabot::DependencyFile).returns(T::Boolean) }
86
99
  def update_git_pin?(dependency, file)
87
100
  new_gemfile_req =
88
101
  dependency.requirements
@@ -91,18 +104,23 @@ module Dependabot
91
104
 
92
105
  # If the new requirement is a git dependency with a ref then there's
93
106
  # no harm in doing an update
94
- new_gemfile_req.dig(:source, :ref)
107
+ !T.must(new_gemfile_req).dig(:source, :ref).nil?
95
108
  end
96
109
 
110
+ sig { params(dependency: Dependabot::Dependency, content: String).returns(String) }
97
111
  def remove_gemfile_git_source(dependency, content)
98
112
  GitSourceRemover.new(dependency: dependency).rewrite(content)
99
113
  end
100
114
 
115
+ sig do
116
+ params(dependency: Dependabot::Dependency, file: Dependabot::DependencyFile, content: String).returns(String)
117
+ end
101
118
  def update_gemfile_git_pin(dependency, file, content)
102
119
  new_pin =
103
120
  dependency.requirements
104
121
  .find { |f| f[:file] == file.name }
105
- .fetch(:source).fetch(:ref)
122
+ &.fetch(:source)
123
+ &.fetch(:ref)
106
124
 
107
125
  GitPinReplacer
108
126
  .new(dependency: dependency, new_pin: new_pin)
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "parser/current"
@@ -8,13 +8,20 @@ module Dependabot
8
8
  module Bundler
9
9
  class FileUpdater
10
10
  class GemspecDependencyNameFinder
11
+ extend T::Sig
12
+
13
+ ChildNode = T.type_alias { T.nilable(T.any(Parser::AST::Node, Symbol, String)) }
14
+
15
+ sig { returns(String) }
11
16
  attr_reader :gemspec_content
12
17
 
18
+ sig { params(gemspec_content: String).void }
13
19
  def initialize(gemspec_content:)
14
20
  @gemspec_content = gemspec_content
15
21
  end
16
22
 
17
23
  # rubocop:disable Security/Eval
24
+ sig { returns(T.nilable(String)) }
18
25
  def dependency_name
19
26
  ast = Parser::CurrentRuby.parse(gemspec_content)
20
27
  dependency_name_node = find_dependency_name_node(ast)
@@ -30,6 +37,7 @@ module Dependabot
30
37
 
31
38
  private
32
39
 
40
+ sig { params(node: ChildNode).returns(T.nilable(Parser::AST::Node)) }
33
41
  def find_dependency_name_node(node)
34
42
  return unless node.is_a?(Parser::AST::Node)
35
43
  return node if declares_dependency_name?(node)
@@ -40,6 +48,7 @@ module Dependabot
40
48
  end
41
49
  end
42
50
 
51
+ sig { params(node: ChildNode).returns(T::Boolean) }
43
52
  def declares_dependency_name?(node)
44
53
  return false unless node.is_a?(Parser::AST::Node)
45
54
 
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "dependabot/bundler/file_updater"
@@ -9,13 +9,17 @@ module Dependabot
9
9
  class GemspecUpdater
10
10
  require_relative "requirement_replacer"
11
11
 
12
+ extend T::Sig
13
+
14
+ sig { params(dependencies: T::Array[Dependabot::Dependency], gemspec: Dependabot::DependencyFile).void }
12
15
  def initialize(dependencies:, gemspec:)
13
- @dependencies = dependencies
14
- @gemspec = gemspec
16
+ @dependencies = T.let(dependencies, T::Array[Dependabot::Dependency])
17
+ @gemspec = T.let(gemspec, Dependabot::DependencyFile)
15
18
  end
16
19
 
20
+ sig { returns(String) }
17
21
  def updated_gemspec_content
18
- content = gemspec.content
22
+ content = T.let(T.must(gemspec.content), String)
19
23
 
20
24
  dependencies.each do |dependency|
21
25
  content = replace_gemspec_version_requirement(
@@ -28,21 +32,28 @@ module Dependabot
28
32
 
29
33
  private
30
34
 
35
+ sig { returns(T::Array[Dependabot::Dependency]) }
31
36
  attr_reader :dependencies
37
+
38
+ sig { returns(Dependabot::DependencyFile) }
32
39
  attr_reader :gemspec
33
40
 
41
+ sig do
42
+ params(gemspec: Dependabot::DependencyFile, dependency: Dependabot::Dependency,
43
+ content: String).returns(String)
44
+ end
34
45
  def replace_gemspec_version_requirement(gemspec, dependency, content)
35
46
  return content unless requirement_changed?(gemspec, dependency)
36
47
 
37
48
  updated_requirement =
38
- dependency.requirements
39
- .find { |r| r[:file] == gemspec.name }
40
- .fetch(:requirement)
49
+ T.must(dependency.requirements
50
+ .find { |r| r[:file] == gemspec.name })
51
+ .fetch(:requirement)
41
52
 
42
53
  previous_requirement =
43
- dependency.previous_requirements
44
- .find { |r| r[:file] == gemspec.name }
45
- .fetch(:requirement)
54
+ T.must(T.must(dependency.previous_requirements)
55
+ .find { |r| r[:file] == gemspec.name })
56
+ .fetch(:requirement)
46
57
 
47
58
  RequirementReplacer.new(
48
59
  dependency: dependency,
@@ -52,9 +63,10 @@ module Dependabot
52
63
  ).rewrite(content)
53
64
  end
54
65
 
66
+ sig { params(file: Dependabot::DependencyFile, dependency: Dependabot::Dependency).returns(T::Boolean) }
55
67
  def requirement_changed?(file, dependency)
56
68
  changed_requirements =
57
- dependency.requirements - dependency.previous_requirements
69
+ dependency.requirements - T.must(dependency.previous_requirements)
58
70
 
59
71
  changed_requirements.any? { |f| f[:file] == file.name }
60
72
  end
@@ -9,12 +9,12 @@ module Dependabot
9
9
  module Bundler
10
10
  class FileUpdater
11
11
  class RubyRequirementSetter
12
- class RubyVersionNotFound < StandardError; end
13
-
14
12
  RUBY_VERSIONS = %w(
15
13
  1.8.7 1.9.3 2.0.0 2.1.10 2.2.10 2.3.8 2.4.10 2.5.9 2.6.9 2.7.6 3.0.6 3.1.6 3.2.4 3.3.6
16
14
  ).freeze
17
15
 
16
+ LANGUAGE = "ruby"
17
+
18
18
  attr_reader :gemspec
19
19
 
20
20
  def initialize(gemspec:)
@@ -62,7 +62,13 @@ module Dependabot
62
62
  .map { |v| Gem::Version.new(v) }.sort
63
63
  .find { |v| requirement.satisfied_by?(v) }
64
64
 
65
- raise RubyVersionNotFound unless ruby_version
65
+ unless ruby_version
66
+ raise ToolVersionNotSupported.new(
67
+ LANGUAGE,
68
+ requirement.to_s,
69
+ RUBY_VERSIONS.join(", ")
70
+ )
71
+ end
66
72
 
67
73
  ruby_version
68
74
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.292.0
4
+ version: 0.294.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-01-09 00:00:00.000000000 Z
11
+ date: 2025-01-23 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.292.0
19
+ version: 0.294.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.292.0
26
+ version: 0.294.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: parallel
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -322,7 +322,7 @@ licenses:
322
322
  - MIT
323
323
  metadata:
324
324
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
325
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.292.0
325
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.294.0
326
326
  post_install_message:
327
327
  rdoc_options: []
328
328
  require_paths: