dependabot-bundler 0.334.0 → 0.336.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 +4 -4
 - data/helpers/v2/lib/functions/force_updater.rb +7 -2
 - data/helpers/v2/lib/functions/version_resolver.rb +6 -2
 - data/helpers/v2/spec/functions/conflicting_dependency_resolver_spec.rb +64 -52
 - data/helpers/v2/spec/functions/dependency_source_spec.rb +14 -10
 - data/helpers/v2/spec/functions/version_resolver_spec.rb +4 -2
 - data/lib/dependabot/bundler/file_fetcher.rb +12 -6
 - data/lib/dependabot/bundler/file_parser.rb +4 -2
 - data/lib/dependabot/bundler/file_updater/gemspec_updater.rb +13 -6
 - data/lib/dependabot/bundler/file_updater/lockfile_updater.rb +7 -2
 - data/lib/dependabot/bundler/file_updater/requirement_replacer.rb +18 -7
 - data/lib/dependabot/bundler/metadata_finder.rb +13 -10
 - data/lib/dependabot/bundler/package/package_details_fetcher.rb +60 -2
 - data/lib/dependabot/bundler/update_checker/file_preparer.rb +12 -6
 - data/lib/dependabot/bundler/update_checker/force_updater.rb +10 -4
 - data/lib/dependabot/bundler/update_checker/latest_version_finder/dependency_source.rb +6 -4
 - data/lib/dependabot/bundler/update_checker/latest_version_finder.rb +4 -2
 - data/lib/dependabot/bundler/update_checker/requirements_updater.rb +19 -6
 - data/lib/dependabot/bundler/update_checker/version_resolver.rb +14 -7
 - data/lib/dependabot/bundler/update_checker.rb +13 -6
 - metadata +12 -12
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 0d81eae78c38a98b8637024836c9fa8c219916509e07cb207fca3fdaf017cc95
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e99f4c6991029f7f44fc0a82c79298e7b57ca5e52e723abcf7e0a29f23635d2e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 34cd1e356e391a6606063e807f2aa190dbe5e2812d3a207b625b222c02515cc24f5ea1066d99b96ced8a1bb26d0c23144eefb1ec75a534ee907936716906e261
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 20c66bb7c4d1293f0fb19f3f5ebec61de873f3a21066b6d4ee9935d0bb858151d381c91e2f5979bd727b226fd787de6f1f8fd71b1f9979dfc54a5d9aad124f04
         
     | 
| 
         @@ -5,8 +5,13 @@ module Functions 
     | 
|
| 
       5 
5 
     | 
    
         
             
              class ForceUpdater
         
     | 
| 
       6 
