Sha256: 49219c2ed7c403cc242ffa327422565b4489155a7c4318cb0c3234f770e88d24
Contents?: true
Size: 1.68 KB
Versions: 9
Compression:
Stored size: 1.68 KB
Contents
# frozen_string_literal: true require "bundler/match_platform" # Bundler normally raises a "GemNotFound" error when a specification # can't be materialized which halts bundler dependency enumeration. # This monkey patch instead creates MissingSpecification objects to # identify missing specs without raising errors and halting enumeration. # It was the most minimal-touch solution I could think of that should reliably # work across many bundler versions module Licensed module Bundler class MissingSpecification < Gem::BasicSpecification include ::Bundler::MatchPlatform attr_reader :name, :version, :platform, :source def initialize(name:, version:, platform:, source:) @name = name @version = version @platform = platform @source = source end def dependencies [] end def gem_dir; end def gems_dir Gem.dir end def summary; end def homepage; end def error "could not find #{name} (#{version}) in any sources" end end module LazySpecification def materialize_for_installation(*args) spec = super(*args) return spec unless spec.is_a?(LazySpecification) Licensed::Bundler::MissingSpecification.new(name: name, version: version, platform: platform, source: source) end def __materialize__(*args, **kwargs) spec = super(*args, **kwargs) return spec if spec Licensed::Bundler::MissingSpecification.new(name: name, version: version, platform: platform, source: source) end end end end module Bundler class LazySpecification prepend ::Licensed::Bundler::LazySpecification end end
Version data entries
9 entries across 9 versions & 1 rubygems