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