packwerk-extensions 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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