lib/dependabot/composer/file_parser.rb in dependabot-composer-0.112.18 vs lib/dependabot/composer/file_parser.rb in dependabot-composer-0.112.19

- old
+ new

@@ -120,51 +120,54 @@ end def dependency_version(name:, type:) return unless lockfile - key = lockfile_key(type) + package = lockfile_details(name: name, type: type) + return unless package - version = - parsed_lockfile. - fetch(key, []). - find { |d| d["name"] == name }&. - fetch("version")&.to_s&.sub(/^v?/, "") - + version = package.fetch("version")&.to_s&.sub(/^v?/, "") return version unless version&.start_with?("dev-") - parsed_lockfile. - fetch(key, []). - find { |d| d["name"] == name }&. - dig("source", "reference") + package.dig("source", "reference") end def dependency_source(name:, type:, requirement:) return unless lockfile - key = lockfile_key(type) - package = parsed_lockfile.fetch(key).find { |d| d["name"] == name } + package_details = lockfile_details(name: name, type: type) + return unless package_details - return unless package - - if package["source"].nil? && package.dig("dist", "type") == "path" + if package_details["source"].nil? && + package_details.dig("dist", "type") == "path" return { type: "path" } end - return unless package.dig("source", "type") == "git" + git_dependency_details(package_details, requirement) + end - details = { - type: "git", - url: package.dig("source", "url") - } + def git_dependency_details(package_details, requirement) + return unless package_details.dig("source", "type") == "git" - return details unless requirement.start_with?("dev-") + branch = + if requirement.start_with?("dev-") + requirement. + sub(/^dev-/, ""). + sub(/\s+as\s.*/, ""). + split("#").first + elsif package_details.fetch("version")&.to_s&.start_with?("dev-") + package_details.fetch("version")&.to_s&.sub(/^dev-/, "") + end - branch = requirement. - sub(/^dev-/, ""). - sub(/\s+as\s.*/, ""). - split("#").first + details = { type: "git", url: package_details.dig("source", "url") } + return details unless branch + details.merge(branch: branch, ref: nil) + end + + def lockfile_details(name:, type:) + key = lockfile_key(type) + parsed_lockfile.fetch(key, []).find { |d| d["name"] == name } end def lockfile_key(type) case type when "runtime" then "packages"