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 +4 -4
- data/README.md +5 -5
- data/lib/visualize_packwerk/package_graph.rb +14 -6
- data/lib/visualize_packwerk/package_relationships.rb +3 -3
- data/lib/visualize_packwerk.rb +2 -1
- data/sorbet/rbi/gems/{code_ownership@1.28.0.rbi → code_ownership@1.31.0.rbi} +216 -10
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +150 -0
- data/sorbet/rbi/gems/packs@0.0.6.rbi +115 -0
- data/sorbet/rbi/gems/{parser@3.1.2.0.rbi → parser@3.1.2.1.rbi} +1685 -918
- data/sorbet/rbi/gems/{tapioca@0.8.3.rbi → tapioca@0.9.2.rbi} +1343 -193
- metadata +21 -18
- data/sorbet/rbi/gems/activesupport@7.0.3.1.rbi +0 -76
- data/sorbet/rbi/gems/concurrent-ruby@1.1.10.rbi +0 -8
- data/sorbet/rbi/gems/i18n@1.12.0.rbi +0 -8
- data/sorbet/rbi/gems/json@2.6.2.rbi +0 -1423
- data/sorbet/rbi/gems/minitest@5.16.2.rbi +0 -9
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +0 -8
- data/sorbet/rbi/gems/regexp_parser@2.5.0.rbi +0 -8
- data/sorbet/rbi/gems/rubocop-ast@1.19.1.rbi +0 -8
- data/sorbet/rbi/gems/rubocop-sorbet@0.6.11.rbi +0 -8
- data/sorbet/rbi/gems/rubocop@1.33.0.rbi +0 -8
- data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +0 -8
- data/sorbet/rbi/gems/tzinfo@2.0.5.rbi +0 -8
- data/sorbet/rbi/gems/unicode-display_width@2.2.0.rbi +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4425d05708c5fc0d1ccc3e76d991d222e4089e4ed7717bdcc90ebcb7577b8a0d
|
4
|
+
data.tar.gz: 2dc5bb9be62bbb7f3251de7a52b538de4c3ed3c1fc9ef1a53615f617da5f8d1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 =
|
10
|
-
selected_packs =
|
11
|
-
selected_packs =
|
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
|
-
|
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
|
-
|
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(
|
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 =
|
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[
|
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[
|
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)
|
data/lib/visualize_packwerk.rb
CHANGED
@@ -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[
|
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
|