gem_dependencies_visualizer 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4cc2b18e190de1c3dd1613d5f8d1ebcff660363d
4
- data.tar.gz: 83bfb46b8efdf4d5776cbd8447b0907c5ed1628c
3
+ metadata.gz: cdb9a51b51a557ad4b43df551279a765d3bf9451
4
+ data.tar.gz: 781f4d337725ec8e109346e24fab39e2188c6692
5
5
  SHA512:
6
- metadata.gz: 3a6eb60801177a82f0773acd009280afbf254ce221073730b324f13660640b38c5fc6d7d1d436390b18e160cc6107f05bca5373d7b88885e11e90733e7e29532
7
- data.tar.gz: 386dea82e9795f51ccd1f321b8ffe3af37aca4c228509dc061fa9ab1f11a7a8e2e33151acda87d0d9c397bd73b3eae0f719ab4bd26a88d2caf8bdaa51176d490
6
+ metadata.gz: 0ba22599307500b44a3b515bebcfcc1a2a188ccd9f3311845a5abc7327175fe3baecdca9dc18ac722b22c1803356db4492245464f7fd87d11fdc95ca062ac559
7
+ data.tar.gz: 195fda093daf34168c430a74192c287d5c9a34282f7cfc828874dd112da6e3f7ac4ac7cb6ecc6226ae7c7d8617a2400593ad9c125aef53fd46a00f252d5b4916
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.1.5 (2016-09-07)
2
+
3
+ Features:
4
+ * Clients can now set the direction of the produced tree
5
+ * Read directly requested gems and the dependencies of those by parsing the Gemfile and the Gemfile.lock
6
+
1
7
  ## 0.1.4 (2016-09-05)
2
8
 
3
9
  Features:
data/README.md CHANGED
@@ -18,14 +18,24 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- To produce a graph of your gem dependencies, pass the content of a Gemfile.lock as is as an input to the visualizer. You can (optionaly) pass a graph name you might want to give to the .png file to be produced.
21
+ To produce a graph of your gem dependencies, pass the content of a Gemfile.lock and, if available, the content of the Gemfile as is as an input to the visualizer. You can (optionaly) pass a graph name you might want to give to the .png file to be produced.
22
22
 
23
23
  To use it just run the following in your code:
24
24
 
25
25
  ```ruby
26
- GemDependenciesVisualizer.produce_gems_graph(gemfile_lock_string, graph_name)
26
+ GemDependenciesVisualizer.produce_gems_graph(gemfile_content, gemfile_lock_content, graph_name, options = {})
27
27
  ```
28
28
 
29
+ Available options you could use are:
30
+
31
+ * :graph_direction, which will set how your graph will be produced with options
32
+ ** top-bottom, for the graph to start on the top towards the bottom
33
+ ** bottom-top, for the graph to start on the bottom towards the top
34
+ ** right-left, for the graph to start on the left towards the right
35
+ ** anything else is set to default, which is left to right.
36
+ * :keep_gem_version, which will keep the versions set in the Gemfile.lock
37
+ * :specific_directory, which will mark the folder in which the graphs should be rendered. All graphs are always created inside gem_dependencies_graphs folder. Default namespace used is app/assets/images.
38
+
29
39
  For example by using the produced Gemfile.lock in this gem, we can get the following:
30
40
 
