dependabot-nuget 0.211.0 → 0.212.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/lib/dependabot/nuget/file_fetcher.rb +6 -6
- data/lib/dependabot/nuget/file_parser/packages_config_parser.rb +1 -1
- data/lib/dependabot/nuget/file_parser/project_file_parser.rb +4 -4
- data/lib/dependabot/nuget/file_parser/property_value_finder.rb +2 -3
- data/lib/dependabot/nuget/metadata_finder.rb +8 -8
- data/lib/dependabot/nuget/update_checker/repository_finder.rb +5 -5
- data/lib/dependabot/nuget/update_checker/requirements_updater.rb +1 -1
- data/lib/dependabot/nuget/update_checker/version_finder.rb +7 -7
- metadata +22 -8
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f2670db3fd0c6b63fef409230620f4167fb0832deb5df3133dc9762e54104746
         | 
| 4 | 
            +
              data.tar.gz: 749cd634dde39e45264654b33e3cfd0f8759ead2e9b808906dd33bf8299b7948
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f0c433d102aa4773f20f75b33e0e8566335fe05948abadb9b854e66cedb15ce0061daa1a8b00977ac00ea139d48b86b114a986e192fb2e9aa526b08811285f28
         | 
| 7 | 
            +
              data.tar.gz: efab05fc35e9daa61950bae053557ffbeb864fbbb04cbeb052fbf1f6b478ee303d330ed51ec99b3b357f36ac7efe47e9f1ab1ae503563e1fe013240ae9926ebb
         | 
| @@ -73,11 +73,11 @@ module Dependabot | |
| 73 73 | 
             
                      [*project_files.map { |f| File.dirname(f.name) }, "."].uniq
         | 
| 74 74 |  | 
| 75 75 | 
             
                    @packages_config_files ||=
         | 
| 76 | 
            -
                      candidate_paths. | 
| 76 | 
            +
                      candidate_paths.filter_map do |dir|
         | 
| 77 77 | 
             
                        file = repo_contents(dir: dir).
         | 
| 78 78 | 
             
                               find { |f| f.name.casecmp("packages.config").zero? }
         | 
| 79 79 | 
             
                        fetch_file_from_host(File.join(dir, file.name)) if file
         | 
| 80 | 
            -
                      end | 
| 80 | 
            +
                      end
         | 
| 81 81 | 
             
                  end
         | 
| 82 82 |  | 
| 83 83 | 
             
                  # rubocop:disable Metrics/PerceivedComplexity
         | 
| @@ -157,7 +157,7 @@ module Dependabot | |
| 157 157 | 
             
                            project_paths
         | 
| 158 158 | 
             
                        end
         | 
| 159 159 |  | 
| 160 | 
            -
                        paths. | 
| 160 | 
            +
                        paths.filter_map do |path|
         | 
| 161 161 | 
             
                          fetch_file_from_host(path)
         | 
| 162 162 | 
             
                        rescue Dependabot::DependencyFileNotFound => e
         | 
| 163 163 | 
             
                          @missing_sln_project_file_errors ||= []
         | 
| @@ -165,7 +165,7 @@ module Dependabot | |
| 165 165 | 
             
                          # Don't worry about missing files too much for now (at least
         | 
| 166 166 | 
             
                          # until we start resolving properties)
         | 
| 167 167 | 
             
                          nil
         | 
| 168 | 
            -
                        end | 
| 168 | 
            +
                        end
         | 
| 169 169 | 
             
                      end
         | 
| 170 170 | 
             
                  end
         | 
| 171 171 |  | 
| @@ -209,12 +209,12 @@ module Dependabot | |
| 209 209 | 
             
                      [*project_files.map { |f| File.dirname(f.name) }, "."].uniq
         | 
| 210 210 |  | 
| 211 211 | 
             
                    @nuget_config_files ||=
         | 
| 212 | 
            -
                      candidate_paths. | 
| 212 | 
            +
                      candidate_paths.filter_map do |dir|
         | 
| 213 213 | 
             
                        file = repo_contents(dir: dir).
         | 
| 214 214 | 
             
                               find { |f| f.name.casecmp("nuget.config").zero? }
         | 
| 215 215 | 
             
                        file = fetch_file_from_host(File.join(dir, file.name)) if file
         | 
| 216 216 | 
             
                        file&.tap { |f| f.support_file = true }
         | 
| 217 | 
            -
                      end | 
| 217 | 
            +
                      end
         | 
| 218 218 | 
             
                  end
         | 
