Sha256: 8f2104f63b41ed111e2a481a36477535094118026d0dbe447f8504c6511ed9ef

Contents?: true

Size: 1.43 KB

Versions: 204

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

require "dependabot/composer/version"

module Dependabot
  module Composer
    module Helpers
      # From composers json-schema: https://getcomposer.org/schema.json
      COMPOSER_V2_NAME_REGEX = %r{^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$}.freeze
      # From https://github.com/composer/composer/blob/b7d770659b4e3ef21423bd67ade935572913a4c1/src/Composer/Repository/PlatformRepository.php#L33
      PLATFORM_PACKAGE_REGEX = /
        ^(?:php(?:-64bit|-ipv6|-zts|-debug)?|hhvm|(?:ext|lib)-[a-z0-9](?:[_.-]?[a-z0-9]+)*
        |composer-(?:plugin|runtime)-api)$
      /x.freeze

      def self.composer_version(composer_json, parsed_lockfile = nil)
        if parsed_lockfile && parsed_lockfile["plugin-api-version"]
          version = Composer::Version.new(parsed_lockfile["plugin-api-version"])
          return version.canonical_segments.first == 1 ? "v1" : "v2"
        else
          return "v1" if composer_json["name"] && composer_json["name"] !~ COMPOSER_V2_NAME_REGEX
          return "v1" if invalid_v2_requirement?(composer_json)
        end

        "v2"
      end

      def self.invalid_v2_requirement?(composer_json)
        return false unless composer_json.key?("require")

        composer_json["require"].keys.any? do |key|
          key !~ PLATFORM_PACKAGE_REGEX && key !~ COMPOSER_V2_NAME_REGEX
        end
      end
      private_class_method :invalid_v2_requirement?
    end
  end
end

Version data entries

204 entries across 204 versions & 1 rubygems

Version Path
dependabot-composer-0.212.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.211.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.210.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.209.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.208.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.207.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.206.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.205.1 lib/dependabot/composer/helpers.rb
dependabot-composer-0.205.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.204.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.203.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.202.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.201.1 lib/dependabot/composer/helpers.rb
dependabot-composer-0.201.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.200.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.199.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.198.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.197.0 lib/dependabot/composer/helpers.rb
dependabot-composer-0.196.4 lib/dependabot/composer/helpers.rb
dependabot-composer-0.196.3 lib/dependabot/composer/helpers.rb