lib/bumbler/bundler.rb in bumbler-0.5.0 vs lib/bumbler/bundler.rb in bumbler-0.6.0

- old
+ new

@@ -1,55 +1,46 @@ +# frozen_string_literal: true 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] + @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) + + def require_started(gem_name) + Bumbler::Progress.item_started(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 - + + def require_finished(gem_name, path, time) @gem_state[gem_name][path] = true - if @gem_state[gem_name].values.all? - Bumbler::Progress.item_finished(:bundler, gem_name, load_time) + Bumbler::Progress.item_finished(gem_name, 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| - # Handle explicitly required gems - path = spec.name if path == true - - @require_map[path] = spec.name - @gem_state[spec.name][path] = false + gem_name = spec.name + @gem_state[gem_name] = {} + + # TODO: this is horrible guess-work ... we need to get the gems load-path instead + paths = + if !spec.autorequire || spec.autorequire == [true] + [gem_name] + else + spec.autorequire + end + + paths.each do |path| + @require_map[path] = gem_name + @gem_state[gem_name][path] = false end - - Bumbler::Progress.register_item(:bundler, spec.name) + + Bumbler::Progress.register_item(gem_name) end end end end end