packwerk-extensions 0.0.6 → 0.0.7
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 558107be67a748dfb9a175b9d90be2acc373913f36a66c5bccbb3401e80cd85f
|
4
|
+
data.tar.gz: fb98b8c64bb3043d267aab3d966d404934a5a530020dc18e3e599a13153fe121
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6beb350fd3089406f7a0ec0409b79f261136b89ffe0ede267215893ca7abb9f5613a7aaf44248f1c0b53560a0596a78739568f85bd2a081edf4b3d0f69fe0d0
|
7
|
+
data.tar.gz: 706bc3779b3af6ce3d6780ba9106a8bb4fc84cd81ddd93c7809b62f2663de1baf4c906f961abc6a4982c8815142478d839054b27c504639e1eb5dc88e0b267e3
|
@@ -41,8 +41,8 @@ module Packwerk
|
|
41
41
|
.returns(T::Boolean)
|
42
42
|
end
|
43
43
|
def invalid_reference?(reference)
|
44
|
-
constant_package = Package.from(reference.constant.package)
|
45
|
-
referencing_package = Package.from(reference.package)
|
44
|
+
constant_package = Package.from(reference.constant.package, layers)
|
45
|
+
referencing_package = Package.from(reference.package, layers)
|
46
46
|
!referencing_package.can_depend_on?(constant_package, layers: layers)
|
47
47
|
end
|
48
48
|
|
@@ -62,8 +62,8 @@ module Packwerk
|
|
62
62
|
.returns(String)
|
63
63
|
end
|
64
64
|
def message(reference)
|
65
|
-
constant_package = Package.from(reference.constant.package)
|
66
|
-
referencing_package = Package.from(reference.package)
|
65
|
+
constant_package = Package.from(reference.constant.package, layers)
|
66
|
+
referencing_package = Package.from(reference.package, layers)
|
67
67
|
|
68
68
|
message = <<~MESSAGE
|
69
69
|
Architecture layer violation: '#{reference.constant.name}' belongs to '#{reference.constant.package}', whose architecture layer type is "#{constant_package.layer}."
|
@@ -8,12 +8,13 @@ module Packwerk
|
|
8
8
|
|
9
9
|
sig { void }
|
10
10
|
def initialize
|
11
|
-
@names = T.let(@names, T.nilable(T::
|
11
|
+
@names = T.let(@names, T.nilable(T::Set[String]))
|
12
|
+
@names_list = T.let(@names_list, T.nilable(T::Array[String]))
|
12
13
|
end
|
13
14
|
|
14
15
|
sig { params(layer: String).returns(Integer) }
|
15
16
|
def index_of(layer)
|
16
|
-
index =
|
17
|
+
index = names_list.reverse.find_index(layer)
|
17
18
|
if index.nil?
|
18
19
|
raise "Layer #{layer} not find, please run `bin/packwerk validate`"
|
19
20
|
end
|
@@ -21,9 +22,16 @@ module Packwerk
|
|
21
22
|
index
|
22
23
|
end
|
23
24
|
|
24
|
-
sig { returns(T::
|
25
|
+
sig { returns(T::Set[String]) }
|
25
26
|
def names
|
26
|
-
@names ||=
|
27
|
+
@names ||= Set.new(names_list)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
sig { returns(T::Array[String]) }
|
33
|
+
def names_list
|
34
|
+
@names_list ||= YAML.load_file('packwerk.yml')['architecture_layers'] || []
|
27
35
|
end
|
28
36
|
end
|
29
37
|
end
|
@@ -30,15 +30,20 @@ module Packwerk
|
|
30
30
|
class << self
|
31
31
|
extend T::Sig
|
32
32
|
|
33
|
-
sig { params(package: ::Packwerk::Package).returns(Package) }
|
34
|
-
def from(package)
|
35
|
-
|
36
|
-
|
33
|
+
sig { params(package: ::Packwerk::Package, layers: Layers).returns(Package) }
|
34
|
+
def from(package, layers)
|
35
|
+
config = package.config
|
36
|
+
|
37
|
+
# This allows the layer to be inferred based on the package root
|
38
|
+
package_root = package.name.split('/').first
|
39
|
+
if package_root && layers.names.include?(package_root)
|
40
|
+
layer = package_root
|
41
|
+
else
|
42
|
+
layer = config['layer']
|
43
|
+
end
|
37
44
|
|
38
|
-
sig { params(config: T::Hash[T.untyped, T.untyped]).returns(Package) }
|
39
|
-
def from_config(config)
|
40
45
|
Package.new(
|
41
|
-
layer:
|
46
|
+
layer: layer,
|
42
47
|
enforcement_setting: config['enforce_architecture'],
|
43
48
|
config: config
|
44
49
|
)
|
@@ -13,8 +13,9 @@ module Packwerk
|
|
13
13
|
def call(package_set, configuration)
|
14
14
|
results = T.let([], T::Array[Result])
|
15
15
|
|
16
|
-
|
17
|
-
config =
|
16
|
+
package_set.each do |package|
|
17
|
+
config = package.config
|
18
|
+
f = Pathname.new(package.name).join('package.yml').to_s
|
18
19
|
next if !config
|
19
20
|
|
20
21
|
result = check_enforce_architecture_setting(f, config['enforce_architecture'])
|
@@ -25,7 +26,7 @@ module Packwerk
|
|
25
26
|
results << result
|
26
27
|
next if !result.ok?
|
27
28
|
|
28
|
-
package = Package.
|
29
|
+
package = Package.from(package, layers)
|
29
30
|
results += check_dependencies_setting(package_set, package, f)
|
30
31
|
end
|
31
32
|
|
@@ -51,7 +52,7 @@ module Packwerk
|
|
51
52
|
other_packwerk_package = package_set.fetch(dependency)
|
52
53
|
next if other_packwerk_package.nil?
|
53
54
|
|
54
|
-
other_package = Package.from(other_packwerk_package)
|
55
|
+
other_package = Package.from(other_packwerk_package, layers)
|
55
56
|
next if package.can_depend_on?(other_package, layers: layers)
|
56
57
|
|
57
58
|
results << Result.new(
|
@@ -81,7 +82,7 @@ module Packwerk
|
|
81
82
|
else
|
82
83
|
Result.new(
|
83
84
|
ok: false,
|
84
|
-
error_value: "Invalid 'layer' option in #{config_file_path.inspect}: #{layer.inspect}. Must be one of #{layers.names.inspect}"
|
85
|
+
error_value: "Invalid 'layer' option in #{config_file_path.inspect}: #{layer.inspect}. Must be one of #{layers.names.to_a.inspect}"
|
85
86
|
)
|
86
87
|
end
|
87
88
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packwerk-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gusto Engineers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: packwerk
|