Sha256: b5ae336d992e39a34267e7c98185e3e9315920e5eca8d6742b5006fdd038d504

Contents?: true

Size: 1.4 KB

Versions: 8

Compression:

Stored size: 1.4 KB

Contents

module Bumbler
  module Bundler
    class << self
      # Returns which gem a require maps to, or nil.
      def gem_for_require(path)
        self.read_bundler_environment if @require_map.nil?
        
        return @require_map[path]
      end
      
      def require_started(path)
        gem_name = self.gem_for_require(path)
        return unless gem_name
        
        Bumbler::Progress.item_started(:bundler, gem_name)
      end
      
      def require_finished(path, load_time)
        self.read_bundler_environment if @gem_state.nil?
        
        # Tick it off for the gem.
        gem_name = self.gem_for_require(path)
        return unless gem_name
        
        @gem_state[gem_name][path] = true
        
        if @gem_state[gem_name].values.all?
          Bumbler::Progress.item_finished(:bundler, gem_name, load_time)
        end
      end
      
      def start!
        self.read_bundler_environment
      end
      
      def read_bundler_environment
        @require_map = {}
        @gem_state = {}
        
        ::Bundler.environment.current_dependencies.each do |spec|
          @gem_state[spec.name] = {}
          
          Array(spec.autorequire || spec.name).each do |path|
            @require_map[path] = spec.name
            @gem_state[spec.name][path] = false
          end
          
          Bumbler::Progress.register_item(:bundler, spec.name)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
bumbler-0.4.0 lib/bumbler/bundler.rb
bumbler-0.3.2 lib/bumbler/bundler.rb
bumbler-0.3.1 lib/bumbler/bundler.rb
bumbler-0.3.0 lib/bumbler/bundler.rb
bumbler-0.2.1 lib/bumbler/bundler.rb
bumbler-0.2.0 lib/bumbler/bundler.rb
bumbler-0.1.4 lib/bumbler/bundler.rb
bumbler-0.1.3 lib/bumbler/bundler.rb