use_packs 0.0.4 → 0.0.6
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/lib/use_packs/cli.rb +5 -5
- data/lib/use_packs/configuration.rb +4 -4
- data/lib/use_packs/private/interactive_cli/use_cases/get_info.rb +1 -2
- data/lib/use_packs/private/interactive_cli/use_cases/rename.rb +1 -1
- data/lib/use_packs/private/interactive_cli/use_cases/{update_deprecations.rb → update_todo.rb} +3 -3
- data/lib/use_packs/private/interactive_cli.rb +1 -1
- data/lib/use_packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb +13 -1
- data/lib/use_packs/private.rb +21 -21
- data/lib/use_packs/user_event_logger.rb +5 -5
- data/lib/use_packs.rb +11 -11
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b82690582fa896caf051420855c7dca09ca6f15501052b78d8bf28824157ee31
|
4
|
+
data.tar.gz: 88bb257e4f595628636c0c3b5eb13e74bc1c1295c8912144ceb45ac5e1de30fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3578e87c844f368342d6a8e1297e5755df972c1be88f506e24f296e7651ba5b44d0bbc43e37d7c8c1f3ed960020892b5d99539e5f9d787fc20c4a8a0bc3f4473
|
7
|
+
data.tar.gz: 12ffaf13df281d43a7dbedf1caa691258ac0040541ad6e30b3db23a3e92afc28852a2d1682f9615785bf930de5f30f74ac5533a1f23420af4ee02c9d4879a2cd
|
data/lib/use_packs/cli.rb
CHANGED
@@ -78,10 +78,10 @@ module UsePacks
|
|
78
78
|
)
|
79
79
|
end
|
80
80
|
|
81
|
-
desc '
|
81
|
+
desc 'lint_package_todo_yml_files', 'Ensures `package_todo.yml` files are up to date'
|
82
82
|
sig { void }
|
83
|
-
def
|
84
|
-
UsePacks.
|
83
|
+
def lint_package_todo_yml_files
|
84
|
+
UsePacks.lint_package_todo_yml_files!
|
85
85
|
end
|
86
86
|
|
87
87
|
desc 'lint_package_yml_files [ packs/my_pack packs/my_other_pack ]', 'Lint `package.yml` files'
|
@@ -102,10 +102,10 @@ module UsePacks
|
|
102
102
|
system("bin/packwerk check #{paths.join(' ')}")
|
103
103
|
end
|
104
104
|
|
105
|
-
desc 'update [ packs/my_pack ]', 'Run bin/packwerk update-
|
105
|
+
desc 'update [ packs/my_pack ]', 'Run bin/packwerk update-todo'
|
106
106
|
sig { params(paths: String).void }
|
107
107
|
def update(*paths)
|
108
|
-
system("bin/packwerk update-
|
108
|
+
system("bin/packwerk update-todo #{paths.join(' ')}")
|
109
109
|
end
|
110
110
|
|
111
111
|
desc 'regenerate_rubocop_todo [ packs/my_pack packs/my_other_pack ]', "Regenerate packs/*/#{RuboCop::Packs::PACK_LEVEL_RUBOCOP_TODO_YML} for one or more packs"
|
@@ -13,18 +13,18 @@ module UsePacks
|
|
13
13
|
sig { returns(UserEventLogger) }
|
14
14
|
attr_accessor :user_event_logger
|
15
15
|
|
16
|
-
|
16
|
+
OnPackageTodoLintFailure = T.type_alias do
|
17
17
|
T.proc.params(output: String).void
|
18
18
|
end
|
19
19
|
|
20
|
-
sig { returns(
|
21
|
-
attr_accessor :
|
20
|
+
sig { returns(OnPackageTodoLintFailure) }
|
21
|
+
attr_accessor :on_package_todo_lint_failure
|
22
22
|
|
23
23
|
sig { void }
|
24
24
|
def initialize
|
25
25
|
@enforce_dependencies = T.let(default_enforce_dependencies, T::Boolean)
|
26
26
|
@user_event_logger = T.let(DefaultUserEventLogger.new, UserEventLogger)
|
27
|
-
@
|
27
|
+
@on_package_todo_lint_failure = T.let(->(output) {}, OnPackageTodoLintFailure)
|
28
28
|
end
|
29
29
|
|
30
30
|
sig { returns(T::Boolean) }
|
@@ -30,8 +30,7 @@ module UsePacks
|
|
30
30
|
inbound_violations = {}
|
31
31
|
outbound_violations = {}
|
32
32
|
ParsePackwerk.all.each do |p|
|
33
|
-
|
34
|
-
violations_for_pack.each do |violation|
|
33
|
+
p.violations.each do |violation|
|
35
34
|
outbound_violations[p.name] ||= []
|
36
35
|
outbound_violations[p.name] << violation
|
37
36
|
inbound_violations[violation.to_package_name] ||= []
|
@@ -22,7 +22,7 @@ module UsePacks
|
|
22
22
|
Follow these steps:
|
23
23
|
1. Rename the `packs/your_pack` directory to the name of the new pack, `packs/new_pack_name
|
24
24
|
2. Replace references to `- packs/your_pack` in `package.yml` files with `- packs/new_pack_name`
|
25
|
-
3. Rerun `bin/packwerk update-
|
25
|
+
3. Rerun `bin/packwerk update-todo` to update violations
|
26
26
|
4. Run `bin/codeownership validate` to update ownership information
|
27
27
|
5. Please let us know if anything is missing.
|
28
28
|
WARNING
|
data/lib/use_packs/private/interactive_cli/use_cases/{update_deprecations.rb → update_todo.rb}
RENAMED
@@ -4,19 +4,19 @@ module UsePacks
|
|
4
4
|
module Private
|
5
5
|
module InteractiveCli
|
6
6
|
module UseCases
|
7
|
-
class
|
7
|
+
class UpdateTodo
|
8
8
|
extend T::Sig
|
9
9
|
extend T::Helpers
|
10
10
|
include Interface
|
11
11
|
|
12
12
|
sig { override.returns(String) }
|
13
13
|
def user_facing_name
|
14
|
-
'Run bin/packwerk update-
|
14
|
+
'Run bin/packwerk update-todo'
|
15
15
|
end
|
16
16
|
|
17
17
|
sig { override.params(prompt: TTY::Prompt).void }
|
18
18
|
def perform!(prompt)
|
19
|
-
system('bin/packwerk update-
|
19
|
+
system('bin/packwerk update-todo')
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -16,7 +16,7 @@ require 'use_packs/private/interactive_cli/use_cases/make_public'
|
|
16
16
|
require 'use_packs/private/interactive_cli/use_cases/nest'
|
17
17
|
require 'use_packs/private/interactive_cli/use_cases/rename'
|
18
18
|
require 'use_packs/private/interactive_cli/use_cases/check'
|
19
|
-
require 'use_packs/private/interactive_cli/use_cases/
|
19
|
+
require 'use_packs/private/interactive_cli/use_cases/update_todo'
|
20
20
|
require 'use_packs/private/interactive_cli/use_cases/validate'
|
21
21
|
require 'use_packs/private/interactive_cli/use_cases/regenerate_rubocop_todo'
|
22
22
|
require 'use_packs/private/interactive_cli/use_cases/lint_package_yml'
|
@@ -24,10 +24,22 @@ module UsePacks
|
|
24
24
|
''
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
# T.untyped should be Packwerk::OffenseCollection, but is currently private until
|
28
|
+
# https://github.com/Shopify/packwerk/pull/289 merges
|
29
|
+
sig { override.params(offense_collection: T.untyped, for_files: T::Set[String]).returns(String) }
|
28
30
|
def show_stale_violations(offense_collection, for_files)
|
29
31
|
''
|
30
32
|
end
|
33
|
+
|
34
|
+
sig { override.params(strict_mode_violations: T::Array[::Packwerk::ReferenceOffense]).returns(::String) }
|
35
|
+
def show_strict_mode_violations(strict_mode_violations)
|
36
|
+
''
|
37
|
+
end
|
38
|
+
|
39
|
+
sig { override.returns(::String) }
|
40
|
+
def identifier
|
41
|
+
'offenses_aggregator'
|
42
|
+
end
|
31
43
|
end
|
32
44
|
end
|
33
45
|
end
|
data/lib/use_packs/private.rb
CHANGED
@@ -109,7 +109,7 @@ module UsePacks
|
|
109
109
|
if origin_pathname.directory?
|
110
110
|
origin_pathname.glob('**/*.*').reject do |origin_path|
|
111
111
|
origin_path.to_s.include?(ParsePackwerk::PACKAGE_YML_NAME) ||
|
112
|
-
origin_path.to_s.include?(ParsePackwerk::
|
112
|
+
origin_path.to_s.include?(ParsePackwerk::PACKAGE_TODO_YML_NAME)
|
113
113
|
end
|
114
114
|
else
|
115
115
|
origin_pathname
|
@@ -182,10 +182,10 @@ module UsePacks
|
|
182
182
|
per_file_processors: per_file_processors
|
183
183
|
)
|
184
184
|
|
185
|
-
# Then delete the old package.yml and
|
185
|
+
# Then delete the old package.yml and package_todo.yml files
|
186
186
|
package.yml.delete
|
187
|
-
|
188
|
-
|
187
|
+
package_todo_file = ParsePackwerk::PackageTodo.for(package).pathname
|
188
|
+
package_todo_file.delete if package_todo_file.exist?
|
189
189
|
|
190
190
|
ParsePackwerk.bust_cache!
|
191
191
|
|
@@ -403,29 +403,29 @@ module UsePacks
|
|
403
403
|
end
|
404
404
|
|
405
405
|
sig { returns(T::Hash[String, String]) }
|
406
|
-
def self.
|
407
|
-
|
406
|
+
def self.get_package_todo_contents
|
407
|
+
package_todo = {}
|
408
408
|
ParsePackwerk.all.each do |package|
|
409
|
-
|
410
|
-
if
|
411
|
-
|
409
|
+
package_todo_yml = ParsePackwerk::PackageTodo.for(package).pathname
|
410
|
+
if package_todo_yml.exist?
|
411
|
+
package_todo[package_todo_yml.to_s] = package_todo_yml.read
|
412
412
|
end
|
413
413
|
end
|
414
414
|
|
415
|
-
|
415
|
+
package_todo
|
416
416
|
end
|
417
417
|
|
418
|
-
|
418
|
+
PackageTodoFiles = T.type_alias do
|
419
419
|
T::Hash[String, T.nilable(String)]
|
420
420
|
end
|
421
421
|
|
422
|
-
sig { params(before:
|
423
|
-
def self.
|
422
|
+
sig { params(before: PackageTodoFiles, after: PackageTodoFiles).returns(String) }
|
423
|
+
def self.diff_package_todo_yml(before, after)
|
424
424
|
dir_containing_contents_before = Dir.mktmpdir
|
425
425
|
dir_containing_contents_after = Dir.mktmpdir
|
426
426
|
begin
|
427
|
-
|
428
|
-
|
427
|
+
write_package_todo_to_tmp_folder(before, dir_containing_contents_before)
|
428
|
+
write_package_todo_to_tmp_folder(after, dir_containing_contents_after)
|
429
429
|
|
430
430
|
diff = `diff -r #{dir_containing_contents_before}/ #{dir_containing_contents_after}/`
|
431
431
|
# For ease of reading, sub out the tmp directory from the diff
|
@@ -436,15 +436,15 @@ module UsePacks
|
|
436
436
|
end
|
437
437
|
end
|
438
438
|
|
439
|
-
sig { params(
|
440
|
-
def self.
|
441
|
-
|
439
|
+
sig { params(package_todo_files: PackageTodoFiles, tmp_folder: String).void }
|
440
|
+
def self.write_package_todo_to_tmp_folder(package_todo_files, tmp_folder)
|
441
|
+
package_todo_files.each do |filename, contents|
|
442
442
|
next if contents.nil?
|
443
443
|
|
444
444
|
tmp_folder_pathname = Pathname.new(tmp_folder)
|
445
|
-
|
446
|
-
FileUtils.mkdir_p(
|
447
|
-
|
445
|
+
temp_package_todo_yml = tmp_folder_pathname.join(filename)
|
446
|
+
FileUtils.mkdir_p(temp_package_todo_yml.dirname)
|
447
|
+
temp_package_todo_yml.write(contents)
|
448
448
|
end
|
449
449
|
end
|
450
450
|
end
|
@@ -21,7 +21,7 @@ module UsePacks
|
|
21
21
|
|
22
22
|
1) Move files into your pack with `bin/packs move #{pack_name} path/to/file.rb`
|
23
23
|
|
24
|
-
2) Run `bin/packwerk update-
|
24
|
+
2) Run `bin/packwerk update-todo` to update the violations. Make sure to run `spring stop` if you've added new load paths (new top-level directories) in your pack.
|
25
25
|
|
26
26
|
3) Expose public API in #{pack_name}/app/public. Try `bin/packs make_public #{pack_name}/path/to/file.rb`
|
27
27
|
|
@@ -41,7 +41,7 @@ module UsePacks
|
|
41
41
|
<<~MSG
|
42
42
|
Your next steps might be:
|
43
43
|
|
44
|
-
1) Run `bin/packwerk update-
|
44
|
+
1) Run `bin/packwerk update-todo` to update the violations. Make sure to run `spring stop` if you've added new load paths (new top-level directories) in your pack.
|
45
45
|
|
46
46
|
2) Touch base with each team who owns files involved in this move
|
47
47
|
|
@@ -63,7 +63,7 @@ module UsePacks
|
|
63
63
|
<<~MSG
|
64
64
|
Your next steps might be:
|
65
65
|
|
66
|
-
1) Run `bin/packwerk update-
|
66
|
+
1) Run `bin/packwerk update-todo` to update the violations. Make sure to run `spring stop` if you've added new load paths (new top-level directories) in your pack.
|
67
67
|
|
68
68
|
2) Work to migrate clients of private API to your new public API
|
69
69
|
|
@@ -85,7 +85,7 @@ module UsePacks
|
|
85
85
|
|
86
86
|
1) Run `bin/packwerk validate` to ensure you haven't introduced a cyclic dependency
|
87
87
|
|
88
|
-
2) Run `bin/packwerk update-
|
88
|
+
2) Run `bin/packwerk update-todo` to update the violations.
|
89
89
|
MSG
|
90
90
|
end
|
91
91
|
|
@@ -103,7 +103,7 @@ module UsePacks
|
|
103
103
|
|
104
104
|
1) Delete the old pack when things look good: `rm -rf #{pack_name}`
|
105
105
|
|
106
|
-
2) Run `bin/packwerk update-
|
106
|
+
2) Run `bin/packwerk update-todo` to update the violations. Make sure to run `spring stop` first.
|
107
107
|
MSG
|
108
108
|
end
|
109
109
|
|
data/lib/use_packs.rb
CHANGED
@@ -247,28 +247,28 @@ module UsePacks
|
|
247
247
|
end
|
248
248
|
|
249
249
|
sig { void }
|
250
|
-
def self.
|
251
|
-
contents_before = Private.
|
252
|
-
UsePacks.execute(['update-
|
253
|
-
contents_after = Private.
|
254
|
-
diff = Private.
|
250
|
+
def self.lint_package_todo_yml_files!
|
251
|
+
contents_before = Private.get_package_todo_contents
|
252
|
+
UsePacks.execute(['update-todo'])
|
253
|
+
contents_after = Private.get_package_todo_contents
|
254
|
+
diff = Private.diff_package_todo_yml(contents_before, contents_after)
|
255
255
|
|
256
256
|
if diff == ''
|
257
|
-
# No diff generated by `update-
|
257
|
+
# No diff generated by `update-todo`
|
258
258
|
exit 0
|
259
259
|
else
|
260
260
|
output = <<~OUTPUT
|
261
|
-
All `
|
261
|
+
All `package_todo.yml` files must be up-to-date and that no diff is generated when running `bin/packwerk update-todo`.
|
262
262
|
This helps ensure a high quality signal in other engineers' PRs when inspecting new violations by ensuring there are no unrelated changes.
|
263
263
|
|
264
264
|
There are three main reasons there may be a diff:
|
265
265
|
1) Most likely, you may have stale violations, meaning there are old violations that no longer apply.
|
266
266
|
2) You may have some sort of auto-formatter set up somewhere (e.g. something that reformats YML files) that is, for example, changing double quotes to single quotes. Ensure this is turned off for these auto-generated files.
|
267
|
-
3) You may have edited these files manually. It's recommended to use the `bin/packwerk update-
|
267
|
+
3) You may have edited these files manually. It's recommended to use the `bin/packwerk update-todo` command to make changes to `package_todo.yml` files.
|
268
268
|
|
269
|
-
In all cases, you can run `bin/packwerk update-
|
269
|
+
In all cases, you can run `bin/packwerk update-todo` to update these files.
|
270
270
|
|
271
|
-
Here is the diff generated after running `update-
|
271
|
+
Here is the diff generated after running `update-todo`:
|
272
272
|
```
|
273
273
|
#{diff}
|
274
274
|
```
|
@@ -276,7 +276,7 @@ module UsePacks
|
|
276
276
|
OUTPUT
|
277
277
|
|
278
278
|
puts output
|
279
|
-
UsePacks.config.
|
279
|
+
UsePacks.config.on_package_todo_lint_failure.call(output)
|
280
280
|
|
281
281
|
exit 1
|
282
282
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: use_packs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
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: code_ownership
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: parse_packwerk
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -313,7 +313,7 @@ files:
|
|
313
313
|
- lib/use_packs/private/interactive_cli/use_cases/query.rb
|
314
314
|
- lib/use_packs/private/interactive_cli/use_cases/regenerate_rubocop_todo.rb
|
315
315
|
- lib/use_packs/private/interactive_cli/use_cases/rename.rb
|
316
|
-
- lib/use_packs/private/interactive_cli/use_cases/
|
316
|
+
- lib/use_packs/private/interactive_cli/use_cases/update_todo.rb
|
317
317
|
- lib/use_packs/private/interactive_cli/use_cases/validate.rb
|
318
318
|
- lib/use_packs/private/interactive_cli/use_cases/visualize.rb
|
319
319
|
- lib/use_packs/private/pack_relationship_analyzer.rb
|