Sha256: ae81574c4c7501ca2ebde207ec6e5ff4cd5ffdb66c0c26d2704a15c5a46a9e5f

Contents?: true

Size: 1.47 KB

Versions: 40

Compression:

Stored size: 1.47 KB

Contents

require_relative 'package'
require_relative 'rubygems'
require_relative 'version_constraint'
require_relative 'incompatibility'
require_relative 'basic_package_source'

module Bundler::PubGrub
  class StaticPackageSource < BasicPackageSource
    class DSL
      def initialize(packages, root_deps)
        @packages = packages
        @root_deps = root_deps
      end

      def root(deps:)
        @root_deps.update(deps)
      end

      def add(name, version, deps: {})
        version = Gem::Version.new(version)
        @packages[name] ||= {}
        raise ArgumentError, "#{name} #{version} declared twice" if @packages[name].key?(version)
        @packages[name][version] = clean_deps(name, version, deps)
      end

      private

      # Exclude redundant self-referencing dependencies
      def clean_deps(name, version, deps)
        deps.reject {|dep_name, req| name == dep_name && Bundler::PubGrub::RubyGems.parse_range(req).include?(version) }
      end
    end

    def initialize
      @root_deps = {}
      @packages = {}

      yield DSL.new(@packages, @root_deps)

      super()
    end

    def all_versions_for(package)
      @packages[package].keys
    end

    def root_dependencies
      @root_deps
    end

    def dependencies_for(package, version)
      @packages[package][version]
    end

    def parse_dependency(package, dependency)
      return false unless @packages.key?(package)

      Bundler::PubGrub::RubyGems.parse_constraint(package, dependency)
    end
  end
end

Version data entries

40 entries across 40 versions & 2 rubygems

Version Path
rubygems-update-3.6.3 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.6.3 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.6.2 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.6.2 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.6.1 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.6.1 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.6.0 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.6.0 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.5.23 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.5.23 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.5.22 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.5.22 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.5.21 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.5.21 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.5.20 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.5.20 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.5.19 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.5.19 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
rubygems-update-3.5.18 bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
bundler-2.5.18 lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb