packwerk-extensions 0.0.1 → 0.0.3
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:
|
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
|