packwerk 1.1.3 → 1.2.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/Gemfile.lock +6 -5
- data/USAGE.md +17 -16
- data/lib/packwerk.rb +72 -36
- data/lib/packwerk/application_validator.rb +0 -5
- data/lib/packwerk/association_inspector.rb +0 -3
- data/lib/packwerk/checker.rb +2 -8
- data/lib/packwerk/cli.rb +22 -77
- data/lib/packwerk/configuration.rb +5 -0
- data/lib/packwerk/const_node_inspector.rb +0 -2
- data/lib/packwerk/constant_discovery.rb +2 -0
- data/lib/packwerk/constant_name_inspector.rb +0 -1
- data/lib/packwerk/dependency_checker.rb +2 -15
- data/lib/packwerk/deprecated_references.rb +3 -9
- data/lib/packwerk/file_processor.rb +0 -4
- data/lib/packwerk/formatters/offenses_formatter.rb +3 -8
- data/lib/packwerk/formatters/progress_formatter.rb +5 -4
- data/lib/packwerk/generators/configuration_file.rb +0 -1
- data/lib/packwerk/inflector.rb +0 -2
- data/lib/packwerk/node.rb +1 -0
- data/lib/packwerk/node_processor.rb +14 -32
- data/lib/packwerk/node_processor_factory.rb +0 -5
- data/lib/packwerk/node_visitor.rb +1 -4
- data/lib/packwerk/offense.rb +0 -4
- data/lib/packwerk/offense_collection.rb +84 -0
- data/lib/packwerk/offenses_formatter.rb +15 -0
- data/lib/packwerk/package.rb +8 -0
- data/lib/packwerk/package_set.rb +0 -2
- data/lib/packwerk/parse_run.rb +104 -0
- data/lib/packwerk/parsed_constant_definitions.rb +0 -2
- data/lib/packwerk/parsers.rb +0 -2
- data/lib/packwerk/parsers/erb.rb +0 -2
- data/lib/packwerk/parsers/factory.rb +0 -2
- data/lib/packwerk/privacy_checker.rb +2 -15
- data/lib/packwerk/reference_extractor.rb +0 -8
- data/lib/packwerk/reference_offense.rb +49 -0
- data/lib/packwerk/result.rb +9 -0
- data/lib/packwerk/run_context.rb +4 -21
- data/lib/packwerk/sanity_checker.rb +0 -2
- data/lib/packwerk/version.rb +1 -1
- data/lib/packwerk/violation_type.rb +0 -2
- data/packwerk.gemspec +1 -0
- data/service.yml +1 -4
- data/sorbet/rbi/gems/parallel@1.20.1.rbi +111 -2
- data/sorbet/tapioca/require.rb +1 -0
- metadata +22 -12
- data/lib/packwerk/cache_deprecated_references.rb +0 -55
- data/lib/packwerk/checking_deprecated_references.rb +0 -43
- data/lib/packwerk/commands/detect_stale_violations_command.rb +0 -60
- data/lib/packwerk/commands/offense_progress_marker.rb +0 -24
- data/lib/packwerk/commands/result.rb +0 -13
- data/lib/packwerk/commands/update_deprecations_command.rb +0 -81
- data/lib/packwerk/detect_stale_deprecated_references.rb +0 -14
- data/lib/packwerk/reference_lister.rb +0 -23
- data/lib/packwerk/updating_deprecated_references.rb +0 -14
data/sorbet/tapioca/require.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packwerk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: parallel
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: sorbet-runtime
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,21 +201,14 @@ files:
|
|
187
201
|
- lib/packwerk/application_load_paths.rb
|
188
202
|
- lib/packwerk/application_validator.rb
|
189
203
|
- lib/packwerk/association_inspector.rb
|
190
|
-
- lib/packwerk/cache_deprecated_references.rb
|
191
204
|
- lib/packwerk/checker.rb
|
192
|
-
- lib/packwerk/checking_deprecated_references.rb
|
193
205
|
- lib/packwerk/cli.rb
|
194
|
-
- lib/packwerk/commands/detect_stale_violations_command.rb
|
195
|
-
- lib/packwerk/commands/offense_progress_marker.rb
|
196
|
-
- lib/packwerk/commands/result.rb
|
197
|
-
- lib/packwerk/commands/update_deprecations_command.rb
|
198
206
|
- lib/packwerk/configuration.rb
|
199
207
|
- lib/packwerk/const_node_inspector.rb
|
200
208
|
- lib/packwerk/constant_discovery.rb
|
201
209
|
- lib/packwerk/constant_name_inspector.rb
|
202
210
|
- lib/packwerk/dependency_checker.rb
|
203
211
|
- lib/packwerk/deprecated_references.rb
|
204
|
-
- lib/packwerk/detect_stale_deprecated_references.rb
|
205
212
|
- lib/packwerk/file_processor.rb
|
206
213
|
- lib/packwerk/files_for_processing.rb
|
207
214
|
- lib/packwerk/formatters/offenses_formatter.rb
|
@@ -224,11 +231,14 @@ files:
|
|
224
231
|
- lib/packwerk/node_processor_factory.rb
|
225
232
|
- lib/packwerk/node_visitor.rb
|
226
233
|
- lib/packwerk/offense.rb
|
234
|
+
- lib/packwerk/offense_collection.rb
|
235
|
+
- lib/packwerk/offenses_formatter.rb
|
227
236
|
- lib/packwerk/output_style.rb
|
228
237
|
- lib/packwerk/output_styles/coloured.rb
|
229
238
|
- lib/packwerk/output_styles/plain.rb
|
230
239
|
- lib/packwerk/package.rb
|
231
240
|
- lib/packwerk/package_set.rb
|
241
|
+
- lib/packwerk/parse_run.rb
|
232
242
|
- lib/packwerk/parsed_constant_definitions.rb
|
233
243
|
- lib/packwerk/parsers.rb
|
234
244
|
- lib/packwerk/parsers/erb.rb
|
@@ -237,11 +247,11 @@ files:
|
|
237
247
|
- lib/packwerk/privacy_checker.rb
|
238
248
|
- lib/packwerk/reference.rb
|
239
249
|
- lib/packwerk/reference_extractor.rb
|
240
|
-
- lib/packwerk/
|
250
|
+
- lib/packwerk/reference_offense.rb
|
251
|
+
- lib/packwerk/result.rb
|
241
252
|
- lib/packwerk/run_context.rb
|
242
253
|
- lib/packwerk/sanity_checker.rb
|
243
254
|
- lib/packwerk/spring_command.rb
|
244
|
-
- lib/packwerk/updating_deprecated_references.rb
|
245
255
|
- lib/packwerk/version.rb
|
246
256
|
- lib/packwerk/violation_type.rb
|
247
257
|
- library.yml
|
@@ -343,7 +353,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
343
353
|
- !ruby/object:Gem::Version
|
344
354
|
version: '0'
|
345
355
|
requirements: []
|
346
|
-
rubygems_version: 3.
|
356
|
+
rubygems_version: 3.2.17
|
347
357
|
signing_key:
|
348
358
|
specification_version: 4
|
349
359
|
summary: Packages for applications based on the zeitwerk autoloader
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "sorbet-runtime"
|
5
|
-
|
6
|
-
require "packwerk/deprecated_references"
|
7
|
-
require "packwerk/reference"
|
8
|
-
require "packwerk/reference_lister"
|
9
|
-
require "packwerk/violation_type"
|
10
|
-
|
11
|
-
module Packwerk
|
12
|
-
class CacheDeprecatedReferences
|
13
|
-
extend T::Sig
|
14
|
-
extend T::Helpers
|
15
|
-
include ReferenceLister
|
16
|
-
abstract!
|
17
|
-
|
18
|
-
sig do
|
19
|
-
params(
|
20
|
-
root_path: String,
|
21
|
-
deprecated_references: T::Hash[Packwerk::Package, Packwerk::DeprecatedReferences]
|
22
|
-
).void
|
23
|
-
end
|
24
|
-
def initialize(root_path, deprecated_references = {})
|
25
|
-
@root_path = root_path
|
26
|
-
@deprecated_references = T.let(deprecated_references, T::Hash[Packwerk::Package, Packwerk::DeprecatedReferences])
|
27
|
-
end
|
28
|
-
|
29
|
-
sig do
|
30
|
-
params(reference: Packwerk::Reference, violation_type: ViolationType)
|
31
|
-
.returns(T::Boolean)
|
32
|
-
.override
|
33
|
-
end
|
34
|
-
def listed?(reference, violation_type:)
|
35
|
-
deprecated_references = deprecated_references_for(reference.source_package)
|
36
|
-
deprecated_references.add_entries(reference, violation_type.serialize)
|
37
|
-
true
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
sig { params(package: Packwerk::Package).returns(Packwerk::DeprecatedReferences) }
|
43
|
-
def deprecated_references_for(package)
|
44
|
-
@deprecated_references[package] ||= Packwerk::DeprecatedReferences.new(
|
45
|
-
package,
|
46
|
-
deprecated_references_file_for(package),
|
47
|
-
)
|
48
|
-
end
|
49
|
-
|
50
|
-
sig { params(package: Packwerk::Package).returns(String) }
|
51
|
-
def deprecated_references_file_for(package)
|
52
|
-
File.join(@root_path, package.name, "deprecated_references.yml")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "sorbet-runtime"
|
5
|
-
|
6
|
-
require "packwerk/reference_lister"
|
7
|
-
|
8
|
-
module Packwerk
|
9
|
-
class CheckingDeprecatedReferences
|
10
|
-
extend T::Sig
|
11
|
-
include ReferenceLister
|
12
|
-
|
13
|
-
sig { params(root_path: String).void }
|
14
|
-
def initialize(root_path)
|
15
|
-
@root_path = root_path
|
16
|
-
@deprecated_references = T.let({}, T::Hash[Packwerk::Package, Packwerk::DeprecatedReferences])
|
17
|
-
end
|
18
|
-
|
19
|
-
sig do
|
20
|
-
params(reference: Packwerk::Reference, violation_type: ViolationType)
|
21
|
-
.returns(T::Boolean)
|
22
|
-
.override
|
23
|
-
end
|
24
|
-
def listed?(reference, violation_type:)
|
25
|
-
deprecated_references_for(reference.source_package).listed?(reference, violation_type: violation_type)
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
sig { params(source_package: Packwerk::Package).returns(Packwerk::DeprecatedReferences) }
|
31
|
-
def deprecated_references_for(source_package)
|
32
|
-
@deprecated_references[source_package] ||= Packwerk::DeprecatedReferences.new(
|
33
|
-
source_package,
|
34
|
-
deprecated_references_file_for(source_package),
|
35
|
-
)
|
36
|
-
end
|
37
|
-
|
38
|
-
sig { params(package: Packwerk::Package).returns(String) }
|
39
|
-
def deprecated_references_file_for(package)
|
40
|
-
File.join(@root_path, package.name, "deprecated_references.yml")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
# typed: true
|
2
|
-
# frozen_string_literal: true
|
3
|
-
require "sorbet-runtime"
|
4
|
-
require "benchmark"
|
5
|
-
require "packwerk/run_context"
|
6
|
-
require "packwerk/detect_stale_deprecated_references"
|
7
|
-
require "packwerk/commands/offense_progress_marker"
|
8
|
-
require "packwerk/commands/result"
|
9
|
-
|
10
|
-
module Packwerk
|
11
|
-
module Commands
|
12
|
-
class DetectStaleViolationsCommand
|
13
|
-
extend T::Sig
|
14
|
-
include OffenseProgressMarker
|
15
|
-
def initialize(files:, configuration:, run_context: nil, progress_formatter: nil, reference_lister: nil)
|
16
|
-
@configuration = configuration
|
17
|
-
@run_context = run_context
|
18
|
-
@reference_lister = reference_lister
|
19
|
-
@progress_formatter = progress_formatter
|
20
|
-
@files = files
|
21
|
-
end
|
22
|
-
|
23
|
-
sig { returns(Result) }
|
24
|
-
def run
|
25
|
-
@progress_formatter.started(@files)
|
26
|
-
|
27
|
-
execution_time = Benchmark.realtime do
|
28
|
-
@files.flat_map do |path|
|
29
|
-
run_context.process_file(file: path).tap do |offenses|
|
30
|
-
mark_progress(offenses: offenses, progress_formatter: @progress_formatter)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
@progress_formatter.finished(execution_time)
|
36
|
-
calculate_result
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def run_context
|
42
|
-
@run_context ||= Packwerk::RunContext.from_configuration(@configuration, reference_lister: reference_lister)
|
43
|
-
end
|
44
|
-
|
45
|
-
def reference_lister
|
46
|
-
@reference_lister ||= ::Packwerk::DetectStaleDeprecatedReferences.new(@configuration.root_path)
|
47
|
-
end
|
48
|
-
|
49
|
-
sig { returns(Result) }
|
50
|
-
def calculate_result
|
51
|
-
result_status = !reference_lister.stale_violations?
|
52
|
-
message = "There were stale violations found, please run `packwerk update-deprecations`"
|
53
|
-
if result_status
|
54
|
-
message = "No stale violations detected"
|
55
|
-
end
|
56
|
-
Result.new(message: message, status: result_status)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# typed: strict
|
3
|
-
require "sorbet-runtime"
|
4
|
-
require "packwerk/formatters/progress_formatter"
|
5
|
-
|
6
|
-
module Packwerk
|
7
|
-
module OffenseProgressMarker
|
8
|
-
extend T::Sig
|
9
|
-
|
10
|
-
sig do
|
11
|
-
params(
|
12
|
-
offenses: T::Array[T.nilable(::Packwerk::Offense)],
|
13
|
-
progress_formatter: ::Packwerk::Formatters::ProgressFormatter
|
14
|
-
).void
|
15
|
-
end
|
16
|
-
def mark_progress(offenses:, progress_formatter:)
|
17
|
-
if offenses.empty?
|
18
|
-
progress_formatter.mark_as_inspected
|
19
|
-
else
|
20
|
-
progress_formatter.mark_as_failed
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "sorbet-runtime"
|
5
|
-
require "benchmark"
|
6
|
-
|
7
|
-
require "packwerk/commands/offense_progress_marker"
|
8
|
-
require "packwerk/commands/result"
|
9
|
-
require "packwerk/run_context"
|
10
|
-
require "packwerk/updating_deprecated_references"
|
11
|
-
|
12
|
-
module Packwerk
|
13
|
-
module Commands
|
14
|
-
class UpdateDeprecationsCommand
|
15
|
-
extend T::Sig
|
16
|
-
include OffenseProgressMarker
|
17
|
-
|
18
|
-
sig do
|
19
|
-
params(
|
20
|
-
files: T::Enumerable[String],
|
21
|
-
configuration: Configuration,
|
22
|
-
offenses_formatter: Formatters::OffensesFormatter,
|
23
|
-
progress_formatter: Formatters::ProgressFormatter
|
24
|
-
).void
|
25
|
-
end
|
26
|
-
def initialize(files:, configuration:, offenses_formatter:, progress_formatter:)
|
27
|
-
@files = files
|
28
|
-
@configuration = configuration
|
29
|
-
@progress_formatter = progress_formatter
|
30
|
-
@offenses_formatter = offenses_formatter
|
31
|
-
@updating_deprecated_references = T.let(nil, T.nilable(UpdatingDeprecatedReferences))
|
32
|
-
@run_context = T.let(nil, T.nilable(RunContext))
|
33
|
-
end
|
34
|
-
|
35
|
-
sig { returns(Result) }
|
36
|
-
def run
|
37
|
-
@progress_formatter.started(@files)
|
38
|
-
|
39
|
-
all_offenses = T.let([], T.untyped)
|
40
|
-
execution_time = Benchmark.realtime do
|
41
|
-
all_offenses = @files.flat_map do |path|
|
42
|
-
run_context.process_file(file: path).tap do |offenses|
|
43
|
-
mark_progress(offenses: offenses, progress_formatter: @progress_formatter)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
updating_deprecated_references.dump_deprecated_references_files
|
48
|
-
end
|
49
|
-
|
50
|
-
@progress_formatter.finished(execution_time)
|
51
|
-
calculate_result(all_offenses)
|
52
|
-
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
sig { returns(RunContext) }
|
57
|
-
def run_context
|
58
|
-
@run_context ||= RunContext.from_configuration(
|
59
|
-
@configuration,
|
60
|
-
reference_lister: updating_deprecated_references
|
61
|
-
)
|
62
|
-
end
|
63
|
-
|
64
|
-
sig { returns(UpdatingDeprecatedReferences) }
|
65
|
-
def updating_deprecated_references
|
66
|
-
@updating_deprecated_references ||= UpdatingDeprecatedReferences.new(@configuration.root_path)
|
67
|
-
end
|
68
|
-
|
69
|
-
sig { params(all_offenses: T::Array[T.nilable(::Packwerk::Offense)]).returns(Result) }
|
70
|
-
def calculate_result(all_offenses)
|
71
|
-
result_status = all_offenses.empty?
|
72
|
-
message = <<~EOS
|
73
|
-
#{@offenses_formatter.show_offenses(all_offenses)}
|
74
|
-
✅ `deprecated_references.yml` has been updated.
|
75
|
-
EOS
|
76
|
-
|
77
|
-
Result.new(message: message, status: result_status)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "packwerk/cache_deprecated_references"
|
5
|
-
|
6
|
-
module Packwerk
|
7
|
-
class DetectStaleDeprecatedReferences < CacheDeprecatedReferences
|
8
|
-
extend T::Sig
|
9
|
-
sig { returns(T::Boolean) }
|
10
|
-
def stale_violations?
|
11
|
-
@deprecated_references.values.any?(&:stale_violations?)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "sorbet-runtime"
|
5
|
-
|
6
|
-
require "packwerk/reference"
|
7
|
-
require "packwerk/violation_type"
|
8
|
-
|
9
|
-
module Packwerk
|
10
|
-
module ReferenceLister
|
11
|
-
extend T::Sig
|
12
|
-
extend T::Helpers
|
13
|
-
|
14
|
-
interface!
|
15
|
-
|
16
|
-
sig do
|
17
|
-
params(reference: Packwerk::Reference, violation_type: ViolationType)
|
18
|
-
.returns(T::Boolean)
|
19
|
-
.abstract
|
20
|
-
end
|
21
|
-
def listed?(reference, violation_type:); end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# typed: true
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "packwerk/cache_deprecated_references"
|
5
|
-
|
6
|
-
module Packwerk
|
7
|
-
class UpdatingDeprecatedReferences < CacheDeprecatedReferences
|
8
|
-
def dump_deprecated_references_files
|
9
|
-
@deprecated_references.each do |_, deprecated_references_file|
|
10
|
-
deprecated_references_file.dump
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|