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: 3f20892b9d7d67a2164c7c632ac760c66859cacd2fa7af97c71a220a1d317893
4
- data.tar.gz: a9a7f631ed8e6398a48e91fddc83fcff0e1d923aa16b75231e0a3296c5c4aa4a
3
+ metadata.gz: 558107be67a748dfb9a175b9d90be2acc373913f36a66c5bccbb3401e80cd85f
4
+ data.tar.gz: fb98b8c64bb3043d267aab3d966d404934a5a530020dc18e3e599a13153fe121
5
5
  SHA512:
6
- metadata.gz: f66866b77e2727898fa951a05f716f8b959444553082f9c8999144013ee74d90820ee802a994b11887c3132799b47cbcc74a60cc6434a6172617ebb916748216
7
- data.tar.gz: b6deec3d175813666076ce5797d29cc62df65ec233c552114cdf3492c92dd74791b53412201a8b3e56758fdb4bb9a6c7bed804225c99c192d92f9566a60a4a85
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::Array[String]))
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 = names.reverse.find_index(layer)
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::Array[String]) }
25
+ sig { returns(T::Set[String]) }
25
26
  def names
26
- @names ||= YAML.load_file('packwerk.yml')['architecture_layers'] || []
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
- from_config(package.config)
36
- end
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: config['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
- package_manifests(configuration).each do |f|
17
- config = YAML.load_file(File.join(f))
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.from_config(config)
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.6
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-21 00:00:00.000000000 Z
11
+ date: 2022-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: packwerk