Class: Bundler::Graph
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Inherits: | Object |
Defined in: | lib/bundler/graph.rb |
Constant Summary
-
GRAPH_NAME =
# File 'lib/bundler/graph.rb', line 6:Gemfile
Class Method Summary
Instance Attribute Summary
- #edge_options readonly
- #groups readonly
- #node_options readonly
- #output_file readonly
- #output_format readonly
- #relations readonly
Instance Method Summary
- #viz
- #_groups private
- #_make_label(symbol_or_string_or_dependency, element_type) private
- #_populate_relations private
- #spec_for_dependency(dependency) private
Constructor Details
.new(env, output_file, show_version = false, show_requirements = false, output_format = "png", without = []) ⇒ Graph
# File 'lib/bundler/graph.rb', line 8
def initialize(env, output_file, show_version = false, show_requirements = false, output_format = "png", without = []) @env = env @output_file = output_file @show_version = show_version @show_requirements = show_requirements @output_format = output_format @without_groups = without.map(&:to_sym) @groups = [] @relations = Hash.new {|h, k| h[k] = Set.new } @node_options = {} @edge_options = {} _populate_relations end
Instance Attribute Details
#edge_options (readonly)
[ GitHub ]# File 'lib/bundler/graph.rb', line 24
attr_reader :groups, :relations, :, :, :output_file, :output_format
#groups (readonly)
[ GitHub ]# File 'lib/bundler/graph.rb', line 24
attr_reader :groups, :relations, :, :, :output_file, :output_format
#node_options (readonly)
[ GitHub ]# File 'lib/bundler/graph.rb', line 24
attr_reader :groups, :relations, :, :, :output_file, :output_format
#output_file (readonly)
[ GitHub ]# File 'lib/bundler/graph.rb', line 24
attr_reader :groups, :relations, :, :, :output_file, :output_format
#output_format (readonly)
[ GitHub ]# File 'lib/bundler/graph.rb', line 24
attr_reader :groups, :relations, :, :, :output_file, :output_format
#relations (readonly)
[ GitHub ]# File 'lib/bundler/graph.rb', line 24
attr_reader :groups, :relations, :, :, :output_file, :output_format
Instance Method Details
#_groups (private)
[ GitHub ]# File 'lib/bundler/graph.rb', line 52
def _groups relations = Hash.new {|h, k| h[k] = Set.new } @env.current_dependencies.each do |dependency| dependency.groups.each do |group| next if @without_groups.include?(group) relations[group.to_s].add(dependency) @relations[group.to_s].add(dependency.name) @node_options[group.to_s] ||= _make_label(group, :node) @edge_options["#{group}_#{dependency.name}"] = _make_label(dependency, :edge) end end @groups = relations.keys relations end
#_make_label(symbol_or_string_or_dependency, element_type) (private)
[ GitHub ]# File 'lib/bundler/graph.rb', line 69
def _make_label(symbol_or_string_or_dependency, element_type) case element_type.to_sym when :node if symbol_or_string_or_dependency.is_a?(Gem::Dependency) label = symbol_or_string_or_dependency.name.dup label << "\n#{spec_for_dependency(symbol_or_string_or_dependency).version}" if @show_version else label = symbol_or_string_or_dependency.to_s end when :edge label = nil if symbol_or_string_or_dependency.respond_to?(:requirements_list) && @show_requirements tmp = symbol_or_string_or_dependency.requirements_list.join(", ") label = tmp if tmp != ">= 0" end else raise ArgumentError, "2nd argument is invalid" end label.nil? ? {} : { label: label } end
#_populate_relations (private)
[ GitHub ]# File 'lib/bundler/graph.rb', line 32
def _populate_relations parent_dependencies = _groups.values.to_set.flatten loop do break if parent_dependencies.empty? tmp = Set.new parent_dependencies.each do |dependency| child_dependencies = spec_for_dependency(dependency).runtime_dependencies.to_set @relations[dependency.name] += child_dependencies.map(&:name).to_set tmp += child_dependencies @node_options[dependency.name] = _make_label(dependency, :node) child_dependencies.each do |c_dependency| @edge_options["#{dependency.name}_#{c_dependency.name}"] = _make_label(c_dependency, :edge) end end parent_dependencies = tmp end end
#spec_for_dependency(dependency) (private)
[ GitHub ]# File 'lib/bundler/graph.rb', line 90
def spec_for_dependency(dependency) @env.requested_specs.find {|s| s.name == dependency.name } end
#viz
[ GitHub ]# File 'lib/bundler/graph.rb', line 26
def viz GraphVizClient.new(self).run end