31
41
  ![Sample produced graph](https://raw.githubusercontent.com/arcanoid/gem_dependencies_visualizer/master/sample_images/graph_sample.png)
@@ -1,3 +1,3 @@
1
1
  module GemDependenciesVisualizer
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -1,12 +1,14 @@
1
1
  require "gem_dependencies_visualizer/version"
2
2
 
3
3
  module GemDependenciesVisualizer
4
- def self.produce_gems_graph(string_input, graph_name = nil, options = {})
5
- unless string_input.nil?
4
+ def self.produce_gems_graph(gem_file_content, gem_file_lock_content, graph_name = nil, options = {})
5
+ if gem_file_lock_content.nil?
6
+ puts 'Please insert both Gemfile and Gemfile.lock contents to proceed or just Gemfile.lock content.'
7
+ else
6
8
  g = GraphViz::new( :G, :type => :digraph )
7
- g[:rankdir] ='LR'
9
+ g[:rankdir] = rankdir(options)
8
10
 
9
- data = populate_gem_data string_input, options
11
+ data = populate_gem_data gem_file_content, gem_file_lock_content, options
10
12
  populate_gem_graph g, data, graph_name, options
11
13
  end
12
14
  end
@@ -15,8 +17,23 @@ module GemDependenciesVisualizer
15
17
  protected
16
18
  #########
17
19
 
18
- def self.populate_gem_data(gemfile_lock_content, options = {})
19
- string_array = gemfile_lock_content.gsub("\r\n", "\n").split("\n")
20
+ def self.rankdir(options = {})
21
+ case options[:graph_direction]
22
+ when 'top-bottom' then 'TB'
23
+ when 'bottom-top' then 'BT'
24
+ when 'right-left' then 'RL'
25
+ else 'LR'
26
+ end
27
+ end
28
+
29
+ def self.collect_gems_from_gemfile(gem_file_content, options = {})
30
+ unless gem_file_content.nil?
31
+ (gem_file_content.scan /.*gem ['"](\S*)['"]/).flatten.uniq.sort
32
+ end
33
+ end
34
+
35
+ def self.collect_gems_from_gemfile_lock(gem_file_lock_content, options = {})
36
+ string_array = gem_file_lock_content.gsub("\r\n", "\n").split("\n")
20
37
  gem_list_index = 0
21
38
  gem_list = {}
22
39
 
@@ -67,12 +84,28 @@ module GemDependenciesVisualizer
67
84
  gem_list
68
85
  end
69
86
 
87
+ def self.populate_gem_data(gem_file_content, gemfile_lock_content, options = {})
88
+ gem_dependencies = collect_gems_from_gemfile_lock gemfile_lock_content, options
89
+ gems = collect_gems_from_gemfile gem_file_content, options
90
+
91
+ {
92
+ :gems => gems,
93
+ :gem_dependencies => gem_dependencies
94
+ }
95
+ end
96
+
70
97
  def self.populate_gem_graph(graph, data, graph_name = nil, options = {})
71
- default_node = graph.add_nodes('Default', :label => "<<b>Default</b>>", :color => 'dodgerblue3')
98
+ unless data[:gems].empty?
99
+ default_node = graph.add_nodes('Default', :label => "<<b>Default</b>>", :color => 'dodgerblue3')
100
+
101
+ data[:gems].each do |gem|
102
+ new_node = graph.add_nodes(gem, :shape => :msquare, :color => 'firebrick3')
103
+ graph.add_edges(default_node, new_node, :color => 'dodgerblue3')
104
+ end
105
+ end
72
106
 
73
- data.each do |dependency_item|
107
+ data[:gem_dependencies].sort_by { |dependency_item| dependency_item[0] }.each do |dependency_item|
74
108
  graph_parent_node = graph.add_nodes(dependency_item[0], :shape => :msquare, :color => 'firebrick3')
75
- graph.add_edges(default_node, graph_parent_node, :color => 'dodgerblue3')
76
109
 
77
110
  dependency_item[1].each do |child_gem|
78
111
  graph_child_node = graph.add_nodes(child_gem, :shape => :msquare)
@@ -103,4 +136,7 @@ module GemDependenciesVisualizer
103
136
  private_class_method :populate_gem_graph
104
137
  private_class_method :populate_gem_data
105
138
  private_class_method :clear_gem_name_from_version
139
+ private_class_method :rankdir
140
+ private_class_method :collect_gems_from_gemfile
141
+ private_class_method :collect_gems_from_gemfile_lock
106
142
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_dependencies_visualizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasilis Kalligas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-05 00:00:00.000000000 Z
11
+ date: 2016-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler