visualize_packwerk 0.0.6 → 0.1.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: a0b2682a8a34f87cc58bd46f0896ff4a743908035942abd58c49bbd13e1d0715
4
- data.tar.gz: '08a6f4c9bf22cf18d6951d5ca594c2fbe79222921641a98ec6c1f3646587b398'
3
+ metadata.gz: 4425d05708c5fc0d1ccc3e76d991d222e4089e4ed7717bdcc90ebcb7577b8a0d
4
+ data.tar.gz: 2dc5bb9be62bbb7f3251de7a52b538de4c3ed3c1fc9ef1a53615f617da5f8d1b
5
5
  SHA512:
6
- metadata.gz: cff9630c1df4d9dc684b2dda3c76c6e7dc14e95add1d00c117b9b9f641cdb80318aac6e523cf4fe0aac434b9fc40ddd9105fd993ebc1890a63bcf5825d04a8dd
7
- data.tar.gz: 8c8e2208ddccbf4da02c68c747341667557cfb4df311477230d120f0979e6ab2d5a2add59ca7bd0aa2cae3e98028acaae4d39af3faefcece6e7112d34d2d355f
6
+ metadata.gz: 1934e543832c1b2df2811fdaed60687d223849b190cae86eeb3e67b2127b4e95cb89409f56d4609641c0bf9e99ba4fde7cb57836cfba0daef77ede66d7fde776
7
+ data.tar.gz: a9e3cc970f06aa8a36406fed5e8bff47de3070a9d2b1b0d8f3a3ab5bb4c544da21eb2c92cc158d25871250788d8b10a2f588d08c2851cc2c380916e63ce3b955
data/README.md CHANGED
@@ -6,17 +6,17 @@ This gem contains rake tasks to help visualize relationships between packwerk pa
6
6
  ## Building a package graph for a selection of packages
7
7
  ```ruby
8
8
  # Select the packs you want to include
9
- selected_packs = ParsePackwerk.all
10
- selected_packs = ParsePackwerk.all.select{|p| ['packs/my_pack_1', 'packs/my_pack_2'].include?(p.name) }
11
- selected_packs = ParsePackwerk.all.select{|p| ['Team 1', 'Team 2'].include?(CodeOwnership.for_package(p)&.name) }
9
+ selected_packs = Packs.all
10
+ selected_packs = Packs.all.select{ |p| ['packs/my_pack_1', 'packs/my_pack_2'].include?(p.name) }
11
+ selected_packs = Packs.all.select{ |p| ['Team 1', 'Team 2'].include?(CodeOwnership.for_package(p)&.name) }
12
12
  VisualizePackwerk.package_graph!(selected_packs)
13
13
  ```
14
14
 
15
15
  # Building a team graph for specific teams
16
- ```
16
+ ```ruby
17
17
  # Select the teams you want to include
18
18
  selected_teams = CodeTeams.all
19
- selected_teams = CodeTeams.all.select{ ... }
19
+ selected_teams = CodeTeams.all.select{ |t| ['Team 1', 'Team 2'].include?(t.name) }
20
20
  VisualizePackwerk.team_graph!(selected_teams)
21
21
  ```
22
22
 
@@ -22,18 +22,26 @@ module VisualizePackwerk
22
22
  sig { returns(PackageGraph) }
23
23
  def self.construct
24
24
  package_nodes = Set.new
25
- ParsePackwerk.all.each do |p|
26
- # We could consider ignoring the root!
27
- # We would also need to ignore it when parsing PackageNodes.
28
- # next if p.name == ParsePackwerk::ROOT_PACKAGE_NAME
25
+ Packs.all.each do |p|
29
26
  owner = CodeOwnership.for_package(p)
30
- violations_by_package = p.violations.group_by(&:to_package_name).transform_values(&:count)
27
+
28
+ # Here we need to load the package violations and dependencies,
29
+ # so we need to use ParsePackwerk to parse that information.
30
+ package_info = ParsePackwerk.find(p.name)
31
+ next unless package_info # This should not happen unless packs/parse_packwerk change implementation
32
+
33
+ violations = package_info.violations
34
+ violations_by_package = violations.group_by(&:to_package_name).transform_values(&:count)
35
+ violations_by_package.delete('.') # remove root package violations
36
+
37
+ dependencies = package_info.dependencies
38
+ dependencies.delete('.') # remove root package dependencies
31
39
 
32
40
  package_nodes << PackageNode.new(
33
41
  name: p.name,
34
42
  team_name: owner&.name || 'Unknown',
35
43
  violations_by_package: violations_by_package,
36
- dependencies: Set.new(p.dependencies)
44
+ dependencies: Set.new(dependencies)
37
45
  )
38
46
  end
39
47
 
@@ -8,7 +8,7 @@ module VisualizePackwerk
8
8
 
9
9
  sig { params(teams: T::Array[CodeTeams::Team]).void }
10
10
  def create_package_graph_for_teams!(teams)
11
- packages = ParsePackwerk.all.select do |package|
11
+ packages = Packs.all.select do |package|
12
12
  teams.map(&:name).include?(CodeOwnership.for_package(package)&.name)
13
13
  end
14
14
 
@@ -24,14 +24,14 @@ module VisualizePackwerk
24
24
  draw_graph!(team_graph, node_names, show_all_nodes: show_all_teams)
25
25
  end
26
26
 
27
- sig { params(packages: T::Array[ParsePackwerk::Package]).void }
27
+ sig { params(packages: T::Array[Packs::Pack]).void }
28
28
  def create_package_graph!(packages)
29
29
  graph = PackageGraph.construct
30
30
  node_names = packages.map(&:name)
31
31
  draw_graph!(graph, node_names)
32
32
  end
33
33
 
34
- sig { params(packages: T::Array[ParsePackwerk::Package], show_all_nodes: T::Boolean).void }
34
+ sig { params(packages: T::Array[Packs::Pack], show_all_nodes: T::Boolean).void }
35
35
  def create_graph!(packages, show_all_nodes: false)
36
36
  graph = PackageGraph.construct
37
37
  node_names = packages.map(&:name)
@@ -1,5 +1,6 @@
1
1
  # typed: strict
2
2
 
3
+ require 'packs'
3
4
  require 'parse_packwerk'
4
5
  require 'code_ownership'
5
6
  require 'graphviz'
@@ -16,7 +17,7 @@ require 'visualize_packwerk/package_relationships'
16
17
  module VisualizePackwerk
17
18
  extend T::Sig
18
19
 
19
- sig { params(packages: T::Array[ParsePackwerk::Package]).void }
20
+ sig { params(packages: T::Array[Packs::Pack]).void }
20
21
  def self.package_graph!(packages)
21
22
  PackageRelationships.new.create_package_graph!(packages)
22
23
  end