graphwerk 1.1.0 → 1.2.0

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
  SHA256:
3
- metadata.gz: bf78a60a25721799a4c6dc0623fa3678ceead0369974a26a7828ce05b10a81e6
4
- data.tar.gz: 877ded46de6dd8a16320e0eca0b0bf4f9cd1bed69e70aaf28b6b37057d25cb8d
3
+ metadata.gz: 7af64b8123b10c0d175ca2b59b321cd0a5140ce3216dfc1d2bd5851f362b5642
4
+ data.tar.gz: 05c51382e40bc20ebf51deb955a2bf6b715ee3992f7ceb379d638233cfe998c9
5
5
  SHA512:
6
- metadata.gz: 7f0abf8f377d771f2bd7fee6abc0d9872187493cca876b7ebea34511df1ef47b8c7c976f14d6b9671f9e5ad7a0fd3d6bef0aca56a3b199946fdfe73aedc5b009
7
- data.tar.gz: be181ec7c607241974d2753cc0bc649a10d880624316a674e671b43bad259e8e56658d886486fb35970766dea95280eb8bfd209138af605da0ad64be299b6e36
6
+ metadata.gz: 1cef57b21fe954604e46777f4a35a8200c0bf33f4b0b7a36345faf6a38eb1af2ddbe86462cb79a9bd3ddf90fa3fc7845168b317f59fbd717f1f54e1cda5e88e8
7
+ data.tar.gz: fdd4b9b472b4ea595f0e13929448459a7524d10e2edf9efa2f5ef77afc77df2c61e1fe99af2f6bb66b2178974c954e9a823d02301fa71beacaaec8c1228f9bff
@@ -1,3 +1,7 @@
1
+ 1.2.0
2
+
3
+ * Deprecated references are now drawn on the output graph.
4
+
1
5
  1.1.0
2
6
 
3
7
  * Default layout switched to Dot
