pocky 1.4.0 → 1.9.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 +23 -8
- data/lib/{Rakefile → pocky/Rakefile} +0 -0
- data/lib/pocky/packwerk.rb +35 -25
- data/lib/{railtie.rb → pocky/railtie.rb} +0 -0
- data/lib/pocky/tasks/generate.rake +10 -0
- data/lib/pocky/version.rb +1 -1
- metadata +5 -5
- data/lib/tasks/generate.rake +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a33d7a33b47a8ec7b5763188f1670934db2b63df6e16409371ec10456a06ff98
|
4
|
+
data.tar.gz: afe4ed9619ec1d6843fb23a92fde8ef89349650fec21abc2e584cccdd7ba9096
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2469169116f8afcebfd1fd41e05b6a74526c37e4abcdd78b94feae73867773fcc277192a6e8ea89ac57f35ce4608d9ec657e4b7309e59875bd11b0eb40b6bfa3
|
7
|
+
data.tar.gz: 6ef340611027d6ffea6044c1f03576d5b78ea1b70b2d852a9a1784c99d66d644abd07c4c71ccf58f9edeb98b7dbe42c3cb7eb2867afcc5fdf1a0ed60b692ded2
|
data/README.md
CHANGED
@@ -6,14 +6,13 @@ Pocky generates dependency graphs for your packwerk packages. The gem is named a
|
|
6
6
|
|
7
7
|
## Usage
|
8
8
|
|
9
|
-
Invoke from irb or code
|
9
|
+
Invoke from irb or code, only `root_path` is required.
|
10
10
|
```ruby
|
11
11
|
Pocky::Packwerk.generate(
|
12
12
|
root_path: 'path/to/app/packages',
|
13
|
-
default_package: 'Default',
|
14
|
-
package_prefix: 'app/packages', # this is for matching package names listed in deprecated_references.yml
|
13
|
+
default_package: 'Default', # The default package listed as "." in deprecated_references.yml
|
15
14
|
filename: 'packwerk-viz.png', # Name of output file
|
16
|
-
dpi: 150
|
15
|
+
dpi: 150 # Output file resolution
|
17
16
|
)
|
18
17
|
```
|
19
18
|
|
@@ -21,11 +20,27 @@ Pocky::Packwerk.generate(
|
|
21
20
|
|
22
21
|
Note that the the bold edges indicate heavier dependencies.
|
23
22
|
|
24
|
-
Invoke as a rake task
|
23
|
+
Invoke as a rake task:
|
25
24
|
|
25
|
+
$ rake pocky:generate"[path/to/app/packages,Monolith,packages.png,100]"
|
26
|
+
|
27
|
+
|
28
|
+
#### `root_path` as an array
|
29
|
+
`root_path` can also be an array in case your packages are organized in multiple directories. Alternatively, you can also provide paths to individual packages to generate more focused graphs for your package subsystems.
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
Pocky::Packwerk.generate(
|
33
|
+
root_path: [
|
34
|
+
'path/to/app/packages/a',
|
35
|
+
'path/to/app/packages/z',
|
36
|
+
]
|
37
|
+
)
|
26
38
|
```
|
27
|
-
|
28
|
-
|
39
|
+
|
40
|
+
Generate the same graph using the rake task:
|
41
|
+
|
42
|
+
$ rake pocky:generate"[path/to/app/packages/a path/to/app/packages/z]"
|
43
|
+
|
29
44
|
|
30
45
|
## Installation
|
31
46
|
|
@@ -51,7 +66,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
51
66
|
|
52
67
|
## Contributing
|
53
68
|
|
54
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
69
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/mquan/pocky.
|
55
70
|
|
56
71
|
## License
|
57
72
|
|
File without changes
|
data/lib/pocky/packwerk.rb
CHANGED
@@ -4,7 +4,11 @@ require 'yaml'
|
|
4
4
|
require 'ruby-graphviz'
|
5
5
|
|
6
6
|
module Pocky
|
7
|
+
class InvalidRootPathError < StandardError
|
8
|
+
end
|
9
|
+
|
7
10
|
class Packwerk
|
11
|
+
REFERENCE_FILE_NAME = 'deprecated_references.yml'
|
8
12
|
MAX_EDGE_WIDTH = 5
|
9
13
|
|
10
14
|
def self.generate(params)
|
@@ -15,28 +19,28 @@ module Pocky
|
|
15
19
|
def initialize(
|
16
20
|
root_path:,
|
17
21
|
default_package: 'Default',
|
18
|
-
package_prefix: '',
|
19
22
|
filename: 'packwerk-viz.png',
|
20
23
|
dpi: 150
|
21
24
|
)
|
22
|
-
@
|
25
|
+
@root_paths = [*root_path]
|
26
|
+
raise InvalidRootPathError, 'root_path is required' if @root_paths.empty?
|
27
|
+
|
23
28
|
@default_package = default_package
|
24
|
-
@
|
25
|
-
@
|
26
|
-
@output_dpi = output_dpi.to_i
|
29
|
+
@filename = filename
|
30
|
+
@dpi = dpi.to_i
|
27
31
|
@deprecated_references = {}
|
28
32
|
@nodes = {}
|
29
33
|
end
|
30
34
|
|
31
35
|
def generate
|
32
|
-
|
36
|
+
load_package_references
|
33
37
|
build_directed_graph
|
34
38
|
end
|
35
39
|
|
36
40
|
private
|
37
41
|
|
38
42
|
def build_directed_graph
|
39
|
-
graph = GraphViz.new(:G, type: :digraph, dpi: @
|
43
|
+
graph = GraphViz.new(:G, type: :digraph, dpi: @dpi)
|
40
44
|
@deprecated_references.each do |package, references|
|
41
45
|
@nodes[package] ||= graph.add_nodes(package)
|
42
46
|
references.each do |provider, dependencies|
|
@@ -44,14 +48,14 @@ module Pocky
|
|
44
48
|
@nodes[provider_package] ||= graph.add_nodes(provider_package)
|
45
49
|
|
46
50
|
graph.add_edges(
|
47
|
-
@nodes[provider_package],
|
48
51
|
@nodes[package],
|
52
|
+
@nodes[provider_package],
|
49
53
|
penwidth: edge_width(dependencies.length)
|
50
54
|
)
|
51
55
|
end
|
52
56
|
end
|
53
57
|
|
54
|
-
graph.output(png: @
|
58
|
+
graph.output(png: @filename)
|
55
59
|
end
|
56
60
|
|
57
61
|
def edge_width(count)
|
@@ -61,33 +65,39 @@ module Pocky
|
|
61
65
|
].min
|
62
66
|
end
|
63
67
|
|
64
|
-
def
|
65
|
-
|
66
|
-
|
67
|
-
load_deprecated_references_for_package(elem)
|
68
|
-
end
|
68
|
+
def package_references
|
69
|
+
@package_references ||= @root_paths.flat_map do |path|
|
70
|
+
Dir["#{path}/**/#{REFERENCE_FILE_NAME}"]
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
72
|
-
def
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
74
|
+
def load_package_references
|
75
|
+
if package_references.empty?
|
76
|
+
raise InvalidRootPathError, "Cannot find any #{REFERENCE_FILE_NAME} in provided root_path"
|
77
|
+
end
|
78
|
+
|
79
|
+
package_references.each do |filename|
|
80
|
+
package = parse_package_name(filename)
|
81
|
+
@deprecated_references[package] ||= YAML.load_file(filename) || {}
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
83
|
-
def
|
84
|
-
File.
|
85
|
+
def parse_package_name(filename)
|
86
|
+
File.basename(File.dirname(filename))
|
85
87
|
end
|
86
88
|
|
87
89
|
def package_name_for_dependency(name)
|
88
90
|
return @default_package if name == '.'
|
89
91
|
|
90
|
-
|
92
|
+
reference_filename = package_references.find do |ref|
|
93
|
+
ref.match(/#{name}\/#{REFERENCE_FILE_NAME}$/)
|
94
|
+
end
|
95
|
+
|
96
|
+
if reference_filename
|
97
|
+
parse_package_name(reference_filename)
|
98
|
+
else
|
99
|
+
name
|
100
|
+
end
|
91
101
|
end
|
92
102
|
end
|
93
103
|
end
|
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'pocky'
|
2
|
+
|
3
|
+
namespace :pocky do
|
4
|
+
desc 'Generate dependency graph for packwerk packages'
|
5
|
+
task :generate, [:root_path, :default_package, :filename, :dpi] do |_task, args|
|
6
|
+
Pocky::Packwerk.generate(args.merge(
|
7
|
+
root_path: arg[:root_path].split(/\s+/)
|
8
|
+
))
|
9
|
+
end
|
10
|
+
end
|
data/lib/pocky/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pocky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Quan Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-graphviz
|
@@ -40,12 +40,12 @@ files:
|
|
40
40
|
- Rakefile
|
41
41
|
- bin/console
|
42
42
|
- bin/setup
|
43
|
-
- lib/Rakefile
|
44
43
|
- lib/pocky.rb
|
44
|
+
- lib/pocky/Rakefile
|
45
45
|
- lib/pocky/packwerk.rb
|
46
|
+
- lib/pocky/railtie.rb
|
47
|
+
- lib/pocky/tasks/generate.rake
|
46
48
|
- lib/pocky/version.rb
|
47
|
-
- lib/railtie.rb
|
48
|
-
- lib/tasks/generate.rake
|
49
49
|
- pocky.gemspec
|
50
50
|
homepage: https://github.com/mquan/pocky
|
51
51
|
licenses:
|
data/lib/tasks/generate.rake
DELETED