| 219 219 |  | 
| 220 220 | 
             
                  def global_json
         | 
| @@ -61,7 +61,7 @@ module Dependabot | |
| 61 61 | 
             
                    def dependency_type(dependency_node)
         | 
| 62 62 | 
             
                      val = dependency_node.attribute("developmentDependency")&.value&.strip ||
         | 
| 63 63 | 
             
                            dependency_node.at_xpath("./developmentDependency")&.content&.strip
         | 
| 64 | 
            -
                      val.to_s. | 
| 64 | 
            +
                      val.to_s.casecmp("true").zero? ? "devDependencies" : "dependencies"
         | 
| 65 65 | 
             
                    end
         | 
| 66 66 | 
             
                  end
         | 
| 67 67 | 
             
                end
         | 
| @@ -14,10 +14,10 @@ module Dependabot | |
| 14 14 | 
             
                    require "dependabot/file_parsers/base/dependency_set"
         | 
| 15 15 | 
             
                    require_relative "property_value_finder"
         | 
| 16 16 |  | 
| 17 | 
            -
                    DEPENDENCY_SELECTOR = "ItemGroup > PackageReference, "\
         | 
| 18 | 
            -
                                          "ItemGroup > GlobalPackageReference, "\
         | 
| 19 | 
            -
                                          "ItemGroup > PackageVersion, "\
         | 
| 20 | 
            -
                                          "ItemGroup > Dependency, "\
         | 
| 17 | 
            +
                    DEPENDENCY_SELECTOR = "ItemGroup > PackageReference, " \
         | 
| 18 | 
            +
                                          "ItemGroup > GlobalPackageReference, " \
         | 
| 19 | 
            +
                                          "ItemGroup > PackageVersion, " \
         | 
| 20 | 
            +
                                          "ItemGroup > Dependency, " \
         | 
| 21 21 | 
             
                                          "ItemGroup > DevelopmentDependency"
         | 
| 22 22 |  | 
| 23 23 | 
             
                    PROJECT_SDK_REGEX   = %r{^([^/]+)/(\d+(?:[.]\d+(?:[.]\d+)?)?(?:[+-].*)?)$}.freeze
         | 
| @@ -47,7 +47,7 @@ module Dependabot | |
| 47 47 | 
             
                        find_property_in_packages_props(property: property_name)
         | 
| 48 48 |  | 
| 49 49 | 
             
                      return unless node_details
         | 
| 50 | 
            -
                      return node_details unless node_details[:value] | 
| 50 | 
            +
                      return node_details unless PROPERTY_REGEX.match?(node_details[:value])
         | 
| 51 51 |  | 
| 52 52 | 
             
                      check_next_level_of_stack(node_details, stack)
         | 
| 53 53 | 
             
                    end
         | 
| @@ -91,8 +91,7 @@ module Dependabot | |
| 91 91 | 
             
                      ]
         | 
| 92 92 |  | 
| 93 93 | 
             
                      file = import_paths.
         | 
| 94 | 
            -
                              | 
| 95 | 
            -
                             compact.
         | 
| 94 | 
            +
                             filter_map { |p| dependency_files.find { |f| f.name == p } }.
         | 
| 96 95 | 
             
                             find { |f| deep_find_prop_node(property: property, file: f) }
         | 
| 97 96 |  | 
| 98 97 | 
             
                      return unless file
         | 
| @@ -63,7 +63,7 @@ module Dependabot | |
| 63 63 |  | 
| 64 64 | 
             
                  def extract_source_repo(body)
         | 
| 65 65 | 
             
                    JSON.parse(body).fetch("data", []).each do |search_result|
         | 
| 66 | 
            -
                      next unless search_result["id"]. | 
| 66 | 
            +
                      next unless search_result["id"].casecmp(dependency.name).zero?
         | 
| 67 67 |  | 
| 68 68 | 
             
                      if search_result.key?("projectUrl")
         | 
| 69 69 | 
             
                        source = Source.from_url(search_result.fetch("projectUrl"))
         | 
| @@ -123,18 +123,18 @@ module Dependabot | |
| 123 123 |  | 
| 124 124 | 
             
                    if source&.key?(:nuspec_url)
         | 
| 125 125 | 
             
                      source.fetch(:nuspec_url) ||
         | 
| 126 | 
            -
                        "https://api.nuget.org/v3-flatcontainer/"\
         | 
| 127 | 
            -
                        "#{dependency.name.downcase}/#{dependency.version}/"\
         | 
| 126 | 
            +
                        "https://api.nuget.org/v3-flatcontainer/" \
         | 
