visualize_packwerk 0.0.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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