packwerk-extensions 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24439a703540da854784770755e1343825565c3803e5f445d2e201a2641b830c
4
- data.tar.gz: 2abc2d11f203b5c4f779cffcd9b918950f196e8077f38ffd6607c48984e8142f
3
+ metadata.gz: ec06b679c031e028a1dca4bb93e0cac394f13a3af2e86a19892efcf5e26ce6fe
4
+ data.tar.gz: 98835c87573ac3b47f13a50c9de8e9af6370c7f88debf12a24578e0040d87324
5
5
  SHA512:
6
- metadata.gz: 1174851513f542ffb1cffc27adab3f7cb7a8b0daa018476d57ce06547521727ee88c0c722b504d1ff81e2fe154b5a15073d99a7d05ce99f2057c98788e9484f5
7
- data.tar.gz: db04d45d6cb81beb4b198fafee35246cb5aa53ef53d74ef4d399860339c0b8a95c8098fa32ef529e7ba5dc872d74715d2da030c45c57e1fbe237b1aae4d8643d
6
+ metadata.gz: 6e37b7e13b22e77dc428a3d3bd210a6dea8c5eddbac5baf9c0ce31ae207b6b5e9bcfdf0cb9c3a1c041524c20a4a3f0a0affb9d08e90f105d78b28746b67ae7d5
7
+ data.tar.gz: ff5c5b5d73118ac391a086c13edb8733f0b682e4c87e404e4aaa3a5fc7e7736b655a1ed15e18e059758e854fa895cedb67d81eb93889d7767ad16a778b300d82
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Currently, it ships the following checkers to help improve the boundaries between packages. These checkers are:
6
6
  - A `privacy` checker that ensures other packages are using your package's public API
7
7
  - A `visibility` checker that allows packages to be private except to an explicit group of other packages.
8
- - A `folder_visibility` checker that allows packages to their sibling packs and parent pack (to be used in an application that uses folder packs)
8
+ - A `folder_privacy` checker that allows packages to their sibling packs and parent pack (to be used in an application that uses folder packs)
9
9
  - A `layer` (formerly `architecture`) checker that allows packages to specify their "layer" and requires that each layer only communicate with layers below it.
10
10
 
11
11
  ## Installation
@@ -25,7 +25,7 @@ Alternatively, you can require individual checkers:
25
25
  require:
26
26
  - packwerk/privacy/checker
27
27
  - packwerk/visibility/checker
28
- - packwerk/folder_visibility/checker
28
+ - packwerk/folder_privacy/checker
29
29
  - packwerk/layer/checker
30
30
  ```
31
31
 
@@ -43,7 +43,7 @@ enforce_privacy: true
43
43
 
44
44
  Setting `enforce_privacy` to `true` will make all references to private constants in your package a violation.
45
45
 
46
- Setting `enforce_privacy` to `strict` will forbid all references to private constants in your package. **This includes violations that have been added to other packages' `package_todo.yml` files.**
46
+ Setting `enforce_privacy` to `strict` will forbid all references to private constants in your package. **This includes violations that have been added to other packages' `package_todo.yml` files.**
47
47
 
48
48
  Note: You will need to remove all existing privacy violations before setting `enforce_privacy` to `strict`.
49
49
 
@@ -171,16 +171,16 @@ visible_to:
171
171
  ```
172
172
 
173
173
  ## Folder-Visibility Checker
174
- The folder visibility checker can be used to allow a package to be private to their sibling packs and parent packs and will create todos if used by any other package.
174
+ The folder privacy checker can be used to allow a package to be private to their sibling packs and parent packs and will create todos if used by any other package.
175
175
 
176
- To enforce visibility for your package, set `enforce_folder_visibility` to `true` on your pack.
176
+ To enforce folder privacy for your package, set `enforce_folder_privacy` to `true` on your pack.
177
177
 
178
178
  ```yaml
179
179
  # components/merchandising/package.yml
180
- enforce_folder_visibility: true
180
+ enforce_folder_privacy: true
181
181
  ```
182
182
 
183
- Here is an example of paths and whether their use of `packs/b/packs/e` is OK or not, assuming that protects itself via `enforce_folder_visibility`
183
+ Here is an example of paths and whether their use of `packs/b/packs/e` is OK or not, assuming that protects itself via `enforce_folder_privacy`
184
184
 