| 127 | 
            +
                        "#{dependency.name.downcase}/#{dependency.version}/" \
         | 
| 128 128 | 
             
                        "#{dependency.name.downcase}.nuspec"
         | 
| 129 129 | 
             
                    elsif source&.key?(:nuspec_url)
         | 
| 130 130 | 
             
                      source.fetch("nuspec_url") ||
         | 
| 131 | 
            -
                        "https://api.nuget.org/v3-flatcontainer/"\
         | 
| 132 | 
            -
                        "#{dependency.name.downcase}/#{dependency.version}/"\
         | 
| 131 | 
            +
                        "https://api.nuget.org/v3-flatcontainer/" \
         | 
| 132 | 
            +
                        "#{dependency.name.downcase}/#{dependency.version}/" \
         | 
| 133 133 | 
             
                        "#{dependency.name.downcase}.nuspec"
         | 
| 134 134 | 
             
                    else
         | 
| 135 | 
            -
                      "https://api.nuget.org/v3-flatcontainer/"\
         | 
| 136 | 
            -
             | 
| 137 | 
            -
             | 
| 135 | 
            +
                      "https://api.nuget.org/v3-flatcontainer/" \
         | 
| 136 | 
            +
                        "#{dependency.name.downcase}/#{dependency.version}/" \
         | 
| 137 | 
            +
                        "#{dependency.name.downcase}.nuspec"
         | 
| 138 138 | 
             
                    end
         | 
| 139 139 | 
             
                  end
         | 
| 140 140 |  | 
| @@ -191,10 +191,10 @@ module Dependabot | |
| 191 191 | 
             
                    def default_repository_details
         | 
| 192 192 | 
             
                      {
         | 
| 193 193 | 
             
                        repository_url: DEFAULT_REPOSITORY_URL,
         | 
| 194 | 
            -
                        versions_url: "https://api.nuget.org/v3-flatcontainer/"\
         | 
| 195 | 
            -
             | 
| 196 | 
            -
                        search_url: "https://azuresearch-usnc.nuget.org/query"\
         | 
| 197 | 
            -
             | 
| 194 | 
            +
                        versions_url: "https://api.nuget.org/v3-flatcontainer/" \
         | 
| 195 | 
            +
                                      "#{dependency.name.downcase}/index.json",
         | 
| 196 | 
            +
                        search_url: "https://azuresearch-usnc.nuget.org/query" \
         | 
| 197 | 
            +
                                    "?q=#{dependency.name.downcase}&prerelease=true&semVerLevel=2.0.0",
         | 
| 198 198 | 
             
                        auth_header: {},
         | 
| 199 199 | 
             
                        repository_type: "v3"
         | 
| 200 200 | 
             
                      }
         | 
| @@ -222,7 +222,7 @@ module Dependabot | |
| 222 222 | 
             
                        next source_details[:token] = nil if key.match?(/^\d/)
         | 
| 223 223 |  | 
| 224 224 | 
             
                        tag = key.gsub(" ", "_x0020_")
         | 
| 225 | 
            -
                        creds_nodes = doc.css("configuration > packageSourceCredentials "\
         | 
| 225 | 
            +
                        creds_nodes = doc.css("configuration > packageSourceCredentials " \
         | 
| 226 226 | 
             
                                              "> #{tag} > add")
         | 
| 227 227 |  | 
| 228 228 | 
             
                        username =
         | 
| @@ -127,7 +127,7 @@ module Dependabot | |
| 127 127 | 
             
                        doc = Nokogiri::XML(body)
         | 
| 128 128 | 
             
                        doc.remove_namespaces!
         | 
| 129 129 |  | 
| 130 | 
            -
                        doc.xpath("/feed/entry"). | 
| 130 | 
            +
                        doc.xpath("/feed/entry").filter_map do |entry|
         | 
| 131 131 | 
             
                          listed = entry.at_xpath("./properties/Listed")&.content&.strip
         | 
| 132 132 | 
             
                          next if listed&.casecmp("false")&.zero?
         | 
| 133 133 |  | 
| @@ -136,7 +136,7 @@ module Dependabot | |
| 136 136 | 
             
                            repo_url: listing.fetch("listing_details").
         | 
| 137 137 | 
             
                                      fetch(:repository_url)
         | 
| 138 138 | 
             
                          )
         | 
| 139 | 
            -
                        end | 
| 139 | 
            +
                        end
         | 
| 140 140 | 
             
                      end
         | 
| 141 141 | 
             
                    end
         | 
