parse_packwerk 0.21.0 → 0.23.0

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: 7665b37cbab9d74a91785449408830963feeef02bd1816827c54c39f3504228c
4
- data.tar.gz: e80b45a3f6c801aa5c17e7951030bbb8f976632a8c9e4f799cbde23e1ed34988
3
+ metadata.gz: 6f5c6b2eb83704f6e211d67ddba506c01993a54212352e0df03d0f7ad6713811
4
+ data.tar.gz: cf24db153fefdf3a68f81f66497e1a95232f1983cd7d5b72c52105ef99713a49
5
5
  SHA512:
6
- metadata.gz: 6e2ee542e063f014e7e278f089742f9318b4569208e88acd8b3eed9b7358f1000de57e4a812ec8d52c75e11ab8bf5af961ae58f2b4ccf6b09cf28f6a6dbae248
7
- data.tar.gz: 1bf86e70a1ad52ef21ddde492788ab72d90c479baca3dec887c774c45c14971a4b12fe07e58b383fd229a16ab941a9f8a2c68ddebcdfde811c634c6ce193b502
6
+ metadata.gz: 29d5912e75225063d09ed673a91b2aaf9541463fcd605c40fc6f47ef469f6e84aed0d5f8e1491857b94d5588dc6f22feca5efc7302bf83f5c493bc5bc61b9d5f
7
+ data.tar.gz: 5c4162d677ca8b174e8733f641cd820a0581ec9a7ad19f41c3a8cd3c3cae27f0a8d059005312e16ed71d2251924315bac154a8604ae43d9b0a5928dceb9f7187
@@ -7,6 +7,7 @@ module ParsePackwerk
7
7
  PACKAGE_TODO_YML_NAME = T.let('package_todo.yml'.freeze, String)
8
8
  ENFORCE_DEPENDENCIES = T.let('enforce_dependencies'.freeze, String)
9
9
  ENFORCE_PRIVACY = T.let('enforce_privacy'.freeze, String)
10
+ ENFORCE_ARCHITECTURE = T.let('enforce_architecture'.freeze, String)
10
11
  DEPENDENCY_VIOLATION_TYPE = T.let('dependency'.freeze, String)
11
12
  PRIVACY_VIOLATION_TYPE = T.let('privacy'.freeze, String)
12
13
  PUBLIC_PATH = T.let('public_path'.freeze, String)
@@ -13,6 +13,11 @@ module ParsePackwerk
13
13
  def self.privacy_extension_installed?
14
14
  all_extensions_installed? || ParsePackwerk.yml.requires.include?('packwerk/privacy/checker')
15
15
  end
16
+
17
+ sig { returns(T::Boolean) }
18
+ def self.architecture_extension_installed?
19
+ all_extensions_installed? || ParsePackwerk.yml.requires.include?('packwerk/architecture/checker')
20
+ end
16
21
  end
17
22
 
18
23
  private_constant :Extensions
@@ -7,6 +7,7 @@ module ParsePackwerk
7
7
  const :name, String
8
8
  const :enforce_dependencies, T.nilable(T.any(T::Boolean, String))
9
9
  const :enforce_privacy, T.any(T::Boolean, String), default: false
10
+ const :enforce_architecture, T.any(T::Boolean, String), default: false
10
11
  const :public_path, String, default: DEFAULT_PUBLIC_PATH
11
12
  const :metadata, MetadataYmlType
12
13
  const :dependencies, T::Array[String]
@@ -15,17 +16,14 @@ module ParsePackwerk
15
16
 
16
17
  sig { params(pathname: Pathname).returns(Package) }
17
18
  def self.from(pathname)
18
- package_loaded_yml = YAML.load_file(pathname)
19
- if package_loaded_yml.nil? || package_loaded_yml == false
20
- message = "Failed to parse `#{pathname}`. Please fix any issues with this package.yml OR add its containing folder to packwerk.yml `exclude`"
21
- raise PackageParseError, message
22
- end
19
+ package_loaded_yml = YAML.load_file(pathname) || {}
23
20
  package_name = pathname.dirname.cleanpath.to_s
24
21
 
25
22
  new(
26
23
  name: package_name,
27
24
  enforce_dependencies: package_loaded_yml[ENFORCE_DEPENDENCIES],
28
25
  enforce_privacy: package_loaded_yml[ENFORCE_PRIVACY] || false,
26
+ enforce_architecture: package_loaded_yml[ENFORCE_ARCHITECTURE] || false,
29
27
  public_path: package_loaded_yml[PUBLIC_PATH] || DEFAULT_PUBLIC_PATH,
30
28
  metadata: package_loaded_yml[METADATA] || {},
31
29
  dependencies: package_loaded_yml[DEPENDENCIES] || [],
@@ -63,5 +61,10 @@ module ParsePackwerk
63
61
  def enforces_privacy?
64
62
  enforce_privacy
65
63
  end
64
+
65
+ sig { returns(T.any(T::Boolean, String)) }
66
+ def enforces_architecture?
67
+ enforce_architecture
68
+ end
66
69
  end
67
70
  end
@@ -72,6 +72,10 @@ module ParsePackwerk
72
72
  merged_config.merge!('enforce_privacy' => package.enforce_privacy)
73
73
  end
74
74
 
75
+ if Extensions.architecture_extension_installed?
76
+ merged_config.merge!('enforce_architecture' => package.enforce_architecture)
77
+ end
78
+
75
79
  unless package.public_path == DEFAULT_PUBLIC_PATH
76
80
  merged_config.merge!('public_path' => package.public_path)
77
81
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_packwerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusto Engineers
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-12 00:00:00.000000000 Z
11
+ date: 2024-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bigdecimal
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: sorbet-runtime
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -174,7 +188,7 @@ metadata:
174
188
  source_code_uri: https://github.com/rubyatscale/parse_packwerk
175
189
  changelog_uri: https://github.com/rubyatscale/parse_packwerk/releases
176
190
  allowed_push_host: https://rubygems.org
177
- post_install_message:
191
+ post_install_message:
178
192
  rdoc_options: []
179
193
  require_paths:
180
194
  - lib
@@ -189,8 +203,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
203
  - !ruby/object:Gem::Version
190
204
  version: '0'
191
205
  requirements: []
192
- rubygems_version: 3.1.6
193
- signing_key:
206
+ rubygems_version: 3.5.9
207
+ signing_key:
194
208
  specification_version: 4
195
209
  summary: A low-dependency gem for parsing and writing packwerk YML files
196
210
  test_files: []