185
185
  ```
186
186
  . OK (parent of parent)
@@ -226,7 +226,7 @@ The "Layer Checker" was formerly named "Architecture Checker". The associated ke
226
226
 
227
227
  # replace 'architecture_layers' with 'layers' in packwerk.yml
228
228
  sed -i '' 's/architecture_layers/layers/g' ./packwerk.yml
229
-
229
+
230
230
  # replace 'enforce_architecture' with 'enforce_layers' in package.yml files
231
231
  `rg -l 'enforce_architecture' -g 'package.yml' | xargs sed -i '' 's,enforce_architecture,enforce_layers,g'`
232
232
 
@@ -1,16 +1,16 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'packwerk/folder_visibility/package'
5
- require 'packwerk/folder_visibility/validator'
4
+ require 'packwerk/folder_privacy/package'
5
+ require 'packwerk/folder_privacy/validator'
6
6
 
7
7
  module Packwerk
8
- module FolderVisibility
8
+ module FolderPrivacy
9
9
  class Checker
10
10
  extend T::Sig
11
11
  include Packwerk::Checker
12
12
 
13
- VIOLATION_TYPE = T.let('folder_visibility', String)
13
+ VIOLATION_TYPE = T.let('folder_privacy', String)
14
14
 
15
15
  sig { override.returns(String) }
16
16
  def violation_type
@@ -26,7 +26,7 @@ module Packwerk
26
26
  referencing_package = reference.package
27
27
  referenced_package = reference.constant.package
28
28
 
29
- return false if enforcement_disabled?(Package.from(referenced_package).enforce_folder_visibility)
29
+ return false if enforcement_disabled?(Package.from(referenced_package).enforce_folder_privacy)
30
30
 
31
31
  # the root pack is parent folder of all packs, so we short-circuit this here
32
32
  referencing_package_is_root_pack = referencing_package.name == '.'
@@ -48,7 +48,7 @@ module Packwerk
48
48
  end
49
49
  def strict_mode_violation?(listed_offense)
50
50
  publishing_package = listed_offense.reference.constant.package
51
- publishing_package.config['enforce_folder_visibility'] == 'strict'
51
+ publishing_package.config['enforce_folder_privacy'] == 'strict'
52
52
  end
53
53
 
54
54
  sig do
@@ -60,7 +60,7 @@ module Packwerk
60
60
  source_desc = "'#{reference.package}'"
61
61
 
62
62
  message = <<~MESSAGE
63
- Folder Visibility violation: '#{reference.constant.name}' belongs to '#{reference.constant.package}', which is not visible to #{source_desc} as it is not a sibling pack or parent pack.
63
+ Folder Privacy violation: '#{reference.constant.name}' belongs to '#{reference.constant.package}', which is private to #{source_desc} as it is not a sibling pack or parent pack.
64
64
  Is there a different package to use instead, or should '#{reference.constant.package}' also be visible to #{source_desc}?
65
65
 
66
66
  #{standard_help_message(reference)}
@@ -2,11 +2,11 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Packwerk
5
- module FolderVisibility
5
+ module FolderPrivacy
6
6
  class Package < T::Struct
7
7
  extend T::Sig
8
8
 
9
- const :enforce_folder_visibility, T.nilable(T.any(T::Boolean, String))
9
+ const :enforce_folder_privacy, T.nilable(T.any(T::Boolean, String))
10
10
 
11
11
  class << self
12
12
  extend T::Sig
@@ -14,7 +14,7 @@ module Packwerk
14
14
  sig { params(package: ::Packwerk::Package).returns(Package) }
15
15
  def from(package)
16
16
  Package.new(
17
- enforce_folder_visibility: package.config['enforce_folder_visibility']
17
+ enforce_folder_privacy: package.config['enforce_folder_privacy']
18
18
  )
19
19
  end
20
20
  end
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Packwerk
5
- module FolderVisibility
5
+ module FolderPrivacy
6
6
  class Validator
7
7
  extend T::Sig
8
8
  include Packwerk::Validator
@@ -13,14 +13,14 @@ module Packwerk
13
13
  def call(package_set, configuration)
14
14
  results = T.let([], T::Array[Result])
15
15
 
16
- package_manifests_settings_for(configuration, 'enforce_folder_visibility').each do |config, setting|
16
+ package_manifests_settings_for(configuration, 'enforce_folder_privacy').each do |config, setting|
17
17
  next if setting.nil?
18
18
 
19
19
  next if [TrueClass, FalseClass].include?(setting.class) || setting == 'strict'
20
20
 
21
21
  results << Result.new(
22
22
  ok: false,
23
- error_value: "\tInvalid 'enforce_folder_visibility' option: #{setting.inspect} in #{config.inspect}"
23
+ error_value: "\tInvalid 'enforce_folder_privacy' option: #{setting.inspect} in #{config.inspect}"
24
24
  )
25
25
  end
26
26
 
@@ -29,7 +29,7 @@ module Packwerk
29
29
 
30
30
  sig { override.returns(T::Array[String]) }
31
31
  def permitted_keys
32
- %w[enforce_folder_visibility]
32
+ %w[enforce_folder_privacy]
33
33
  end
34
34
  end
35
35
  end
@@ -6,7 +6,7 @@ require 'packwerk'
6
6
 
7
7
  require 'packwerk/privacy/checker'
8
8
  require 'packwerk/visibility/checker'
9
- require 'packwerk/folder_visibility/checker'
9
+ require 'packwerk/folder_privacy/checker'
10
10
  require 'packwerk/layer/checker'
11
11
 
12
12
  module Packwerk
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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusto Engineers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-03 00:00:00.000000000 Z
11
+ date: 2024-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: packwerk
@@ -187,9 +187,9 @@ extra_rdoc_files: []
187
187
  files:
188
188
  - README.md
189
189
  - lib/packwerk-extensions.rb
190
- - lib/packwerk/folder_visibility/checker.rb
191
- - lib/packwerk/folder_visibility/package.rb
192
- - lib/packwerk/folder_visibility/validator.rb
190
+ - lib/packwerk/folder_privacy/checker.rb
191
+ - lib/packwerk/folder_privacy/package.rb
192
+ - lib/packwerk/folder_privacy/validator.rb
193
193
  - lib/packwerk/layer/checker.rb
194
194
  - lib/packwerk/layer/config.rb
195
195
  - lib/packwerk/layer/layers.rb
@@ -224,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
224
  - !ruby/object:Gem::Version
225
225
  version: '0'
226
226
  requirements: []
227
- rubygems_version: 3.5.9
227
+ rubygems_version: 3.5.11
228
228
  signing_key:
229
229
  specification_version: 4
230
230
  summary: A collection of extensions for packwerk packages.