| 142 142 |  | 
| @@ -172,7 +172,7 @@ module Dependabot | |
| 172 172 |  | 
| 173 173 | 
             
                      dependency.requirements.any? do |req|
         | 
| 174 174 | 
             
                        reqs = parse_requirement_string(req.fetch(:requirement) || "")
         | 
| 175 | 
            -
                        return true if reqs.any? | 
| 175 | 
            +
                        return true if reqs.any?("*-*")
         | 
| 176 176 | 
             
                        next unless reqs.any? { |r| r.include?("-") }
         | 
| 177 177 |  | 
| 178 178 | 
             
                        requirement_class.
         | 
| @@ -193,12 +193,12 @@ module Dependabot | |
| 193 193 | 
             
                      @v3_nuget_listings ||=
         | 
| 194 194 | 
             
                        dependency_urls.
         | 
| 195 195 | 
             
                        select { |details| details.fetch(:repository_type) == "v3" }.
         | 
| 196 | 
            -
                         | 
| 196 | 
            +
                        filter_map do |url_details|
         | 
| 197 197 | 
             
                          versions = versions_for_v3_repository(url_details)
         | 
| 198 198 | 
             
                          next unless versions
         | 
| 199 199 |  | 
| 200 200 | 
             
                          { "versions" => versions, "listing_details" => url_details }
         | 
| 201 | 
            -
                        end | 
| 201 | 
            +
                        end
         | 
| 202 202 | 
             
                    end
         | 
| 203 203 |  | 
| 204 204 | 
             
                    def v2_nuget_listings
         | 
| @@ -208,14 +208,14 @@ module Dependabot | |
| 208 208 | 
             
                        dependency_urls.
         | 
| 209 209 | 
             
                        select { |details| details.fetch(:repository_type) == "v2" }.
         | 
| 210 210 | 
             
                        flat_map { |url_details| fetch_paginated_v2_nuget_listings(url_details) }.
         | 
| 211 | 
            -
                         | 
| 211 | 
            +
                        filter_map do |url_details, response|
         | 
| 212 212 | 
             
                          next unless response.status == 200
         | 
| 213 213 |  | 
| 214 214 | 
             
                          {
         | 
| 215 215 | 
             
                            "xml_body" => response.body,
         | 
| 216 216 | 
             
                            "listing_details" => url_details
         | 
| 217 217 | 
             
                          }
         | 
| 218 | 
            -
                        end | 
| 218 | 
            +
                        end
         | 
| 219 219 | 
             
                    end
         | 
| 220 220 |  | 
| 221 221 | 
             
                    def fetch_paginated_v2_nuget_listings(url_details, results = {})
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: dependabot-nuget
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.212.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dependabot
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-09-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: dependabot-common
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - '='
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 0. | 
| 19 | 
            +
                    version: 0.212.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. | 
| 26 | 
            +
                    version: 0.212.0
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: debase
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -86,14 +86,14 @@ dependencies: | |
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - "~>"
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: 3. | 
| 89 | 
            +
                    version: 3.12.0
         | 
| 90 90 | 
             
              type: :development
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 94 | 
             
                - - "~>"
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: 3. | 
| 96 | 
            +
                    version: 3.12.0
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 98 | 
             
              name: rake
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -142,14 +142,28 @@ dependencies: | |
| 142 142 | 
             
                requirements:
         | 
| 143 143 | 
             
                - - "~>"
         | 
| 144 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version: 1. | 
| 145 | 
            +
                    version: 1.36.0
         | 
| 146 146 | 
             
              type: :development
         | 
| 147 147 | 
             
              prerelease: false
         | 
| 148 148 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 149 | 
             
                requirements:
         | 
| 150 150 | 
             
                - - "~>"
         | 
| 151 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version: 1. | 
| 152 | 
            +
                    version: 1.36.0
         | 
| 153 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 154 | 
            +
              name: rubocop-performance
         | 
| 155 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 156 | 
            +
                requirements:
         | 
| 157 | 
            +
                - - "~>"
         | 
| 158 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 159 | 
            +
                    version: 1.14.2
         | 
| 160 | 
            +
              type: :development
         | 
| 161 | 
            +
              prerelease: false
         | 
| 162 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 163 | 
            +
                requirements:
         | 
| 164 | 
            +
                - - "~>"
         | 
| 165 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 166 | 
            +
                    version: 1.14.2
         | 
| 153 167 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 154 168 | 
             
              name: ruby-debug-ide
         | 
| 155 169 | 
             
              requirement: !ruby/object:Gem::Requirement
         |