packwerk-extensions 0.0.1 → 0.0.3
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: a1317a98d7569bfe1b33cc9a816e768ddbe0dd8a6ab33f3e746f15870a533704
|
4
|
+
data.tar.gz: ee91aae5d17e4ac4408440da88fe92982a8c114e11d9d7026087f13afaff5ebf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba36bca58d779e3c10960b4193bb14abd7d2d57c3866d0097094cffd508391bf72264466ca1095a7e16aac410b954c4ce53cc677b824b528866a9d8bf6822c85
|
7
|
+
data.tar.gz: 7d7b3a5f57229dc7578ea31e98b04ea73036fe39087235181185792fb2f2b7213e8659c9c3d3b70e6a2d38f0ca7ba6e2dd6fc7af3c15d22e75a9220ea072dc19
|
@@ -7,7 +7,9 @@ module Packwerk
|
|
7
7
|
extend T::Sig
|
8
8
|
include Packwerk::Validator
|
9
9
|
|
10
|
-
|
10
|
+
Result = Packwerk::Validator::Result
|
11
|
+
|
12
|
+
sig { override.params(package_set: PackageSet, configuration: Configuration).returns(Result) }
|
11
13
|
def call(package_set, configuration)
|
12
14
|
privacy_settings = package_manifests_settings_for(configuration, 'enforce_privacy')
|
13
15
|
|
@@ -16,7 +18,7 @@ module Packwerk
|
|
16
18
|
load_paths: configuration.load_paths
|
17
19
|
)
|
18
20
|
|
19
|
-
results = T.let([], T::Array[
|
21
|
+
results = T.let([], T::Array[Result])
|
20
22
|
|
21
23
|
privacy_settings.each do |config_file_path, setting|
|
22
24
|
results << check_enforce_privacy_setting(config_file_path, setting)
|
@@ -53,13 +55,13 @@ module Packwerk
|
|
53
55
|
private
|
54
56
|
|
55
57
|
sig do
|
56
|
-
params(config_file_path: String, setting: T.untyped).returns(
|
58
|
+
params(config_file_path: String, setting: T.untyped).returns(Result)
|
57
59
|
end
|
58
60
|
def check_public_path(config_file_path, setting)
|
59
61
|
if setting.is_a?(String) || setting.nil?
|
60
|
-
|
62
|
+
Result.new(ok: true)
|
61
63
|
else
|
62
|
-
|
64
|
+
Result.new(
|
63
65
|
ok: false,
|
64
66
|
error_value: "'public_path' option must be a string in #{config_file_path.inspect}: #{setting.inspect}"
|
65
67
|
)
|
@@ -67,13 +69,13 @@ module Packwerk
|
|
67
69
|
end
|
68
70
|
|
69
71
|
sig do
|
70
|
-
params(config_file_path: String, setting: T.untyped).returns(
|
72
|
+
params(config_file_path: String, setting: T.untyped).returns(Result)
|
71
73
|
end
|
72
74
|
def check_enforce_privacy_setting(config_file_path, setting)
|
73
|
-
if [TrueClass, FalseClass, Array, NilClass].include?(setting.class)
|
74
|
-
|
75
|
+
if [TrueClass, FalseClass, Array, NilClass].include?(setting.class) || setting == 'strict'
|
76
|
+
Result.new(ok: true)
|
75
77
|
else
|
76
|
-
|
78
|
+
Result.new(
|
77
79
|
ok: false,
|
78
80
|
error_value: "Invalid 'enforce_privacy' option in #{config_file_path.inspect}: #{setting.inspect}"
|
79
81
|
)
|
@@ -82,16 +84,16 @@ module Packwerk
|
|
82
84
|
|
83
85
|
sig do
|
84
86
|
params(configuration: Configuration, package_set: PackageSet, name: T.untyped, location: T.untyped,
|
85
|
-
config_file_path: T.untyped).returns(
|
87
|
+
config_file_path: T.untyped).returns(Result)
|
86
88
|
end
|
87
89
|
def check_private_constant_location(configuration, package_set, name, location, config_file_path)
|
88
90
|
declared_package = package_set.package_from_path(relative_path(configuration, config_file_path))
|
89
91
|
constant_package = package_set.package_from_path(location)
|
90
92
|
|
91
93
|
if constant_package == declared_package
|
92
|
-
|
94
|
+
Result.new(ok: true)
|
93
95
|
else
|
94
|
-
|
96
|
+
Result.new(
|
95
97
|
ok: false,
|
96
98
|
error_value: "'#{name}' is declared as private in the '#{declared_package}' package but appears to be " \
|
97
99
|
"defined\nin the '#{constant_package}' package. Packwerk resolved it to #{location}."
|
@@ -99,16 +101,16 @@ module Packwerk
|
|
99
101
|
end
|
100
102
|
end
|
101
103
|
|
102
|
-
sig { params(constants: T.untyped, config_file_path: String).returns(T::Array[
|
104
|
+
sig { params(constants: T.untyped, config_file_path: String).returns(T::Array[Result]) }
|
103
105
|
def assert_constants_can_be_loaded(constants, config_file_path)
|
104
106
|
constants.map do |constant|
|
105
107
|
if constant.start_with?('::')
|
106
|
-
constant.try(&:constantize) &&
|
108
|
+
constant.try(&:constantize) && Result.new(ok: true)
|
107
109
|
else
|
108
110
|
error_value = "'#{constant}', listed in the 'enforce_privacy' option " \
|
109
111
|
"in #{config_file_path}, is invalid.\nPrivate constants need to be " \
|
110
112
|
'prefixed with the top-level namespace operator `::`.'
|
111
|
-
|
113
|
+
Result.new(
|
112
114
|
ok: false,
|
113
115
|
error_value: error_value
|
114
116
|
)
|
@@ -116,11 +118,11 @@ module Packwerk
|
|
116
118
|
end
|
117
119
|
end
|
118
120
|
|
119
|
-
sig { params(name: T.untyped, config_file_path: T.untyped).returns(
|
121
|
+
sig { params(name: T.untyped, config_file_path: T.untyped).returns(Result) }
|
120
122
|
def private_constant_unresolvable(name, config_file_path)
|
121
123
|
explicit_filepath = "#{(name.start_with?('::') ? name[2..] : name).underscore}.rb"
|
122
124
|
|
123
|
-
|
125
|
+
Result.new(
|
124
126
|
ok: false,
|
125
127
|
error_value: "'#{name}', listed in #{config_file_path}, could not be resolved.\n" \
|
126
128
|
"This is probably because it is an autovivified namespace - a namespace module that doesn't have a\n" \
|
@@ -7,19 +7,21 @@ module Packwerk
|
|
7
7
|
extend T::Sig
|
8
8
|
include Packwerk::Validator
|
9
9
|
|
10
|
-
|
10
|
+
Result = Packwerk::Validator::Result
|
11
|
+
|
12
|
+
sig { override.params(package_set: PackageSet, configuration: Configuration).returns(Result) }
|
11
13
|
def call(package_set, configuration)
|
12
14
|
visible_settings = package_manifests_settings_for(configuration, 'visible_to')
|
13
|
-
results = T.let([], T::Array[
|
15
|
+
results = T.let([], T::Array[Result])
|
14
16
|
|
15
17
|
all_package_names = package_set.map(&:name).to_set
|
16
18
|
|
17
19
|
package_manifests_settings_for(configuration, 'enforce_visibility').each do |config, setting|
|
18
20
|
next if setting.nil?
|
19
21
|
|
20
|
-
next if [TrueClass, FalseClass
|
22
|
+
next if [TrueClass, FalseClass].include?(setting.class) || setting == 'strict'
|
21
23
|
|
22
|
-
results <<
|
24
|
+
results << Result.new(
|
23
25
|
ok: false,
|
24
26
|
error_value: "\tInvalid 'enforce_visibility' option: #{setting.inspect} in #{config.inspect}"
|
25
27
|
)
|
@@ -32,13 +34,13 @@ module Packwerk
|
|
32
34
|
packages_not_found = setting.to_set - all_package_names
|
33
35
|
|
34
36
|
if packages_not_found.any?
|
35
|
-
results <<
|
37
|
+
results << Result.new(
|
36
38
|
ok: false,
|
37
39
|
error_value: "'visible_to' option must only contain valid packages in #{config_file_path.inspect}. Invalid packages: #{packages_not_found.to_a.inspect}"
|
38
40
|
)
|
39
41
|
end
|
40
42
|
else
|
41
|
-
results <<
|
43
|
+
results << Result.new(
|
42
44
|
ok: false,
|
43
45
|
error_value: "'visible_to' option must be an array in #{config_file_path.inspect}."
|
44
46
|
)
|
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.3
|
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-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: packwerk
|