6 
     | 
    
         
             
                class TopLevelDependencyDowngradedError < StandardError; end
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                def initialize( 
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
                def initialize(
         
     | 
| 
      
 9 
     | 
    
         
            +
                  dependency_name:,
         
     | 
| 
      
 10 
     | 
    
         
            +
                  target_version:,
         
     | 
| 
      
 11 
     | 
    
         
            +
                  gemfile_name:,
         
     | 
| 
      
 12 
     | 
    
         
            +
                  lockfile_name:,
         
     | 
| 
      
 13 
     | 
    
         
            +
                  update_multiple_dependencies:
         
     | 
| 
      
 14 
     | 
    
         
            +
                )
         
     | 
| 
       10 
15 
     | 
    
         
             
                  @dependency_name = dependency_name
         
     | 
| 
       11 
16 
     | 
    
         
             
                  @target_version = target_version
         
     | 
| 
       12 
17 
     | 
    
         
             
                  @gemfile_name = gemfile_name
         
     | 
| 
         @@ -10,8 +10,12 @@ module Functions 
     | 
|
| 
       10 
10 
     | 
    
         
             
                attr_reader :gemfile_name
         
     | 
| 
       11 
11 
     | 
    
         
             
                attr_reader :lockfile_name
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                def initialize( 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                def initialize(
         
     | 
| 
      
 14 
     | 
    
         
            +
                  dependency_name:,
         
     | 
| 
      
 15 
     | 
    
         
            +
                  dependency_requirements:,
         
     | 
| 
      
 16 
     | 
    
         
            +
                  gemfile_name:,
         
     | 
| 
      
 17 
     | 
    
         
            +
                  lockfile_name:
         
     | 
| 
      
 18 
     | 
    
         
            +
                )
         
     | 
| 
       15 
19 
     | 
    
         
             
                  @dependency_name = dependency_name
         
     | 
| 
       16 
20 
     | 
    
         
             
                  @dependency_requirements = dependency_requirements
         
     | 
| 
       17 
21 
     | 
    
         
             
                  @gemfile_name = gemfile_name
         
     | 
| 
         @@ -42,42 +42,50 @@ RSpec.describe Functions::ConflictingDependencyResolver do 
     | 
|
| 
       42 
42 
     | 
    
         
             
                  let(:target_version) { "6.0.0" }
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                  it "returns a list of dependencies that block the update" do
         
     | 
| 
       45 
     | 
    
         
            -
                    expect(conflicting_dependencies).to contain_exactly( 
     | 
| 
       46 
     | 
    
         
            -
                       
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                       
     | 
| 
       52 
     | 
    
         
            -
                       
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                       
     | 
| 
       58 
     | 
    
         
            -
                       
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                       
     | 
| 
       64 
     | 
    
         
            -
                       
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                       
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                       
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
                    expect(conflicting_dependencies).to contain_exactly(
         
     | 
| 
      
 46 
     | 
    
         
            +
                      {
         
     | 
| 
      
 47 
     | 
    
         
            +
                        "explanation" => "rails (5.2.0) requires activesupport (= 5.2.0)",
         
     | 
| 
      
 48 
     | 
    
         
            +
                        "name" => "rails",
         
     | 
| 
      
 49 
     | 
    
         
            +
                        "requirement" => "= 5.2.0",
         
     | 
| 
      
 50 
     | 
    
         
            +
                        "version" => "5.2.0"
         
     | 
| 
      
 51 
     | 
    
         
            +
                      },
         
     | 
| 
      
 52 
     | 
    
         
            +
                      {
         
     | 
| 
      
 53 
     | 
    
         
            +
                        "explanation" => "rails (5.2.0) requires activesupport (= 5.2.0) via actionpack (5.2.0)",
         
     | 
| 
      
 54 
     | 
    
         
            +
                        "name" => "actionpack",
         
     | 
| 
      
 55 
     | 
    
         
            +
                        "version" => "5.2.0",
         
     | 
| 
      
 56 
     | 
    
         
            +
                        "requirement" => "= 5.2.0"
         
     | 
| 
      
 57 
     | 
    
         
            +
                      },
         
     | 
| 
      
 58 
     | 
    
         
            +
                      {
         
     | 
| 
      
 59 
     | 
    
         
            +
                        "explanation" => "rails (5.2.0) requires activesupport (= 5.2.0) via actionview (5.2.0)",
         
     | 
| 
      
 60 
     | 
    
         
            +
                        "name" => "actionview",
         
     | 
| 
      
 61 
     | 
    
         
            +
                        "version" => "5.2.0",
         
     | 
| 
      
 62 
     | 
    
         
            +
                        "requirement" => "= 5.2.0"
         
     | 
| 
      
 63 
     | 
    
         
            +
                      },
         
     | 
| 
      
 64 
     | 
    
         
            +
                      {
         
     | 
| 
      
 65 
     | 
    
         
            +
                        "explanation" => "rails (5.2.0) requires activesupport (= 5.2.0) via activejob (5.2.0)",
         
     | 
| 
      
 66 
     | 
    
         
            +
                        "name" => "activejob",
         
     | 
| 
      
 67 
     | 
    
         
            +
                        "version" => "5.2.0",
         
     | 
| 
      
 68 
     | 
    
         
            +
                        "requirement" => "= 5.2.0"
         
     | 
| 
      
 69 
     | 
    
         
            +
                      },
         
     | 
| 
      
 70 
     | 
    
         
            +
                      {
         
     | 
| 
      
 71 
     | 
    
         
            +
                        "explanation" => "rails (5.2.0) requires activesupport (= 5.2.0) via activemodel (5.2.0)",
         
     | 
| 
      
 72 
     | 
    
         
            +
                        "name" => "activemodel",
         
     | 
| 
      
 73 
     | 
    
         
            +
                        "version" => "5.2.0",
         
     | 
| 
      
 74 
     | 
    
         
            +
                        "requirement" => "= 5.2.0"
         
     | 
| 
      
 75 
     | 
    
         
            +
                      },
         
     | 
| 
      
 76 
     | 
    
         
            +
                      {
         
     | 
| 
      
 77 
     | 
    
         
            +
                        "explanation" => "rails (5.2.0) requires activesupport (= 5.2.0) via activerecord (5.2.0)",
         
     | 
| 
      
 78 
     | 
    
         
            +
                        "name" => "activerecord",
         
     | 
| 
      
 79 
     | 
    
         
            +
                        "version" => "5.2.0",
         
     | 
| 
      
 80 
     | 
    
         
            +
                        "requirement" => "= 5.2.0"
         
     | 
| 
      
 81 
     | 
    
         
            +
                      },
         
     | 
| 
      
 82 
     | 
    
         
            +
                      {
         
     | 
| 
      
 83 
     | 
    
         
            +
                        "explanation" => "rails (5.2.0) requires activesupport (= 5.2.0) via railties (5.2.0)",
         
     | 
| 
      
 84 
     | 
    
         
            +
                        "name" => "railties",
         
     | 
| 
      
 85 
     | 
    
         
            +
                        "version" => "5.2.0",
         
     | 
| 
      
 86 
     | 
    
         
            +
                        "requirement" => "= 5.2.0"
         
     | 
| 
      
 87 
     | 
    
         
            +
                      }
         
     | 
| 
      
 88 
     | 
    
         
            +
                    )
         
     | 
| 
       81 
89 
     | 
    
         
             
                  end
         
     | 
| 
       82 
90 
     | 
    
         
             
                end
         
     | 
| 
       83 
91 
     | 
    
         | 
| 
         @@ -88,22 +96,26 @@ RSpec.describe Functions::ConflictingDependencyResolver do 
     | 
|
| 
       88 
96 
     | 
    
         
             
                  let(:project_name) { "multiple_blocking" }
         
     | 
| 
       89 
97 
     | 
    
         | 
| 
       90 
98 
     | 
    
         
             
                  it "returns all of the blocking dependencies" do
         
     | 
| 
       91 
     | 
    
         
            -
                    expect(conflicting_dependencies).to contain_exactly( 
     | 
| 
       92 
     | 
    
         
            -
                       
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                       
     | 
| 
       98 
     | 
    
         
            -
                       
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
                       
     | 
| 
       104 
     | 
    
         
            -
                       
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
      
 99 
     | 
    
         
            +
                    expect(conflicting_dependencies).to contain_exactly(
         
     | 
| 
      
 100 
     | 
    
         
            +
                      {
         
     | 
| 
      
 101 
     | 
    
         
            +
                        "explanation" => "actionmailer (5.0.0) requires activesupport (= 5.0.0) via actionpack (5.0.0)",
         
     | 
| 
      
 102 
     | 
    
         
            +
                        "name" => "actionpack",
         
     | 
| 
      
 103 
     | 
    
         
            +
                        "version" => "5.0.0",
         
     | 
| 
      
 104 
     | 
    
         
            +
                        "requirement" => "= 5.0.0"
         
     | 
| 
      
 105 
     | 
    
         
            +
                      },
         
     | 
| 
      
 106 
     | 
    
         
            +
                      {
         
     | 
| 
      
 107 
     | 
    
         
            +
                        "explanation" => "actionview (5.0.0) requires activesupport (= 5.0.0)",
         
     | 
| 
      
 108 
     | 
    
         
            +
                        "name" => "actionview",
         
     | 
| 
      
 109 
     | 
    
         
            +
                        "version" => "5.0.0",
         
     | 
| 
      
 110 
     | 
    
         
            +
                        "requirement" => "= 5.0.0"
         
     | 
| 
      
 111 
     | 
    
         
            +
                      },
         
     | 
| 
      
 112 
     | 
    
         
            +
                      {
         
     | 
| 
      
 113 
     | 
    
         
            +
                        "explanation" => "actionmailer (5.0.0) requires activesupport (= 5.0.0) via activejob (5.0.0)",
         
     | 
| 
      
 114 
     | 
    
         
            +
                        "name" => "activejob",
         
     | 
| 
      
 115 
     | 
    
         
            +
                        "version" => "5.0.0",
         
     | 
| 
      
 116 
     | 
    
         
            +
                        "requirement" => "= 5.0.0"
         
     | 
| 
      
 117 
     | 
    
         
            +
                      }
         
     | 
| 
      
 118 
     | 
    
         
            +
                    )
         
     | 
| 
       107 
119 
     | 
    
         
             
                  end
         
     | 
| 
       108 
120 
     | 
    
         
             
                end
         
     | 
| 
       109 
121 
     | 
    
         | 
| 
         @@ -40,22 +40,26 @@ RSpec.describe Functions::DependencySource do 
     | 
|
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                it "returns all versions from the private source" do
         
     | 
| 
       43 
     | 
    
         
            -
                  expect(private_registry_versions).to eq( 
     | 
| 
       44 
     | 
    
         
            -
                     
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
                  expect(private_registry_versions).to eq(
         
     | 
| 
      
 44 
     | 
    
         
            +
                    [
         
     | 
| 
      
 45 
     | 
    
         
            +
                      Gem::Version.new("1.5.0"),
         
     | 
| 
      
 46 
     | 
    
         
            +
                      Gem::Version.new("1.9.0"),
         
     | 
| 
      
 47 
     | 
    
         
            +
                      Gem::Version.new("1.10.0.beta")
         
     | 
| 
      
 48 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 49 
     | 
    
         
            +
                  )
         
     | 
| 
       48 
50 
     | 
    
         
             
                end
         
     | 
| 
       49 
51 
     | 
    
         | 
| 
       50 
52 
     | 
    
         
             
                context "when specified as the default source" do
         
     | 
| 
       51 
53 
     | 
    
         
             
                  let(:project_name) { "specified_default_source_no_lockfile" }
         
     | 
| 
       52 
54 
     | 
    
         | 
| 
       53 
55 
     | 
    
         
             
                  it "returns all versions from the private source" do
         
     | 
| 
       54 
     | 
    
         
            -
                    expect(private_registry_versions).to eq( 
     | 
| 
       55 
     | 
    
         
            -
                       
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
      
 56 
     | 
    
         
            +
                    expect(private_registry_versions).to eq(
         
     | 
| 
      
 57 
     | 
    
         
            +
                      [
         
     | 
| 
      
 58 
     | 
    
         
            +
                        Gem::Version.new("1.5.0"),
         
     | 
| 
      
 59 
     | 
    
         
            +
                        Gem::Version.new("1.9.0"),
         
     | 
| 
      
 60 
     | 
    
         
            +
                        Gem::Version.new("1.10.0.beta")
         
     | 
| 
      
 61 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 62 
     | 
    
         
            +
                    )
         
     | 
| 
       59 
63 
     | 
    
         
             
                  end
         
     | 
| 
       60 
64 
     | 
    
         
             
                end
         
     | 
| 
       61 
65 
     | 
    
         | 
| 
         @@ -96,8 +96,10 @@ RSpec.describe Functions::VersionResolver do 
     | 
|
| 
       96 
96 
     | 
    
         
             
                    stub_request(:get, old_index_url + "?gems=business,statesman")
         
     | 
| 
       97 
97 
     | 
    
         
             
                      .to_return(
         
     | 
| 
       98 
98 
     | 
    
         
             
                        status: 200,
         
     | 
| 
       99 
     | 
    
         
            -
                        body: fixture( 
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
      
 99 
     | 
    
         
            +
                        body: fixture(
         
     | 
| 
      
 100 
     | 
    
         
            +
                          "rubygems_responses",
         
     | 
| 
      
 101 
     | 
    
         
            +
                          "dependencies-default-gemfile"
         
     | 
| 
      
 102 
     | 
    
         
            +
                        )
         
     | 
| 
       101 
103 
     | 
    
         
             
                      )
         
     | 
| 
       102 
104 
     | 
    
         
             
                  end
         
     | 
| 
       103 
105 
     | 
    
         | 
| 
         @@ -75,16 +75,20 @@ module Dependabot 
     | 
|
| 
       75 
75 
     | 
    
         
             
                  def gemfile
         
     | 
| 
       76 
76 
     | 
    
         
             
                    return @gemfile if defined?(@gemfile)
         
     | 
| 
       77 
77 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
                    @gemfile = T.let( 
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
                    @gemfile = T.let(
         
     | 
| 
      
 79 
     | 
    
         
            +
                      fetch_file_if_present("gems.rb") || fetch_file_if_present("Gemfile"),
         
     | 
| 
      
 80 
     | 
    
         
            +
                      T.nilable(Dependabot::DependencyFile)
         
     | 
| 
      
 81 
     | 
    
         
            +
                    )
         
     | 
| 
       80 
82 
     | 
    
         
             
                  end
         
     | 
| 
       81 
83 
     | 
    
         | 
| 
       82 
84 
     | 
    
         
             
                  sig { returns(T.nilable(DependencyFile)) }
         
     | 
| 
       83 
85 
     | 
    
         
             
                  def lockfile
         
     | 
| 
       84 
86 
     | 
    
         
             
                    return @lockfile if defined?(@lockfile)
         
     | 
| 
       85 
87 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
                    @lockfile = T.let( 
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
      
 88 
     | 
    
         
            +
                    @lockfile = T.let(
         
     | 
| 
      
 89 
     | 
    
         
            +
                      fetch_file_if_present("gems.locked") || fetch_file_if_present("Gemfile.lock"),
         
     | 
| 
      
 90 
     | 
    
         
            +
                      T.nilable(Dependabot::DependencyFile)
         
     | 
| 
      
 91 
     | 
    
         
            +
                    )
         
     | 
| 
       88 
92 
     | 
    
         
             
                  end
         
     | 
| 
       89 
93 
     | 
    
         | 
| 
       90 
94 
     | 
    
         
             
                  sig { returns(T::Array[Dependabot::DependencyFile]) }
         
     | 
| 
         @@ -239,8 +243,10 @@ module Dependabot 
     | 
|
| 
       239 
243 
     | 
    
         
             
                  end
         
     | 
| 
       240 
244 
     | 
    
         | 
| 
       241 
245 
     | 
    
         
             
                  sig do
         
     | 
| 
       242 
     | 
    
         
            -
                    params( 
     | 
| 
       243 
     | 
    
         
            -
             
     | 
| 
      
 246 
     | 
    
         
            +
                    params(
         
     | 
| 
      
 247 
     | 
    
         
            +
                      file: DependencyFile,
         
     | 
| 
      
 248 
     | 
    
         
            +
                      previously_fetched_files: T::Array[DependencyFile]
         
     | 
| 
      
 249 
     | 
    
         
            +
                    ).returns(T::Array[DependencyFile])
         
     | 
| 
       244 
250 
     | 
    
         
             
                  end
         
     | 
| 
       245 
251 
     | 
    
         
             
                  def fetch_child_gemfiles(file:, previously_fetched_files:)
         
     | 
| 
       246 
252 
     | 
    
         
             
                    paths = ChildGemfileFinder.new(gemfile: file).child_gemfile_paths
         
     | 
| 
         @@ -209,8 +209,10 @@ module Dependabot 
     | 
|
| 
       209 
209 
     | 
    
         
             
                  sig { returns(T::Array[T::Hash[String, T.untyped]]) }
         
     | 
| 
       210 
210 
     | 
    
         
             
                  def parsed_gemfile
         
     | 
| 
       211 
211 
     | 
    
         
             
                    @parsed_gemfile ||= T.let(
         
     | 
| 
       212 
     | 
    
         
            -
                      SharedHelpers.in_a_temporary_repo_directory( 
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
      
 212 
     | 
    
         
            +
                      SharedHelpers.in_a_temporary_repo_directory(
         
     | 
| 
      
 213 
     | 
    
         
            +
                        T.must(base_directory),
         
     | 
| 
      
 214 
     | 
    
         
            +
                        repo_contents_path
         
     | 
| 
      
 215 
     | 
    
         
            +
                      ) do
         
     | 
| 
       214 
216 
     | 
    
         
             
                        write_temporary_dependency_files
         
     | 
| 
       215 
217 
     | 
    
         | 
| 
       216 
218 
     | 
    
         
             
                        NativeHelpers.run_bundler_subprocess(
         
     | 
| 
         @@ -39,20 +39,27 @@ module Dependabot 
     | 
|
| 
       39 
39 
     | 
    
         
             
                    attr_reader :gemspec
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
                    sig do
         
     | 
| 
       42 
     | 
    
         
            -
                      params( 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
                      params(
         
     | 
| 
      
 43 
     | 
    
         
            +
                        gemspec: Dependabot::DependencyFile,
         
     | 
| 
      
 44 
     | 
    
         
            +
                        dependency: Dependabot::Dependency,
         
     | 
| 
      
 45 
     | 
    
         
            +
                        content: String
         
     | 
| 
      
 46 
     | 
    
         
            +
                      ).returns(String)
         
     | 
| 
       44 
47 
     | 
    
         
             
                    end
         
     | 
| 
       45 
48 
     | 
    
         
             
                    def replace_gemspec_version_requirement(gemspec, dependency, content)
         
     | 
| 
       46 
49 
     | 
    
         
             
                      return content unless requirement_changed?(gemspec, dependency)
         
     | 
| 
       47 
50 
     | 
    
         | 
| 
       48 
51 
     | 
    
         
             
                      updated_requirement =
         
     | 
| 
       49 
     | 
    
         
            -
                        T.must( 
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
                        T.must(
         
     | 
| 
      
 53 
     | 
    
         
            +
                          dependency.requirements
         
     | 
| 
      
 54 
     | 
    
         
            +
                                                .find { |r| r[:file] == gemspec.name }
         
     | 
| 
      
 55 
     | 
    
         
            +
                        )
         
     | 
| 
       51 
56 
     | 
    
         
             
                         .fetch(:requirement)
         
     | 
| 
       52 
57 
     | 
    
         | 
| 
       53 
58 
     | 
    
         
             
                      previous_requirement =
         
     | 
| 
       54 
     | 
    
         
            -
                        T.must( 
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 59 
     | 
    
         
            +
                        T.must(
         
     | 
| 
      
 60 
     | 
    
         
            +
                          T.must(dependency.previous_requirements)
         
     | 
| 
      
 61 
     | 
    
         
            +
                                                .find { |r| r[:file] == gemspec.name }
         
     | 
| 
      
 62 
     | 
    
         
            +
                        )
         
     | 
| 
       56 
63 
     | 
    
         
             
                         .fetch(:requirement)
         
     | 
| 
       57 
64 
     | 
    
         | 
| 
       58 
65 
     | 
    
         
             
                      RequirementReplacer.new(
         
     | 
| 
         @@ -36,8 +36,13 @@ module Dependabot 
     | 
|
| 
       36 
36 
     | 
    
         
             
                        repo_contents_path: T.nilable(String)
         
     | 
| 
       37 
37 
     | 
    
         
             
                      ).void
         
     | 
| 
       38 
38 
     | 
    
         
             
                    end
         
     | 
| 
       39 
     | 
    
         
            -
                    def initialize( 
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 39 
     | 
    
         
            +
                    def initialize(
         
     | 
| 
      
 40 
     | 
    
         
            +
                      dependencies:,
         
     | 
| 
      
 41 
     | 
    
         
            +
                      dependency_files:,
         
     | 
| 
      
 42 
     | 
    
         
            +
                      credentials:,
         
     | 
| 
      
 43 
     | 
    
         
            +
                      options:,
         
     | 
| 
      
 44 
     | 
    
         
            +
                      repo_contents_path: nil
         
     | 
| 
      
 45 
     | 
    
         
            +
                    )
         
     | 
| 
       41 
46 
     | 
    
         
             
                      @dependencies = T.let(dependencies, T::Array[Dependabot::Dependency])
         
     | 
| 
       42 
47 
     | 
    
         
             
                      @dependency_files = T.let(dependency_files, T::Array[Dependabot::DependencyFile])
         
     | 
| 
       43 
48 
     | 
    
         
             
                      @repo_contents_path = T.let(repo_contents_path, T.nilable(String))
         
     | 
| 
         @@ -33,8 +33,13 @@ module Dependabot 
     | 
|
| 
       33 
33 
     | 
    
         
             
                        insert_if_bare: T::Boolean
         
     | 
| 
       34 
34 
     | 
    
         
             
                      ).void
         
     | 
| 
       35 
35 
     | 
    
         
             
                    end
         
     | 
| 
       36 
     | 
    
         
            -
                    def initialize( 
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
                    def initialize(
         
     | 
| 
      
 37 
     | 
    
         
            +
                      dependency:,
         
     | 
| 
      
 38 
     | 
    
         
            +
                      file_type:,
         
     | 
| 
      
 39 
     | 
    
         
            +
                      updated_requirement:,
         
     | 
| 
      
 40 
     | 
    
         
            +
                      previous_requirement: nil,
         
     | 
| 
      
 41 
     | 
    
         
            +
                      insert_if_bare: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                    )
         
     | 
| 
       38 
43 
     | 
    
         
             
                      @dependency           = dependency
         
     | 
| 
       39 
44 
     | 
    
         
             
                      @file_type            = file_type
         
     | 
| 
       40 
45 
     | 
    
         
             
                      @updated_requirement  = updated_requirement
         
     | 
| 
         @@ -121,8 +126,12 @@ module Dependabot 
     | 
|
| 
       121 
126 
     | 
    
         
             
                          insert_if_bare: T::Boolean
         
     | 
| 
       122 
127 
     | 
    
         
             
                        ).void
         
     | 
| 
       123 
128 
     | 
    
         
             
                      end
         
     | 
| 
       124 
     | 
    
         
            -
                      def initialize( 
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
      
 129 
     | 
    
         
            +
                      def initialize(
         
     | 
| 
      
 130 
     | 
    
         
            +
                        dependency:,
         
     | 
| 
      
 131 
     | 
    
         
            +
                        file_type:,
         
     | 
| 
      
 132 
     | 
    
         
            +
                        updated_requirement:,
         
     | 
| 
      
 133 
     | 
    
         
            +
                        insert_if_bare:
         
     | 
| 
      
 134 
     | 
    
         
            +
                      )
         
     | 
| 
       126 
135 
     | 
    
         
             
                        @dependency = T.let(dependency, Dependabot::Dependency)
         
     | 
| 
       127 
136 
     | 
    
         
             
                        @file_type = T.let(file_type, Symbol)
         
     | 
| 
       128 
137 
     | 
    
         
             
                        @updated_requirement = T.let(updated_requirement, String)
         
     | 
| 
         @@ -250,9 +259,11 @@ module Dependabot 
     | 
|
| 
       250 
259 
     | 
    
         
             
                          use_equality_operator: T::Boolean
         
     | 
| 
       251 
260 
     | 
    
         
             
                        ).returns(String)
         
     | 
| 
       252 
261 
     | 
    
         
             
                      end
         
     | 
| 
       253 
     | 
    
         
            -
                      def new_requirement_string( 
     | 
| 
       254 
     | 
    
         
            -
             
     | 
| 
       255 
     | 
    
         
            -
             
     | 
| 
      
 262 
     | 
    
         
            +
                      def new_requirement_string(
         
     | 
| 
      
 263 
     | 
    
         
            +
                        quote_characters:,
         
     | 
| 
      
 264 
     | 
    
         
            +
                        space_after_specifier:,
         
     | 
| 
      
 265 
     | 
    
         
            +
                        use_equality_operator:
         
     | 
| 
      
 266 
     | 
    
         
            +
                      )
         
     | 
| 
       256 
267 
     | 
    
         
             
                        open_quote, close_quote = quote_characters
         
     | 
| 
       257 
268 
     | 
    
         
             
                        new_requirement_string =
         
     | 
| 
       258 
269 
     | 
    
         
             
                          updated_requirement.split(",")
         
     | 
| 
         @@ -11,16 +11,19 @@ module Dependabot 
     | 
|
| 
       11 
11 
     | 
    
         
             
                class MetadataFinder < Dependabot::MetadataFinders::Base
         
     | 
| 
       12 
12 
     | 
    
         
             
                  extend T::Sig
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                  SOURCE_KEYS = T.let( 
     | 
| 
       15 
     | 
    
         
            -
                     
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
                  SOURCE_KEYS = T.let(
         
     | 
| 
      
 15 
     | 
    
         
            +
                    %w(
         
     | 
| 
      
 16 
     | 
    
         
            +
                      source_code_uri
         
     | 
| 
      
 17 
     | 
    
         
            +
                      homepage_uri
         
     | 
| 
      
 18 
     | 
    
         
            +
                      wiki_uri
         
     | 
| 
      
 19 
     | 
    
         
            +
                      bug_tracker_uri
         
     | 
| 
      
 20 
     | 
    
         
            +
                      documentation_uri
         
     | 
| 
      
 21 
     | 
    
         
            +
                      changelog_uri
         
     | 
| 
      
 22 
     | 
    
         
            +
                      mailing_list_uri
         
     | 
| 
      
 23 
     | 
    
         
            +
                      download_uri
         
     | 
| 
      
 24 
     | 
    
         
            +
                    ).freeze,
         
     | 
| 
      
 25 
     | 
    
         
            +
                    T::Array[String]
         
     | 
| 
      
 26 
     | 
    
         
            +
                  )
         
     | 
| 
       24 
27 
     | 
    
         | 
| 
       25 
28 
     | 
    
         
             
                  sig do
         
     | 
| 
       26 
29 
     | 
    
         
             
                    params(
         
     | 
| 
         @@ -143,7 +143,9 @@ module Dependabot 
     | 
|
| 
       143 
143 
     | 
    
         
             
                      rescue URI::InvalidURIError
         
     | 
| 
       144 
144 
     | 
    
         
             
                        raise "Invalid registry URL: #{registry_url}"
         
     | 
| 
       145 
145 
     | 
    
         
             
                      end
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                      # Handle GitHub Package Registry
         
     | 
| 
      
 148 
     | 
    
         
            +
                      return github_packages_versions(registry_url) if parsed_url.host == "rubygems.pkg.github.com"
         
     | 
| 
       147 
149 
     | 
    
         | 
| 
       148 
150 
     | 
    
         
             
                      response = registry_json_response_for_dependency(registry_url)
         
     | 
| 
       149 
151 
     | 
    
         | 
| 
         @@ -193,6 +195,61 @@ module Dependabot 
     | 
|
| 
       193 
195 
     | 
    
         
             
                      )
         
     | 
| 
       194 
196 
     | 
    
         
             
                    end
         
     | 
| 
       195 
197 
     | 
    
         | 
| 
      
 198 
     | 
    
         
            +
                    sig { params(registry_url: String).returns(Dependabot::Package::PackageDetails) }
         
     | 
| 
      
 199 
     | 
    
         
            +
                    def github_packages_versions(registry_url)
         
     | 
| 
      
 200 
     | 
    
         
            +
                      # Extract org name from URL like "https://rubygems.pkg.github.com/dsp-testing/"
         
     | 
| 
      
 201 
     | 
    
         
            +
                      org_name = registry_url.split("/").last
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
                      # GitHub Packages API endpoint for RubyGems packages
         
     | 
| 
      
 204 
     | 
    
         
            +
                      api_url = "https://api.github.com/orgs/#{org_name}/packages/rubygems/#{dependency.name}/versions"
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
                      response = Dependabot::RegistryClient.get(
         
     | 
| 
      
 207 
     | 
    
         
            +
                        url: api_url,
         
     | 
| 
      
 208 
     | 
    
         
            +
                        headers: {
         
     | 
| 
      
 209 
     | 
    
         
            +
                          "Accept" => "application/vnd.github.v3+json",
         
     | 
| 
      
 210 
     | 
    
         
            +
                          "Authorization" => "Bearer #{github_token}"
         
     | 
| 
      
 211 
     | 
    
         
            +
                        }
         
     | 
| 
      
 212 
     | 
    
         
            +
                      )
         
     | 
| 
      
 213 
     | 
    
         
            +
             
     | 
| 
      
 214 
     | 
    
         
            +
                      unless response.status == 200
         
     | 
| 
      
 215 
     | 
    
         
            +
                        error_details = "Status: #{response.status}"
         
     | 
| 
      
 216 
     | 
    
         
            +
                        error_details += " (Package not found in GitHub Registry)" if response.status == 404
         
     | 
| 
      
 217 
     | 
    
         
            +
                        error_message = "Failed to fetch versions for '#{dependency.name}' from GitHub Packages. #{error_details}"
         
     | 
| 
      
 218 
     | 
    
         
            +
                        Dependabot.logger.info(error_message)
         
     | 
| 
      
 219 
     | 
    
         
            +
                        return package_details([])
         
     | 
| 
      
 220 
     | 
    
         
            +
                      end
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
      
 222 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 223 
     | 
    
         
            +
                        versions_data = JSON.parse(response.body)
         
     | 
| 
      
 224 
     | 
    
         
            +
                        package_releases = versions_data.map do |version_info|
         
     | 
| 
      
 225 
     | 
    
         
            +
                          # GitHub Packages API returns different structure than RubyGems
         
     | 
| 
      
 226 
     | 
    
         
            +
                          version_number = version_info["name"] # GitHub uses "name" for version
         
     | 
| 
      
 227 
     | 
    
         
            +
                          created_at = version_info["created_at"]
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
      
 229 
     | 
    
         
            +
                          package_release(
         
     | 
| 
      
 230 
     | 
    
         
            +
                            version: version_number,
         
     | 
| 
      
 231 
     | 
    
         
            +
                            released_at: Time.parse(created_at),
         
     | 
| 
      
 232 
     | 
    
         
            +
                            downloads: 0, # GitHub Packages doesn't provide download counts
         
     | 
| 
      
 233 
     | 
    
         
            +
                            url: "#{registry_url}/gems/#{dependency.name}-#{version_number}.gem",
         
     | 
| 
      
 234 
     | 
    
         
            +
                            ruby_version: nil # GitHub Packages API doesn't provide ruby version requirements
         
     | 
| 
      
 235 
     | 
    
         
            +
                          )
         
     | 
| 
      
 236 
     | 
    
         
            +
                        end
         
     | 
| 
      
 237 
     | 
    
         
            +
             
     | 
| 
      
 238 
     | 
    
         
            +
                        package_details(package_releases)
         
     | 
| 
      
 239 
     | 
    
         
            +
                      rescue JSON::ParserError => e
         
     | 
| 
      
 240 
     | 
    
         
            +
                        Dependabot.logger.info("Failed to parse GitHub Packages response: #{e.message}")
         
     | 
| 
      
 241 
     | 
    
         
            +
                        package_details([])
         
     | 
| 
      
 242 
     | 
    
         
            +
                      end
         
     | 
| 
      
 243 
     | 
    
         
            +
                    end
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
                    sig { returns(T.nilable(String)) }
         
     | 
| 
      
 246 
     | 
    
         
            +
                    def github_token
         
     | 
| 
      
 247 
     | 
    
         
            +
                      github_credential = credentials.find do |cred|
         
     | 
| 
      
 248 
     | 
    
         
            +
                        cred["type"] == "rubygems_server" && cred["host"] == "rubygems.pkg.github.com"
         
     | 
| 
      
 249 
     | 
    
         
            +
                      end
         
     | 
| 
      
 250 
     | 
    
         
            +
                      github_credential&.fetch("token", nil)
         
     | 
| 
      
 251 
     | 
    
         
            +
                    end
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
       196 
253 
     | 
    
         
             
                    sig { params(req_string: String).returns(Requirement) }
         
     | 
| 
       197 
254 
     | 
    
         
             
                    def language_requirement(req_string)
         
     | 
| 
       198 
255 
     | 
    
         
             
                      Requirement.new(req_string)
         
     | 
| 
         @@ -222,7 +279,8 @@ module Dependabot 
     | 
|
| 
       222 
279 
     | 
    
         
             
                        Dependabot::Package::PackageDetails.new(
         
     | 
| 
       223 
280 
     | 
    
         
             
                          dependency: dependency,
         
     | 
| 
       224 
281 
     | 
    
         
             
                          releases: releases.reverse.uniq(&:version)
         
     | 
| 
       225 
     | 
    
         
            -
                        ), 
     | 
| 
      
 282 
     | 
    
         
            +
                        ),
         
     | 
| 
      
 283 
     | 
    
         
            +
                        T.nilable(Dependabot::Package::PackageDetails)
         
     | 
| 
       226 
284 
     | 
    
         
             
                      )
         
     | 
| 
       227 
285 
     | 
    
         
             
                    end
         
     | 
| 
       228 
286 
     | 
    
         | 
| 
         @@ -53,12 +53,15 @@ module Dependabot 
     | 
|
| 
       53 
53 
     | 
    
         
             
                        lock_ruby_version: T::Boolean
         
     | 
| 
       54 
54 
     | 
    
         
             
                      ).void
         
     | 
| 
       55 
55 
     | 
    
         
             
                    end
         
     | 
| 
       56 
     | 
    
         
            -
                    def initialize( 
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
      
 56 
     | 
    
         
            +
                    def initialize(
         
     | 
| 
      
 57 
     | 
    
         
            +
                      dependency_files:,
         
     | 
| 
      
 58 
     | 
    
         
            +
                      dependency:,
         
     | 
| 
      
 59 
     | 
    
         
            +
                      remove_git_source: false,
         
     | 
| 
      
 60 
     | 
    
         
            +
                      unlock_requirement: true,
         
     | 
| 
      
 61 
     | 
    
         
            +
                      replacement_git_pin: nil,
         
     | 
| 
      
 62 
     | 
    
         
            +
                      latest_allowable_version: nil,
         
     | 
| 
      
 63 
     | 
    
         
            +
                      lock_ruby_version: true
         
     | 
| 
      
 64 
     | 
    
         
            +
                    )
         
     | 
| 
       62 
65 
     | 
    
         
             
                      @dependency_files = T.let(dependency_files, T::Array[Dependabot::DependencyFile])
         
     | 
| 
       63 
66 
     | 
    
         
             
                      @dependency = T.let(dependency, Dependabot::Dependency)
         
     | 
| 
       64 
67 
     | 
    
         
             
                      @remove_git_source = T.let(remove_git_source, T::Boolean)
         
     | 
| 
         @@ -127,10 +130,13 @@ module Dependabot 
     | 
|
| 
       127 
130 
     | 
    
         | 
| 
       128 
131 
     | 
    
         
             
                    sig { returns(T::Array[Dependabot::DependencyFile]) }
         
     | 
| 
       129 
132 
     | 
    
         
             
                    attr_reader :dependency_files
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
       130 
134 
     | 
    
         
             
                    sig { returns(Dependabot::Dependency) }
         
     | 
| 
       131 
135 
     | 
    
         
             
                    attr_reader :dependency
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
       132 
137 
     | 
    
         
             
                    sig { returns(T.nilable(String)) }
         
     | 
| 
       133 
138 
     | 
    
         
             
                    attr_reader :replacement_git_pin
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
       134 
140 
     | 
    
         
             
                    sig { returns(T.nilable(String)) }
         
     | 
| 
       135 
141 
     | 
    
         
             
                    attr_reader :latest_allowable_version
         
     | 
| 
       136 
142 
     | 
    
         | 
| 
         @@ -33,10 +33,16 @@ module Dependabot 
     | 
|
| 
       33 
33 
     | 
    
         
             
                        update_multiple_dependencies: T::Boolean
         
     | 
| 
       34 
34 
     | 
    
         
             
                      ).void
         
     | 
| 
       35 
35 
     | 
    
         
             
                    end
         
     | 
| 
       36 
     | 
    
         
            -
                    def initialize( 
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
                    def initialize(
         
     | 
| 
      
 37 
     | 
    
         
            +
                      dependency:,
         
     | 
| 
      
 38 
     | 
    
         
            +
                      dependency_files:,
         
     | 
| 
      
 39 
     | 
    
         
            +
                      credentials:,
         
     | 
| 
      
 40 
     | 
    
         
            +
                      target_version:,
         
     | 
| 
      
 41 
     | 
    
         
            +
                      requirements_update_strategy:,
         
     | 
| 
      
 42 
     | 
    
         
            +
                      options:,
         
     | 
| 
      
 43 
     | 
    
         
            +
                      repo_contents_path: nil,
         
     | 
| 
      
 44 
     | 
    
         
            +
                      update_multiple_dependencies: true
         
     | 
| 
      
 45 
     | 
    
         
            +
                    )
         
     | 
| 
       40 
46 
     | 
    
         
             
                      @dependency                   = dependency
         
     | 
| 
       41 
47 
     | 
    
         
             
                      @dependency_files             = dependency_files
         
     | 
| 
       42 
48 
     | 
    
         
             
                      @repo_contents_path           = repo_contents_path
         
     | 
| 
         @@ -46,10 +46,12 @@ module Dependabot 
     | 
|
| 
       46 
46 
     | 
    
         
             
                          options: T::Hash[Symbol, T.untyped]
         
     | 
| 
       47 
47 
     | 
    
         
             
                        ).void
         
     | 
| 
       48 
48 
     | 
    
         
             
                      end
         
     | 
| 
       49 
     | 
    
         
            -
                      def initialize( 
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
                      def initialize(
         
     | 
| 
      
 50 
     | 
    
         
            +
                        dependency:,
         
     | 
| 
      
 51 
     | 
    
         
            +
                        dependency_files:,
         
     | 
| 
      
 52 
     | 
    
         
            +
                        credentials:,
         
     | 
| 
      
 53 
     | 
    
         
            +
                        options:
         
     | 
| 
      
 54 
     | 
    
         
            +
                      )
         
     | 
| 
       53 
55 
     | 
    
         
             
                        @dependency          = dependency
         
     | 
| 
       54 
56 
     | 
    
         
             
                        @dependency_files    = dependency_files
         
     | 
| 
       55 
57 
     | 
    
         
             
                        @repo_contents_path  = T.let(nil, T.nilable(String))
         
     | 
| 
         @@ -125,7 +125,8 @@ module Dependabot 
     | 
|
| 
       125 
125 
     | 
    
         
             
                          current_version&.prerelease? || dependency.requirements.any? do |req|
         
     | 
| 
       126 
126 
     | 
    
         
             
                            req[:requirement].match?(/[a-z]/i)
         
     | 
| 
       127 
127 
     | 
    
         
             
                          end
         
     | 
| 
       128 
     | 
    
         
            -
                        end, 
     | 
| 
      
 128 
     | 
    
         
            +
                        end,
         
     | 
| 
      
 129 
     | 
    
         
            +
                        T.nilable(T::Boolean)
         
     | 
| 
       129 
130 
     | 
    
         
             
                      )
         
     | 
| 
       130 
131 
     | 
    
         
             
                    end
         
     | 
| 
       131 
132 
     | 
    
         | 
| 
         @@ -137,7 +138,8 @@ module Dependabot 
     | 
|
| 
       137 
138 
     | 
    
         
             
                          dependency_files: dependency_files,
         
     | 
| 
       138 
139 
     | 
    
         
             
                          credentials: credentials,
         
     | 
| 
       139 
140 
     | 
    
         
             
                          options: options
         
     | 
| 
       140 
     | 
    
         
            -
                        ), 
     | 
| 
      
 141 
     | 
    
         
            +
                        ),
         
     | 
| 
      
 142 
     | 
    
         
            +
                        T.nilable(DependencySource)
         
     | 
| 
       141 
143 
     | 
    
         
             
                      )
         
     | 
| 
       142 
144 
     | 
    
         
             
                    end
         
     | 
| 
       143 
145 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -32,8 +32,13 @@ module Dependabot 
     | 
|
| 
       32 
32 
     | 
    
         
             
                        latest_resolvable_version: T.nilable(String)
         
     | 
| 
       33 
33 
     | 
    
         
             
                      ).void
         
     | 
| 
       34 
34 
     | 
    
         
             
                    end
         
     | 
| 
       35 
     | 
    
         
            -
                    def initialize( 
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
                    def initialize(
         
     | 
| 
      
 36 
     | 
    
         
            +
                      requirements:,
         
     | 
| 
      
 37 
     | 
    
         
            +
                      update_strategy:,
         
     | 
| 
      
 38 
     | 
    
         
            +
                      updated_source:,
         
     | 
| 
      
 39 
     | 
    
         
            +
                      latest_version:,
         
     | 
| 
      
 40 
     | 
    
         
            +
                      latest_resolvable_version:
         
     | 
| 
      
 41 
     | 
    
         
            +
                    )
         
     | 
| 
       37 
42 
     | 
    
         
             
                      @requirements = requirements
         
     | 
| 
       38 
43 
     | 
    
         
             
                      @latest_version = T.let(
         
     | 
| 
       39 
44 
     | 
    
         
             
                        (T.cast(Dependabot::Bundler::Version.new(latest_version), Dependabot::Bundler::Version) if latest_version),
         
     | 
| 
         @@ -71,12 +76,16 @@ module Dependabot 
     | 
|
| 
       71 
76 
     | 
    
         | 
| 
       72 
77 
     | 
    
         
             
                    sig { returns(T::Array[T::Hash[Symbol, T.untyped]]) }
         
     | 
| 
       73 
78 
     | 
    
         
             
                    attr_reader :requirements
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       74 
80 
     | 
    
         
             
                    sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
         
     | 
| 
       75 
81 
     | 
    
         
             
                    attr_reader :updated_source
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       76 
83 
     | 
    
         
             
                    sig { returns(T.nilable(Dependabot::Bundler::Version)) }
         
     | 
| 
       77 
84 
     | 
    
         
             
                    attr_reader :latest_version
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
       78 
86 
     | 
    
         
             
                    sig { returns(T.nilable(Dependabot::Bundler::Version)) }
         
     | 
| 
       79 
87 
     | 
    
         
             
                    attr_reader :latest_resolvable_version
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
       80 
89 
     | 
    
         
             
                    sig { returns(Dependabot::RequirementsUpdateStrategy) }
         
     | 
| 
       81 
90 
     | 
    
         
             
                    attr_reader :update_strategy
         
     | 
| 
       82 
91 
     | 
    
         | 
| 
         @@ -302,8 +311,10 @@ module Dependabot 
     | 
|
| 
       302 
311 
     | 
    
         | 
| 
       303 
312 
     | 
    
         
             
                    # Updates the version in a "~>" constraint to allow the given version
         
     | 
| 
       304 
313 
     | 
    
         
             
                    sig do
         
     | 
| 
       305 
     | 
    
         
            -
                      params( 
     | 
| 
       306 
     | 
    
         
            -
             
     | 
| 
      
 314 
     | 
    
         
            +
                      params(
         
     | 
| 
      
 315 
     | 
    
         
            +
                        requirement: Gem::Requirement,
         
     | 
| 
      
 316 
     | 
    
         
            +
                        version_to_be_permitted: Dependabot::Bundler::Version
         
     | 
| 
      
 317 
     | 
    
         
            +
                      ).returns(Gem::Requirement)
         
     | 
| 
       307 
318 
     | 
    
         
             
                    end
         
     | 
| 
       308 
319 
     | 
    
         
             
                    def update_twiddle_version(requirement, version_to_be_permitted)
         
     | 
| 
       309 
320 
     | 
    
         
             
                      old_version = requirement.requirements.first.last
         
     | 
| 
         @@ -314,8 +325,10 @@ module Dependabot 
     | 
|
| 
       314 
325 
     | 
    
         
             
                    # Updates the version in a "<" or "<=" constraint to allow the given
         
     | 
| 
       315 
326 
     | 
    
         
             
                    # version
         
     | 
| 
       316 
327 
     | 
    
         
             
                    sig do
         
     | 
| 
       317 
     | 
    
         
            -
                      params( 
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
      
 328 
     | 
    
         
            +
                      params(
         
     | 
| 
      
 329 
     | 
    
         
            +
                        requirement: Gem::Requirement,
         
     | 
| 
      
 330 
     | 
    
         
            +
                        version_to_be_permitted: Dependabot::Bundler::Version
         
     | 
| 
      
 331 
     | 
    
         
            +
                      ).returns(Gem::Requirement)
         
     | 
| 
       319 
332 
     | 
    
         
             
                    end
         
     | 
| 
       320 
333 
     | 
    
         
             
                    def update_greatest_version(requirement, version_to_be_permitted)
         
     | 
| 
       321 
334 
     | 
    
         
             
                      op, version = requirement.requirements.first
         
     | 
| 
         @@ -39,13 +39,20 @@ module Dependabot 
     | 
|
| 
       39 
39 
     | 
    
         
             
                        cooldown_options: T.nilable(Dependabot::Package::ReleaseCooldownOptions)
         
     | 
| 
       40 
40 
     | 
    
         
             
                      ).void
         
     | 
| 
       41 
41 
     | 
    
         
             
                    end
         
     | 
| 
       42 
     | 
    
         
            -
                    def initialize( 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
                    def initialize(
         
     | 
| 
      
 43 
     | 
    
         
            +
                      dependency:,
         
     | 
| 
      
 44 
     | 
    
         
            +
                      unprepared_dependency_files:,
         
     | 
| 
      
 45 
     | 
    
         
            +
                      credentials:,
         
     | 
| 
      
 46 
     | 
    
         
            +
                      ignored_versions:,
         
     | 
| 
      
 47 
     | 
    
         
            +
                      options:,
         
     | 
| 
      
 48 
     | 
    
         
            +
                      repo_contents_path: nil,
         
     | 
| 
      
 49 
     | 
    
         
            +
                      raise_on_ignored: false,
         
     | 
| 
      
 50 
     | 
    
         
            +
                      replacement_git_pin: nil,
         
     | 
| 
      
 51 
     | 
    
         
            +
                      remove_git_source: false,
         
     | 
| 
      
 52 
     | 
    
         
            +
                      unlock_requirement: true,
         
     | 
| 
      
 53 
     | 
    
         
            +
                      latest_allowable_version: nil,
         
     | 
| 
      
 54 
     | 
    
         
            +
                      cooldown_options: nil
         
     | 
| 
      
 55 
     | 
    
         
            +
                    )
         
     | 
| 
       49 
56 
     | 
    
         
             
                      @dependency                  = dependency
         
     | 
| 
       50 
57 
     | 
    
         
             
                      @unprepared_dependency_files = unprepared_dependency_files
         
     | 
| 
       51 
58 
     | 
    
         
             
                      @credentials                 = credentials
         
     | 
| 
         @@ -354,8 +354,10 @@ module Dependabot 
     | 
|
| 
       354 
354 
     | 
    
         
             
                  sig { returns(Dependabot::Bundler::UpdateChecker::ForceUpdater) }
         
     | 
| 
       355 
355 
     | 
    
         
             
                  def force_updater
         
     | 
| 
       356 
356 
     | 
    
         
             
                    if @force_updater.nil?
         
     | 
| 
       357 
     | 
    
         
            -
                      @force_updater = T.let( 
     | 
| 
       358 
     | 
    
         
            -
             
     | 
| 
      
 357 
     | 
    
         
            +
                      @force_updater = T.let(
         
     | 
| 
      
 358 
     | 
    
         
            +
                        @force_updater,
         
     | 
| 
      
 359 
     | 
    
         
            +
                        T.nilable(Dependabot::Bundler::UpdateChecker::ForceUpdater)
         
     | 
| 
      
 360 
     | 
    
         
            +
                      )
         
     | 
| 
       359 
361 
     | 
    
         
             
                    end
         
     | 
| 
       360 
362 
     | 
    
         
             
                    @force_updater ||=
         
     | 
| 
       361 
363 
     | 
    
         
             
                      ForceUpdater.new(
         
     | 
| 
         @@ -372,8 +374,10 @@ module Dependabot 
     | 
|
| 
       372 
374 
     | 
    
         
             
                  sig { returns(Dependabot::GitCommitChecker) }
         
     | 
| 
       373 
375 
     | 
    
         
             
                  def git_commit_checker
         
     | 
| 
       374 
376 
     | 
    
         
             
                    if @git_commit_checker.nil?
         
     | 
| 
       375 
     | 
    
         
            -
                      @git_commit_checker = T.let( 
     | 
| 
       376 
     | 
    
         
            -
             
     | 
| 
      
 377 
     | 
    
         
            +
                      @git_commit_checker = T.let(
         
     | 
| 
      
 378 
     | 
    
         
            +
                        @git_commit_checker,
         
     | 
| 
      
 379 
     | 
    
         
            +
                        T.nilable(Dependabot::GitCommitChecker)
         
     | 
| 
      
 380 
     | 
    
         
            +
                      )
         
     | 
| 
       377 
381 
     | 
    
         
             
                    end
         
     | 
| 
       378 
382 
     | 
    
         
             
                    @git_commit_checker ||=
         
     | 
| 
       379 
383 
     | 
    
         
             
                      GitCommitChecker.new(
         
     | 
| 
         @@ -432,8 +436,11 @@ module Dependabot 
     | 
|
| 
       432 
436 
     | 
    
         
             
                      latest_allowable_version: T.nilable(T.any(String, Dependabot::Bundler::Version))
         
     | 
| 
       433 
437 
     | 
    
         
             
                    ).returns(T::Array[Dependabot::DependencyFile])
         
     | 
| 
       434 
438 
     | 
    
         
             
                  end
         
     | 
| 
       435 
     | 
    
         
            -
                  def prepared_dependency_files( 
     | 
| 
       436 
     | 
    
         
            -
             
     | 
| 
      
 439 
     | 
    
         
            +
                  def prepared_dependency_files(
         
     | 
| 
      
 440 
     | 
    
         
            +
                    remove_git_source:,
         
     | 
| 
      
 441 
     | 
    
         
            +
                    unlock_requirement:,
         
     | 
| 
      
 442 
     | 
    
         
            +
                    latest_allowable_version: nil
         
     | 
| 
      
 443 
     | 
    
         
            +
                  )
         
     | 
| 
       437 
444 
     | 
    
         
             
                    FilePreparer.new(
         
     | 
| 
       438 
445 
     | 
    
         
             
                      dependency: dependency,
         
     | 
| 
       439 
446 
     | 
    
         
             
                      dependency_files: dependency_files,
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: dependabot-bundler
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.336.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. 
     | 
| 
      
 18 
     | 
    
         
            +
                    version: 0.336.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. 
     | 
| 
      
 25 
     | 
    
         
            +
                    version: 0.336.0
         
     | 
| 
       26 
26 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       27 
27 
     | 
    
         
             
              name: parallel
         
     | 
| 
       28 
28 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -127,56 +127,56 @@ dependencies: 
     | 
|
| 
       127 
127 
     | 
    
         
             
                requirements:
         
     | 
| 
       128 
128 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       129 
129 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       130 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 130 
     | 
    
         
            +
                    version: '1.80'
         
     | 
| 
       131 
131 
     | 
    
         
             
              type: :development
         
     | 
| 
       132 
132 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       133 
133 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       134 
134 
     | 
    
         
             
                requirements:
         
     | 
| 
       135 
135 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       136 
136 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       137 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 137 
     | 
    
         
            +
                    version: '1.80'
         
     | 
| 
       138 
138 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       139 
139 
     | 
    
         
             
              name: rubocop-performance
         
     | 
| 
       140 
140 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       141 
141 
     | 
    
         
             
                requirements:
         
     | 
| 
       142 
142 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       143 
143 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       144 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 144 
     | 
    
         
            +
                    version: '1.26'
         
     | 
| 
       145 
145 
     | 
    
         
             
              type: :development
         
     | 
| 
       146 
146 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       147 
147 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       148 
148 
     | 
    
         
             
                requirements:
         
     | 
| 
       149 
149 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       150 
150 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       151 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 151 
     | 
    
         
            +
                    version: '1.26'
         
     | 
| 
       152 
152 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       153 
153 
     | 
    
         
             
              name: rubocop-rspec
         
     | 
| 
       154 
154 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       155 
155 
     | 
    
         
             
                requirements:
         
     | 
| 
       156 
156 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       157 
157 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       158 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 158 
     | 
    
         
            +
                    version: '3.7'
         
     | 
| 
       159 
159 
     | 
    
         
             
              type: :development
         
     | 
| 
       160 
160 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       161 
161 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       162 
162 
     | 
    
         
             
                requirements:
         
     | 
| 
       163 
163 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       164 
164 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       165 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 165 
     | 
    
         
            +
                    version: '3.7'
         
     | 
| 
       166 
166 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       167 
167 
     | 
    
         
             
              name: rubocop-sorbet
         
     | 
| 
       168 
168 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       169 
169 
     | 
    
         
             
                requirements:
         
     | 
| 
       170 
170 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       171 
171 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       172 
     | 
    
         
            -
                    version: '0. 
     | 
| 
      
 172 
     | 
    
         
            +
                    version: '0.10'
         
     | 
| 
       173 
173 
     | 
    
         
             
              type: :development
         
     | 
| 
       174 
174 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       175 
175 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       176 
176 
     | 
    
         
             
                requirements:
         
     | 
| 
       177 
177 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       178 
178 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       179 
     | 
    
         
            -
                    version: '0. 
     | 
| 
      
 179 
     | 
    
         
            +
                    version: '0.10'
         
     | 
| 
       180 
180 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       181 
181 
     | 
    
         
             
              name: simplecov
         
     | 
| 
       182 
182 
     | 
    
         
             
              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. 
     | 
| 
      
 325 
     | 
    
         
            +
              changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.336.0
         
     | 
| 
       326 
326 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       327 
327 
     | 
    
         
             
            require_paths:
         
     | 
| 
       328 
328 
     | 
    
         
             
            - lib
         
     |