data/README.md CHANGED
@@ -40,6 +40,7 @@ graph = Graphwerk::Builders::Graph.new(
40
40
  Packwerk::PackageSet.load_all_from("."),
41
41
  options: {
42
42
  layout: Graphwerk::Layout::Twopi,
43
+ deprecated_references_color: 'yellow',
43
44
  graph: { overlap: true },
44
45
  node: { fillcolor: '#000000' },
45
46
  edges: { len: '3.0' }
@@ -8,6 +8,7 @@ require 'active_support/core_ext/hash/deep_merge'
8
8
  require 'graphwerk/version'
9
9
  require 'graphwerk/constants'
10
10
  require 'graphwerk/layout'
11
+ require 'graphwerk/deprecated_references_loader'
11
12
  require 'graphwerk/presenters/package'
12
13
  require 'graphwerk/builders/graph'
13
14
  require 'graphwerk/railtie' if defined?(Rails)
@@ -9,6 +9,7 @@ module Graphwerk
9
9
  OptionsShape = T.type_alias {
10
10
  {
11
11
  layout: Graphwerk::Layout,
12
+ deprecated_references_color: String,
12
13
  application: T::Hash[Symbol, Object],
13
14
  graph: T::Hash[Symbol, Object],
14
15
  node: T::Hash[Symbol, Object],
@@ -18,6 +19,7 @@ module Graphwerk
18
19
 
19
20
  DEFAULT_OPTIONS = T.let({
20
21
  layout: Graphwerk::Layout::Dot,
22
+ deprecated_references_color: 'red',
21
23
  application: {
22
24
  style: 'filled',
23
25
  fillcolor: '#333333',
@@ -41,10 +43,11 @@ module Graphwerk
41
43
  }
42
44
  }, OptionsShape)
43
45
 
44
- sig { params(package_set: Packwerk::PackageSet, options: T::Hash[Symbol, Object]).void }
45
- def initialize(package_set, options: {})
46
+ sig { params(package_set: Packwerk::PackageSet, options: T::Hash[Symbol, Object], root_path: Pathname).void }
47
+ def initialize(package_set, options: {}, root_path: Pathname.new(ENV['PWD']))
46
48
  @package_set = package_set
47
49
  @options = T.let(DEFAULT_OPTIONS.deep_merge(options), OptionsShape)
50
+ @root_path = root_path
48
51
  @graph = T.let(build_empty_graph, GraphViz)
49
52
  @nodes = T.let(build_empty_nodes, T::Hash[String, GraphViz::Node])
50
53
  end
@@ -85,7 +88,10 @@ module Graphwerk
85
88
 
86
89
  sig { void }
87
90
  def add_package_dependencies_to_graph
88
- packages.each { |package| draw_dependencies(package) }
91
+ packages.each do |package|
92
+ draw_dependencies(package)
93
+ draw_deprecated_references(package)
94
+ end
89
95
  end
90
96
 
91
97
  sig { void }
@@ -102,10 +108,21 @@ module Graphwerk
102
108
  end
103
109
  end
104
110
 
111
+ sig { params(package: Presenters::Package).void }
112
+ def draw_deprecated_references(package)
113
+ package.deprecated_references.each do |reference|
114
+ @graph.add_edges(
115
+ @nodes[package.name],
116
+ @nodes[reference],
117
+ color: @options[:deprecated_references_color]
118
+ )
119
+ end
120
+ end
121
+
105
122
  sig { returns(T::Array[Presenters::Package]) }
106
123
  def packages
107
124
  @packages = T.let(@packages, T.nilable(T::Array[Presenters::Package]))
108
- @packages ||= @package_set.map { |package| Presenters::Package.new(package) }
125
+ @packages ||= @package_set.map { |package| Presenters::Package.new(package, @root_path) }
109
126
  end
110
127
  end
111
128
  end
@@ -0,0 +1,31 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Graphwerk
5
+ class DeprecatedReferencesLoader
6
+ extend T::Sig
7
+
8
+ sig { params(package: Packwerk::Package, root_path: Pathname).void }
9
+ def initialize(package, root_path)
10
+ @package = package
11
+ @root_path = root_path
12
+ end
13
+
14
+ sig { returns(T::Array[String]) }
15
+ def load
16
+ return [] if !deprecated_references_file.exist?
17
+
18
+ (YAML.load_file(deprecated_references_file) || {}).keys
19
+ end
20
+
21
+ private
22
+
23
+ DEPRECATED_REFERENCES_FILENAME = 'deprecated_references.yml'
24
+
25
+ sig { returns(Pathname) }
26
+ def deprecated_references_file
27
+ @deprecated_references_file = T.let(@deprecated_references_file, T.nilable(Pathname))
28
+ @deprecated_references_file ||= @root_path.join(@package.name, DEPRECATED_REFERENCES_FILENAME)
29
+ end
30
+ end
31
+ end
@@ -6,9 +6,10 @@ module Graphwerk
6
6
  class Package
7
7
  extend T::Sig
8
8
 
9
- sig { params(package: Packwerk::Package).void }
10
- def initialize(package)
9
+ sig { params(package: Packwerk::Package, root_path: Pathname).void }
10
+ def initialize(package, root_path)
11
11
  @package = package
12
+ @root_path = root_path
12
13
  end
13
14
 
14
15
  sig { returns(String) }
@@ -21,6 +22,13 @@ module Graphwerk
21
22
  @package.dependencies.map { |dependency| Name.new(dependency).node_name }
22
23
  end
23
24
 
25
+ sig { returns(T::Array[String]) }
26
+ def deprecated_references
27
+ DeprecatedReferencesLoader.new(@package, @root_path).load.map do |reference|
28
+ Name.new(reference).node_name
29
+ end
30
+ end
31
+
24
32
  ROOT_COLOR = 'black'
25
33
  COMPONENT_COLOR = 'azure4'
26
34
 
@@ -54,11 +62,9 @@ module Graphwerk
54
62
  Constants::ROOT_PACKAGE_NAME
55
63
  end
56
64
 
57
- ROOT_PACKAGE = '.'
58
-
59
65
  sig { returns(T::Boolean) }
60
66
  def root?
61
- @package_name == ROOT_PACKAGE
67
+ @package_name == Packwerk::Package::ROOT_PACKAGE_NAME
62
68
  end
63
69
 
64
70
  private
@@ -67,8 +73,6 @@ module Graphwerk
67
73
  def without_root_package
68
74
  T.must(@package_name.split('/', 2).last)
69
75
  end
70
-
71
- private_constant :ROOT_PACKAGE
72
76
  end
73
77
 
74
78
  private_constant :ROOT_COLOR,
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Graphwerk
5
- VERSION = '1.1.0'
5
+ VERSION = '1.2.0'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphwerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Giles
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-30 00:00:00.000000000 Z
11
+ date: 2020-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -172,6 +172,7 @@ files:
172
172
  - lib/graphwerk.rb
173
173
  - lib/graphwerk/builders/graph.rb
174
174
  - lib/graphwerk/constants.rb
175
+ - lib/graphwerk/deprecated_references_loader.rb
175
176
  - lib/graphwerk/layout.rb
176
177
  - lib/graphwerk/presenters/package.rb
177
178
  - lib/graphwerk/railtie.rb