packs 0.0.33 → 0.0.35
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/README.md +13 -1
- data/lib/packs/code_ownership_post_processor.rb +1 -1
- data/lib/packs/per_file_processor_interface.rb +1 -1
- data/lib/packs/private.rb +10 -3
- data/lib/packs/update_references_post_processor.rb +50 -0
- data/lib/packs.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29b2c810b50fb84aee08f79e49a7d6710b7bf74f8421efd2ce36a12c61bb5cb5
|
4
|
+
data.tar.gz: a183ed44f957f94de6736e0272193e873da6ca7d177a6cbad491682fc73596a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5587b5c11a6ffcc20213ddf8c7fc5fd1efe2d82f6d461e70d38c82fa55151956225388f45313cd2a6cda88bc839a6350ee821a3afdb942929f130ef2b5c5165a
|
7
|
+
data.tar.gz: 3c789067155a3ff7a76eade07734f3acf884fecacea1472a1755afcba7f833bef370dd4f359b2761eeceb907615c2cbbf728bdfc0aa61056b17e9f2cb39593e0
|
data/README.md
CHANGED
@@ -30,7 +30,19 @@ Here are some example integrations with `packs`:
|
|
30
30
|
A ruby [`gem`](https://guides.rubygems.org/what-is-a-gem/) is the Ruby community solution for packaging and distributing Ruby code. A gem is a great place to start new projects, and a great end state for code that's been extracted from an existing codebase. `packs` are intended to help gradually modularize an application that has some conceptual boundaries, but is not yet ready to be factored into gems.
|
31
31
|
|
32
32
|
## Usage
|
33
|
-
|
33
|
+
1. Add the gem to your Gemfile and do a `bundle install`
|
34
|
+
```
|
35
|
+
gem 'packs-rails'
|
36
|
+
gem 'packs'
|
37
|
+
```
|
38
|
+
|
39
|
+
2. Initialize packwerk
|
40
|
+
```
|
41
|
+
bundle binstub packwerk
|
42
|
+
bin/packwerk init
|
43
|
+
```
|
44
|
+
|
45
|
+
3. Make sure to run `bundle binstub packs` to generate `bin/packs` within your application.
|
34
46
|
|
35
47
|
## CLI Documentation
|
36
48
|
## Describe available commands or one specific command
|
@@ -40,7 +40,7 @@ module Packs
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
sig { params(file_move_operations: T::Array[Private::FileMoveOperation]).void }
|
43
|
+
sig { override.params(file_move_operations: T::Array[Private::FileMoveOperation]).void }
|
44
44
|
def after_move_files!(file_move_operations)
|
45
45
|
if @teams.any?
|
46
46
|
Logging.section('Code Ownership') do
|
@@ -10,7 +10,7 @@ module Packs
|
|
10
10
|
sig { abstract.params(file_move_operation: Private::FileMoveOperation).void }
|
11
11
|
def before_move_file!(file_move_operation); end
|
12
12
|
|
13
|
-
sig { params(file_move_operations: T::Array[Private::FileMoveOperation]).void }
|
13
|
+
sig { overridable.params(file_move_operations: T::Array[Private::FileMoveOperation]).void }
|
14
14
|
def after_move_files!(file_move_operations)
|
15
15
|
nil
|
16
16
|
end
|
data/lib/packs/private.rb
CHANGED
@@ -173,6 +173,7 @@ module Packs
|
|
173
173
|
enforce_privacy: package.enforce_privacy,
|
174
174
|
enforce_dependencies: package.enforce_dependencies,
|
175
175
|
dependencies: package.dependencies,
|
176
|
+
violations: package.violations,
|
176
177
|
metadata: package.metadata,
|
177
178
|
config: package.config
|
178
179
|
)
|
@@ -195,9 +196,6 @@ module Packs
|
|
195
196
|
|
196
197
|
ParsePackwerk.all.each do |other_package|
|
197
198
|
new_dependencies = other_package.dependencies.map { |d| d == pack_name ? new_package_name : d }
|
198
|
-
if other_package.name == parent_name && !new_dependencies.include?(new_package_name)
|
199
|
-
new_dependencies += [new_package_name]
|
200
|
-
end
|
201
199
|
|
202
200
|
new_config = other_package.config.dup
|
203
201
|
if new_config['ignored_dependencies']
|
@@ -206,11 +204,18 @@ module Packs
|
|
206
204
|
end
|
207
205
|
end
|
208
206
|
|
207
|
+
if other_package.name == parent_name &&
|
208
|
+
!new_dependencies.include?(new_package_name) &&
|
209
|
+
!new_config['ignored_dependencies']&.include?(new_package_name)
|
210
|
+
new_dependencies += [new_package_name]
|
211
|
+
end
|
212
|
+
|
209
213
|
new_other_package = ParsePackwerk::Package.new(
|
210
214
|
name: other_package.name,
|
211
215
|
enforce_privacy: other_package.enforce_privacy,
|
212
216
|
enforce_dependencies: other_package.enforce_dependencies,
|
213
217
|
dependencies: new_dependencies.uniq.sort,
|
218
|
+
violations: other_package.violations,
|
214
219
|
metadata: other_package.metadata,
|
215
220
|
config: new_config
|
216
221
|
)
|
@@ -301,6 +306,7 @@ module Packs
|
|
301
306
|
dependencies: (package.dependencies + [dependency_name]).uniq.sort,
|
302
307
|
enforce_privacy: package.enforce_privacy,
|
303
308
|
enforce_dependencies: package.enforce_dependencies,
|
309
|
+
violations: package.violations,
|
304
310
|
metadata: package.metadata,
|
305
311
|
config: package.config
|
306
312
|
)
|
@@ -392,6 +398,7 @@ module Packs
|
|
392
398
|
enforce_dependencies: should_enforce_dependencies || false,
|
393
399
|
enforce_privacy: enforce_privacy,
|
394
400
|
dependencies: [],
|
401
|
+
violations: [],
|
395
402
|
metadata: {},
|
396
403
|
name: pack_name,
|
397
404
|
config: config
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# typed: strict
|
2
|
+
|
3
|
+
module Packs
|
4
|
+
class UpdateReferencesPostProcessor
|
5
|
+
include PerFileProcessorInterface
|
6
|
+
|
7
|
+
extend T::Sig
|
8
|
+
|
9
|
+
sig { override.params(file_move_operation: Private::FileMoveOperation).void }
|
10
|
+
def before_move_file!(file_move_operation)
|
11
|
+
nil
|
12
|
+
end
|
13
|
+
|
14
|
+
sig { override.params(file_move_operations: T::Array[Private::FileMoveOperation]).void }
|
15
|
+
def after_move_files!(file_move_operations)
|
16
|
+
return if file_move_operations.empty?
|
17
|
+
|
18
|
+
origin_pack = T.must(file_move_operations.first).origin_pack.name
|
19
|
+
destination_pack = T.must(file_move_operations.first).destination_pack.name
|
20
|
+
|
21
|
+
if self.class.ripgrep_enabled?
|
22
|
+
matching_files = `rg -l --hidden '#{origin_pack}' .`
|
23
|
+
matching_files.split("\n").each do |file_name|
|
24
|
+
substitute_references!(file_name, origin_pack, destination_pack)
|
25
|
+
end
|
26
|
+
else
|
27
|
+
Logging.print('For faster UpdateReferences install ripgrep: https://github.com/BurntSushi/ripgrep/tree/master')
|
28
|
+
Dir.glob('./**/*', File::FNM_DOTMATCH) do |file_name|
|
29
|
+
next if File.directory?(file_name)
|
30
|
+
|
31
|
+
substitute_references!(file_name, origin_pack, destination_pack)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
sig { returns(T::Boolean) }
|
37
|
+
def self.ripgrep_enabled?
|
38
|
+
!!system('which', 'rg', out: File::NULL, err: :out)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
sig { params(file_name: String, origin_pack: String, destination_pack: String).void }
|
44
|
+
def substitute_references!(file_name, origin_pack, destination_pack)
|
45
|
+
text = File.read(file_name)
|
46
|
+
replace = text.gsub(origin_pack, destination_pack)
|
47
|
+
File.open(file_name, 'w') { |file| file.puts replace }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/packs.rb
CHANGED
@@ -16,6 +16,7 @@ require 'code_ownership'
|
|
16
16
|
require 'packs/private'
|
17
17
|
require 'packs/per_file_processor_interface'
|
18
18
|
require 'packs/rubocop_post_processor'
|
19
|
+
require 'packs/update_references_post_processor'
|
19
20
|
require 'packs/code_ownership_post_processor'
|
20
21
|
require 'packs/logging'
|
21
22
|
require 'packs/configuration'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.35
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gusto Engineers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: code_ownership
|
@@ -304,6 +304,7 @@ files:
|
|
304
304
|
- lib/packs/private/pack_relationship_analyzer.rb
|
305
305
|
- lib/packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb
|
306
306
|
- lib/packs/rubocop_post_processor.rb
|
307
|
+
- lib/packs/update_references_post_processor.rb
|
307
308
|
- lib/packs/user_event_logger.rb
|
308
309
|
homepage: https://github.com/rubyatscale/packs
|
309
310
|
licenses:
|