packwerk 1.3.0 → 2.0.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 +4 -4
- data/CHANGELOG.md +1 -0
- data/Gemfile.lock +11 -8
- data/README.md +2 -3
- data/TROUBLESHOOT.md +3 -3
- data/UPGRADING.md +54 -0
- data/USAGE.md +27 -53
- data/exe/packwerk +7 -1
- data/lib/packwerk/application_load_paths.rb +1 -0
- data/lib/packwerk/application_validator.rb +3 -54
- data/lib/packwerk/association_inspector.rb +1 -1
- data/lib/packwerk/cli.rb +37 -20
- data/lib/packwerk/configuration.rb +34 -4
- data/lib/packwerk/const_node_inspector.rb +3 -2
- data/lib/packwerk/constant_discovery.rb +1 -1
- data/lib/packwerk/constant_name_inspector.rb +1 -1
- data/lib/packwerk/deprecated_references.rb +19 -7
- data/lib/packwerk/file_processor.rb +39 -14
- data/lib/packwerk/files_for_processing.rb +15 -4
- data/lib/packwerk/formatters/offenses_formatter.rb +1 -1
- data/lib/packwerk/formatters/progress_formatter.rb +1 -1
- data/lib/packwerk/generators/configuration_file.rb +4 -19
- data/lib/packwerk/generators/templates/package.yml +1 -1
- data/lib/packwerk/generators/templates/packwerk.yml.erb +0 -6
- data/lib/packwerk/graph.rb +2 -0
- data/lib/packwerk/node.rb +1 -0
- data/lib/packwerk/node_processor.rb +10 -22
- data/lib/packwerk/node_processor_factory.rb +0 -2
- data/lib/packwerk/node_visitor.rb +4 -2
- data/lib/packwerk/package.rb +25 -4
- data/lib/packwerk/package_set.rb +43 -8
- data/lib/packwerk/parsed_constant_definitions.rb +1 -0
- data/lib/packwerk/reference.rb +2 -1
- data/lib/packwerk/reference_checking/checkers/checker.rb +21 -0
- data/lib/packwerk/reference_checking/checkers/dependency_checker.rb +31 -0
- data/lib/packwerk/reference_checking/checkers/privacy_checker.rb +58 -0
- data/lib/packwerk/reference_checking/reference_checker.rb +33 -0
- data/lib/packwerk/reference_extractor.rb +2 -2
- data/lib/packwerk/reference_offense.rb +1 -0
- data/lib/packwerk/run_context.rb +10 -7
- data/lib/packwerk/sanity_checker.rb +1 -1
- data/lib/packwerk/spring_command.rb +28 -0
- data/lib/packwerk/version.rb +1 -1
- data/lib/packwerk/violation_type.rb +1 -1
- data/lib/packwerk.rb +17 -12
- data/packwerk.gemspec +3 -1
- data/service.yml +0 -2
- data/sorbet/rbi/gems/psych@3.3.2.rbi +24 -0
- metadata +25 -11
- data/lib/packwerk/checker.rb +0 -17
- data/lib/packwerk/dependency_checker.rb +0 -26
- data/lib/packwerk/generators/inflections_file.rb +0 -43
- data/lib/packwerk/generators/templates/inflections.yml +0 -6
- data/lib/packwerk/inflections/custom.rb +0 -33
- data/lib/packwerk/inflections/default.rb +0 -73
- data/lib/packwerk/inflector.rb +0 -48
- data/lib/packwerk/privacy_checker.rb +0 -53
data/lib/packwerk/inflector.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
# typed: true
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "active_support/inflector"
|
5
|
-
|
6
|
-
module Packwerk
|
7
|
-
class Inflector
|
8
|
-
class << self
|
9
|
-
extend T::Sig
|
10
|
-
|
11
|
-
def default
|
12
|
-
@default ||= new(custom_inflector: Inflections::Custom.new)
|
13
|
-
end
|
14
|
-
|
15
|
-
sig { params(inflections_file: String).returns(::Packwerk::Inflector) }
|
16
|
-
def from_file(inflections_file)
|
17
|
-
new(custom_inflector: Inflections::Custom.new(inflections_file))
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
extend T::Sig
|
22
|
-
include ::ActiveSupport::Inflector # For #camelize, #classify, #pluralize, #singularize
|
23
|
-
|
24
|
-
sig do
|
25
|
-
params(
|
26
|
-
custom_inflector: Inflections::Custom
|
27
|
-
).void
|
28
|
-
end
|
29
|
-
def initialize(custom_inflector:)
|
30
|
-
@inflections = ::ActiveSupport::Inflector::Inflections.new
|
31
|
-
|
32
|
-
Inflections::Default.apply_to(@inflections)
|
33
|
-
custom_inflector.apply_to(@inflections)
|
34
|
-
end
|
35
|
-
|
36
|
-
def pluralize(word, count = nil)
|
37
|
-
if count == 1
|
38
|
-
singularize(word)
|
39
|
-
else
|
40
|
-
super(word)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def inflections(_ = nil)
|
45
|
-
@inflections
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Packwerk
|
5
|
-
class PrivacyChecker
|
6
|
-
extend T::Sig
|
7
|
-
include Checker
|
8
|
-
|
9
|
-
sig { override.returns(Packwerk::ViolationType) }
|
10
|
-
def violation_type
|
11
|
-
ViolationType::Privacy
|
12
|
-
end
|
13
|
-
|
14
|
-
sig do
|
15
|
-
override
|
16
|
-
.params(reference: Packwerk::Reference)
|
17
|
-
.returns(T::Boolean)
|
18
|
-
end
|
19
|
-
def invalid_reference?(reference)
|
20
|
-
return false if reference.constant.public?
|
21
|
-
|
22
|
-
privacy_option = reference.constant.package.enforce_privacy
|
23
|
-
return false if enforcement_disabled?(privacy_option)
|
24
|
-
|
25
|
-
return false unless privacy_option == true ||
|
26
|
-
explicitly_private_constant?(reference.constant, explicitly_private_constants: privacy_option)
|
27
|
-
|
28
|
-
true
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
sig do
|
34
|
-
params(
|
35
|
-
constant: ConstantDiscovery::ConstantContext,
|
36
|
-
explicitly_private_constants: T::Array[String]
|
37
|
-
).returns(T::Boolean)
|
38
|
-
end
|
39
|
-
def explicitly_private_constant?(constant, explicitly_private_constants:)
|
40
|
-
explicitly_private_constants.include?(constant.name) ||
|
41
|
-
# nested constants
|
42
|
-
explicitly_private_constants.any? { |epc| constant.name.start_with?(epc + "::") }
|
43
|
-
end
|
44
|
-
|
45
|
-
sig do
|
46
|
-
params(privacy_option: T.nilable(T.any(T::Boolean, T::Array[String])))
|
47
|
-
.returns(T::Boolean)
|
48
|
-
end
|
49
|
-
def enforcement_disabled?(privacy_option)
|
50
|
-
[false, nil].include?(privacy_option)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|