use_packwerk 0.51.1 → 0.54.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/lib/use_packwerk/cli.rb +10 -0
- data/lib/use_packwerk/logging.rb +10 -5
- data/lib/use_packwerk/private/file_move_operation.rb +20 -20
- data/lib/use_packwerk/private.rb +80 -79
- data/lib/use_packwerk.rb +111 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f058e80dcae7e5bc36702bf0ccf3d0e81b044c9f162ac66e74c99eec6bcc8cdb
|
4
|
+
data.tar.gz: 9536a0e463e7d7708e7843bdcefdd892e32343cf1a5ae670024eed1b116546a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 703bbd5300f6565a690563b9bf86ee8d23d91d52a0a48a75b162350aeac3a6455d6ec8fb38c22a43c334700890c0ccb5d5bcffdabe7672b064e295932dcf9df2
|
7
|
+
data.tar.gz: 61302158b9f8afba60a256079350e03c9484ec97a5e241e516ab33031593b36882910b7e32d1fb5e9044575d5e3b79c68eb98b4cd1026a0eafcd2dbcdac55b9e
|
data/lib/use_packwerk/cli.rb
CHANGED
@@ -67,5 +67,15 @@ module UsePackwerk
|
|
67
67
|
per_file_processors: [UsePackwerk::RubocopPostProcessor.new, UsePackwerk::CodeOwnershipPostProcessor.new],
|
68
68
|
)
|
69
69
|
end
|
70
|
+
|
71
|
+
desc "move_to_parent packs/parent_pack packs/child_pack", "Pass in a parent pack and another pack to be made as a child to the parent pack!"
|
72
|
+
sig { params(parent_name: String, pack_name: String).void }
|
73
|
+
def move_to_parent(parent_name, pack_name)
|
74
|
+
UsePackwerk.move_to_parent!(
|
75
|
+
parent_name: parent_name,
|
76
|
+
pack_name: pack_name,
|
77
|
+
per_file_processors: [UsePackwerk::RubocopPostProcessor.new, UsePackwerk::CodeOwnershipPostProcessor.new],
|
78
|
+
)
|
79
|
+
end
|
70
80
|
end
|
71
81
|
end
|
data/lib/use_packwerk/logging.rb
CHANGED
@@ -9,24 +9,29 @@ module UsePackwerk
|
|
9
9
|
sig { params(title: String, block: T.proc.void).void }
|
10
10
|
def self.section(title, &block)
|
11
11
|
print_divider
|
12
|
-
|
13
|
-
|
12
|
+
out ColorizedString.new("#{title}").green.bold
|
13
|
+
out "\n"
|
14
14
|
yield
|
15
15
|
end
|
16
16
|
|
17
17
|
sig { params(text: String).void }
|
18
18
|
def self.print_bold_green(text)
|
19
|
-
|
19
|
+
out ColorizedString.new(text).green.bold
|
20
20
|
end
|
21
21
|
|
22
22
|
sig { params(text: String).void }
|
23
23
|
def self.print(text)
|
24
|
-
|
24
|
+
out text
|
25
25
|
end
|
26
26
|
|
27
27
|
sig { void }
|
28
28
|
def self.print_divider
|
29
|
-
|
29
|
+
out '=' * 100
|
30
|
+
end
|
31
|
+
|
32
|
+
sig { params(str: String).void }
|
33
|
+
def self.out(str)
|
34
|
+
puts str
|
30
35
|
end
|
31
36
|
end
|
32
37
|
end
|
@@ -16,37 +16,37 @@ module UsePackwerk
|
|
16
16
|
|
17
17
|
sig { params(origin_pathname: Pathname, new_package_root: Pathname).returns(Pathname) }
|
18
18
|
def self.destination_pathname_for_package_move(origin_pathname, new_package_root)
|
19
|
-
|
20
|
-
toplevel_directory = parts[0]
|
19
|
+
origin_pack = T.must(ParsePackwerk.package_from_path(origin_pathname))
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
when 'app', 'spec', 'lib'
|
21
|
+
new_implementation = nil
|
22
|
+
if origin_pack.name == ParsePackwerk::ROOT_PACKAGE_NAME
|
25
23
|
new_package_root.join(origin_pathname).cleanpath
|
26
|
-
# This allows us to move files from packs to packs
|
27
|
-
when *PERMITTED_PACK_LOCATIONS # parts looks like ['packs', 'organisms', 'app', 'services', 'bird_like', 'eagle.rb']
|
28
|
-
new_package_root.join(T.must(parts[2..]).join('/')).cleanpath
|
29
24
|
else
|
30
|
-
|
25
|
+
Pathname.new(origin_pathname.to_s.gsub(origin_pack.name, new_package_root.to_s)).cleanpath
|
31
26
|
end
|
32
27
|
end
|
33
28
|
|
34
29
|
sig { params(origin_pathname: Pathname).returns(Pathname) }
|
35
30
|
def self.destination_pathname_for_new_public_api(origin_pathname)
|
36
|
-
parts = origin_pathname.to_s.split('/')
|
37
|
-
toplevel_directory = Pathname.new(parts[0])
|
38
31
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
toplevel_directory.join('public').join(T.must(parts[2..]).join('/')).cleanpath
|
43
|
-
# This allows us to make API in existing packs public
|
44
|
-
when *PERMITTED_PACK_LOCATIONS # parts looks like ['packs', 'organisms', 'app', 'services', 'bird_like', 'eagle.rb']
|
45
|
-
pack_name = Pathname.new(parts[1])
|
46
|
-
toplevel_directory.join(pack_name).join('app/public').join(T.must(parts[4..]).join('/')).cleanpath
|
32
|
+
origin_pack = T.must(ParsePackwerk.package_from_path(origin_pathname))
|
33
|
+
if origin_pack.name == ParsePackwerk::ROOT_PACKAGE_NAME
|
34
|
+
filepath_without_pack_name = origin_pathname.to_s
|
47
35
|
else
|
48
|
-
|
36
|
+
filepath_without_pack_name = origin_pathname.to_s.gsub("#{origin_pack.name}/", '')
|
49
37
|
end
|
38
|
+
|
39
|
+
# We join the pack name with the rest of the path...
|
40
|
+
path_parts = filepath_without_pack_name.split("/")
|
41
|
+
Pathname.new(origin_pack.name).join(
|
42
|
+
# ... keeping the "app" or "spec"
|
43
|
+
T.must(path_parts[0]),
|
44
|
+
# ... substituting "controllers," "services," etc. with "public"
|
45
|
+
'public',
|
46
|
+
# ... then the rest is the same
|
47
|
+
T.must(path_parts[2..]).join("/")
|
48
|
+
# and we take the cleanpath so `./app/...` becomes `app/...`
|
49
|
+
).cleanpath
|
50
50
|
end
|
51
51
|
|
52
52
|
sig { returns(FileMoveOperation) }
|
data/lib/use_packwerk/private.rb
CHANGED
@@ -96,16 +96,6 @@ module UsePackwerk
|
|
96
96
|
raise StandardError.new("Can not find package with name #{pack_name}. Make sure the argument is of the form `packs/my_pack/`")
|
97
97
|
end
|
98
98
|
|
99
|
-
Logging.section('👋 Hi!') do
|
100
|
-
intro = <<~INTRO
|
101
|
-
You are moving a file to a pack, which is great. Check out #{UsePackwerk.config.documentation_link} for more info!
|
102
|
-
|
103
|
-
Please bring any questions or issues you have in your development process to #ruby-modularity or #product-infrastructure.
|
104
|
-
We'd be happy to try to help through pairing, accepting feedback, changing our process, changing our tools, and more.
|
105
|
-
INTRO
|
106
|
-
Logging.print_bold_green(intro)
|
107
|
-
end
|
108
|
-
|
109
99
|
add_public_directory(package)
|
110
100
|
add_readme_todo(package)
|
111
101
|
package_location = package.directory
|
@@ -128,7 +118,10 @@ module UsePackwerk
|
|
128
118
|
# Later, if we choose to go back to moving whole directories at a time, it should be a refactor and all tests should still pass
|
129
119
|
#
|
130
120
|
if origin_pathname.directory?
|
131
|
-
origin_pathname.glob('
|
121
|
+
origin_pathname.glob('**/*.*').reject do |path|
|
122
|
+
path.to_s.include?(ParsePackwerk::PACKAGE_YML_NAME) ||
|
123
|
+
path.to_s.include?(ParsePackwerk::DEPRECATED_REFERENCES_YML_NAME)
|
124
|
+
end
|
132
125
|
else
|
133
126
|
origin_pathname
|
134
127
|
end
|
@@ -150,25 +143,86 @@ module UsePackwerk
|
|
150
143
|
per_file_processors.each do |per_file_processor|
|
151
144
|
per_file_processor.print_final_message!
|
152
145
|
end
|
146
|
+
end
|
153
147
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
148
|
+
sig do
|
149
|
+
params(
|
150
|
+
pack_name: String,
|
151
|
+
parent_name: String,
|
152
|
+
per_file_processors: T::Array[PerFileProcessorInterface],
|
153
|
+
).void
|
154
|
+
end
|
155
|
+
def self.move_to_parent!(
|
156
|
+
pack_name:,
|
157
|
+
parent_name:,
|
158
|
+
per_file_processors: []
|
159
|
+
)
|
160
|
+
pack_name = Private.clean_pack_name(pack_name)
|
161
|
+
package = ParsePackwerk.all.find { |package| package.name == pack_name }
|
162
|
+
if package.nil?
|
163
|
+
raise StandardError.new("Can not find package with name #{pack_name}. Make sure the argument is of the form `packs/my_pack/`")
|
164
|
+
end
|
159
165
|
|
160
|
-
|
166
|
+
parent_name = Private.clean_pack_name(parent_name)
|
167
|
+
parent_package = ParsePackwerk.all.find { |package| package.name == parent_name }
|
168
|
+
if parent_package.nil?
|
169
|
+
parent_package = create_pack_if_not_exists!(pack_name: parent_name, enforce_privacy: true, enforce_dependencies: true)
|
170
|
+
end
|
161
171
|
|
162
|
-
|
172
|
+
# First we create a new pack that has the exact same properties of the old one!
|
173
|
+
package_last_name = package.directory.basename
|
174
|
+
new_package_name = parent_package.directory.join(package_last_name).to_s
|
175
|
+
|
176
|
+
new_package = ParsePackwerk::Package.new(
|
177
|
+
name: new_package_name,
|
178
|
+
enforce_privacy: package.enforce_dependencies,
|
179
|
+
enforce_dependencies: package.enforce_dependencies,
|
180
|
+
dependencies: package.dependencies,
|
181
|
+
metadata: package.metadata,
|
182
|
+
)
|
183
|
+
ParsePackwerk.write_package_yml!(new_package)
|
184
|
+
ParsePackwerk.bust_cache!
|
185
|
+
|
186
|
+
# Move everything from the old pack to the new one
|
187
|
+
self.move_to_pack!(
|
188
|
+
pack_name: new_package_name,
|
189
|
+
paths_relative_to_root: [package.directory.to_s],
|
190
|
+
per_file_processors: per_file_processors,
|
191
|
+
)
|
192
|
+
|
193
|
+
# Then delete the old package.yml and deprecated_references.yml files
|
194
|
+
package.yml.delete
|
195
|
+
deprecated_references_file = ParsePackwerk::DeprecatedReferences.for(package).pathname
|
196
|
+
deprecated_references_file.delete if deprecated_references_file.exist?
|
197
|
+
|
198
|
+
ParsePackwerk.bust_cache!
|
199
|
+
|
200
|
+
ParsePackwerk.all.each do |other_package|
|
201
|
+
new_dependencies = other_package.dependencies.map{|d| d == pack_name ? new_package_name : d}
|
202
|
+
if other_package.name == parent_name && !new_dependencies.include?(new_package_name)
|
203
|
+
new_dependencies += [new_package_name]
|
204
|
+
end
|
163
205
|
|
164
|
-
|
206
|
+
new_other_package = ParsePackwerk::Package.new(
|
207
|
+
name: other_package.name,
|
208
|
+
enforce_privacy: other_package.enforce_dependencies,
|
209
|
+
enforce_dependencies: other_package.enforce_dependencies,
|
210
|
+
dependencies: new_dependencies.uniq.sort,
|
211
|
+
metadata: other_package.metadata,
|
212
|
+
)
|
165
213
|
|
166
|
-
|
167
|
-
|
214
|
+
ParsePackwerk.write_package_yml!(new_other_package)
|
215
|
+
end
|
168
216
|
|
169
|
-
|
170
|
-
|
217
|
+
sorbet_config = Pathname.new('sorbet/config')
|
218
|
+
if sorbet_config.exist?
|
219
|
+
UsePackwerk.replace_in_file(
|
220
|
+
file: sorbet_config.to_s,
|
221
|
+
find: package.directory.join('spec'),
|
222
|
+
replace_with: new_package.directory.join('spec'),
|
223
|
+
)
|
171
224
|
end
|
225
|
+
end
|
172
226
|
|
173
227
|
sig do
|
174
228
|
params(
|
@@ -177,19 +231,12 @@ module UsePackwerk
|
|
177
231
|
).void
|
178
232
|
end
|
179
233
|
def self.make_public!(paths_relative_to_root:, per_file_processors:)
|
180
|
-
Logging.section('Making files public') do
|
181
|
-
intro = <<~INTRO
|
182
|
-
You are moving some files into public API. See #{UsePackwerk.config.documentation_link} for other utilities!
|
183
|
-
INTRO
|
184
|
-
Logging.print_bold_green(intro)
|
185
|
-
end
|
186
|
-
|
187
234
|
if paths_relative_to_root.any?
|
188
235
|
Logging.section('File Operations') do
|
189
236
|
file_paths = paths_relative_to_root.flat_map do |path|
|
190
237
|
origin_pathname = Pathname.new(path).cleanpath
|
191
238
|
if origin_pathname.directory?
|
192
|
-
origin_pathname.glob('
|
239
|
+
origin_pathname.glob('**/*.*').map(&:to_s)
|
193
240
|
else
|
194
241
|
path
|
195
242
|
end
|
@@ -197,19 +244,7 @@ module UsePackwerk
|
|
197
244
|
|
198
245
|
|
199
246
|
file_move_operations = file_paths.map do |path|
|
200
|
-
|
201
|
-
first_part_of_path = T.must(parts[0])
|
202
|
-
|
203
|
-
if Pathname.new(first_part_of_path).dirname.join(ParsePackwerk::PACKAGE_YML_NAME).exist?
|
204
|
-
package_location = Pathname.new('.')
|
205
|
-
elsif PERMITTED_PACK_LOCATIONS.include?(first_part_of_path)
|
206
|
-
package_location = Pathname.new(first_part_of_path).join(T.must(parts[1]))
|
207
|
-
else
|
208
|
-
raise StandardError.new('Can only make files in the monolith or in existing packs public')
|
209
|
-
end
|
210
|
-
|
211
|
-
package = ParsePackwerk::Package.from(package_location.join(ParsePackwerk::PACKAGE_YML_NAME))
|
212
|
-
|
247
|
+
package = T.must(ParsePackwerk.package_from_path(path))
|
213
248
|
origin_pathname = Pathname.new(path).cleanpath
|
214
249
|
|
215
250
|
FileMoveOperation.new(
|
@@ -225,22 +260,6 @@ module UsePackwerk
|
|
225
260
|
end
|
226
261
|
end
|
227
262
|
end
|
228
|
-
|
229
|
-
Logging.section('Next steps') do
|
230
|
-
next_steps = <<~NEXT_STEPS
|
231
|
-
Your next steps might be:
|
232
|
-
|
233
|
-
1) Run `bin/packwerk update-deprecations` to update the violations. Make sure to run `spring stop` if you've added new load paths (new top-level directories) in your pack.
|
234
|
-
|
235
|
-
2) Update TODO lists for rubocop implemented protections. See #{UsePackwerk.config.documentation_link} for more info
|
236
|
-
|
237
|
-
3) Work to migrate clients of private API to your new public API
|
238
|
-
|
239
|
-
4) Update your README at packs/your_package_name/README.md
|
240
|
-
NEXT_STEPS
|
241
|
-
|
242
|
-
Logging.print_bold_green(next_steps)
|
243
|
-
end
|
244
263
|
end
|
245
264
|
|
246
265
|
sig do
|
@@ -250,13 +269,6 @@ module UsePackwerk
|
|
250
269
|
).void
|
251
270
|
end
|
252
271
|
def self.add_dependency!(pack_name:, dependency_name:)
|
253
|
-
Logging.section('Adding a dependency') do
|
254
|
-
intro = <<~INTRO
|
255
|
-
You are adding a dependency. See #{UsePackwerk.config.documentation_link} for other utilities!
|
256
|
-
INTRO
|
257
|
-
Logging.print_bold_green(intro)
|
258
|
-
end
|
259
|
-
|
260
272
|
all_packages = ParsePackwerk.all
|
261
273
|
|
262
274
|
pack_name = Private.clean_pack_name(pack_name)
|
@@ -279,18 +291,6 @@ module UsePackwerk
|
|
279
291
|
metadata: package.metadata,
|
280
292
|
)
|
281
293
|
ParsePackwerk.write_package_yml!(new_package)
|
282
|
-
|
283
|
-
Logging.section('Next steps') do
|
284
|
-
next_steps = <<~NEXT_STEPS
|
285
|
-
Your next steps might be:
|
286
|
-
|
287
|
-
1) Run `bin/packwerk validate` to ensure you haven't introduced a cyclic dependency
|
288
|
-
|
289
|
-
2) Run `bin/packwerk update-deprecations` to update the violations.
|
290
|
-
NEXT_STEPS
|
291
|
-
|
292
|
-
Logging.print_bold_green(next_steps)
|
293
|
-
end
|
294
294
|
end
|
295
295
|
|
296
296
|
sig { params(file_move_operation: FileMoveOperation, per_file_processors: T::Array[UsePackwerk::PerFileProcessorInterface]).void }
|
@@ -427,6 +427,7 @@ module UsePackwerk
|
|
427
427
|
|
428
428
|
sig { params(original_package: ParsePackwerk::Package).returns(ParsePackwerk::Package) }
|
429
429
|
def self.rewrite_package_with_original_packwerk_values(original_package)
|
430
|
+
ParsePackwerk.bust_cache!
|
430
431
|
package_with_protection_defaults = T.must(ParsePackwerk.all.find { |package| package.name == original_package.name })
|
431
432
|
# PackageProtections also sets `enforce_privacy` and `enforce_dependency` to be true, so we set these back down to their original values
|
432
433
|
package = ParsePackwerk::Package.new(
|
data/lib/use_packwerk.rb
CHANGED
@@ -61,11 +61,39 @@ module UsePackwerk
|
|
61
61
|
paths_relative_to_root: [],
|
62
62
|
per_file_processors: []
|
63
63
|
)
|
64
|
+
Logging.section('👋 Hi!') do
|
65
|
+
intro = <<~INTRO
|
66
|
+
You are moving a file to a pack, which is great. Check out #{UsePackwerk.config.documentation_link} for more info!
|
67
|
+
|
68
|
+
Please bring any questions or issues you have in your development process to #ruby-modularity or #product-infrastructure.
|
69
|
+
We'd be happy to try to help through pairing, accepting feedback, changing our process, changing our tools, and more.
|
70
|
+
INTRO
|
71
|
+
Logging.print_bold_green(intro)
|
72
|
+
end
|
73
|
+
|
64
74
|
Private.move_to_pack!(
|
65
75
|
pack_name: pack_name,
|
66
76
|
paths_relative_to_root: paths_relative_to_root,
|
67
77
|
per_file_processors: per_file_processors,
|
68
78
|
)
|
79
|
+
|
80
|
+
Logging.section('Next steps') do
|
81
|
+
next_steps = <<~NEXT_STEPS
|
82
|
+
Your next steps might be:
|
83
|
+
|
84
|
+
1) Run `bin/packwerk update-deprecations` to update the violations. Make sure to run `spring stop` if you've added new load paths (new top-level directories) in your pack.
|
85
|
+
|
86
|
+
2) Update TODO lists for rubocop implemented protections. See #{UsePackwerk.config.documentation_link} for more info
|
87
|
+
|
88
|
+
3) Touch base with each team who owns files involved in this move
|
89
|
+
|
90
|
+
4) Expose public API in #{pack_name}/app/public. Try `bin/use_packwerk make_public #{pack_name}/path/to/file.rb`
|
91
|
+
|
92
|
+
5) Update your readme at #{pack_name}/README.md
|
93
|
+
NEXT_STEPS
|
94
|
+
|
95
|
+
Logging.print_bold_green(next_steps)
|
96
|
+
end
|
69
97
|
end
|
70
98
|
|
71
99
|
sig do
|
@@ -78,10 +106,33 @@ module UsePackwerk
|
|
78
106
|
paths_relative_to_root: [],
|
79
107
|
per_file_processors: []
|
80
108
|
)
|
109
|
+
Logging.section('Making files public') do
|
110
|
+
intro = <<~INTRO
|
111
|
+
You are moving some files into public API. See #{UsePackwerk.config.documentation_link} for other utilities!
|
112
|
+
INTRO
|
113
|
+
Logging.print_bold_green(intro)
|
114
|
+
end
|
115
|
+
|
81
116
|
Private.make_public!(
|
82
117
|
paths_relative_to_root: paths_relative_to_root,
|
83
118
|
per_file_processors: per_file_processors
|
84
119
|
)
|
120
|
+
|
121
|
+
Logging.section('Next steps') do
|
122
|
+
next_steps = <<~NEXT_STEPS
|
123
|
+
Your next steps might be:
|
124
|
+
|
125
|
+
1) Run `bin/packwerk update-deprecations` to update the violations. Make sure to run `spring stop` if you've added new load paths (new top-level directories) in your pack.
|
126
|
+
|
127
|
+
2) Update TODO lists for rubocop implemented protections. See #{UsePackwerk.config.documentation_link} for more info
|
128
|
+
|
129
|
+
3) Work to migrate clients of private API to your new public API
|
130
|
+
|
131
|
+
4) Update your README at packs/your_package_name/README.md
|
132
|
+
NEXT_STEPS
|
133
|
+
|
134
|
+
Logging.print_bold_green(next_steps)
|
135
|
+
end
|
85
136
|
end
|
86
137
|
|
87
138
|
sig do
|
@@ -94,10 +145,70 @@ module UsePackwerk
|
|
94
145
|
pack_name:,
|
95
146
|
dependency_name:
|
96
147
|
)
|
148
|
+
Logging.section('Adding a dependency') do
|
149
|
+
intro = <<~INTRO
|
150
|
+
You are adding a dependency. See #{UsePackwerk.config.documentation_link} for other utilities!
|
151
|
+
INTRO
|
152
|
+
Logging.print_bold_green(intro)
|
153
|
+
end
|
154
|
+
|
97
155
|
Private.add_dependency!(
|
98
156
|
pack_name: pack_name,
|
99
157
|
dependency_name: dependency_name
|
100
158
|
)
|
159
|
+
|
160
|
+
Logging.section('Next steps') do
|
161
|
+
next_steps = <<~NEXT_STEPS
|
162
|
+
Your next steps might be:
|
163
|
+
|
164
|
+
1) Run `bin/packwerk validate` to ensure you haven't introduced a cyclic dependency
|
165
|
+
|
166
|
+
2) Run `bin/packwerk update-deprecations` to update the violations.
|
167
|
+
NEXT_STEPS
|
168
|
+
|
169
|
+
Logging.print_bold_green(next_steps)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
sig do
|
174
|
+
params(
|
175
|
+
pack_name: String,
|
176
|
+
parent_name: String,
|
177
|
+
per_file_processors: T::Array[PerFileProcessorInterface],
|
178
|
+
).void
|
179
|
+
end
|
180
|
+
def self.move_to_parent!(
|
181
|
+
pack_name:,
|
182
|
+
parent_name:,
|
183
|
+
per_file_processors: []
|
184
|
+
)
|
185
|
+
Logging.section('👋 Hi!') do
|
186
|
+
intro = <<~INTRO
|
187
|
+
You are moving one pack to be a child of a different pack. Check out #{UsePackwerk.config.documentation_link} for more info!
|
188
|
+
|
189
|
+
Please bring any questions or issues you have in your development process to #ruby-modularity or #product-infrastructure.
|
190
|
+
We'd be happy to try to help through pairing, accepting feedback, changing our process, changing our tools, and more.
|
191
|
+
INTRO
|
192
|
+
Logging.print_bold_green(intro)
|
193
|
+
end
|
194
|
+
|
195
|
+
Private.move_to_parent!(
|
196
|
+
pack_name: pack_name,
|
197
|
+
parent_name: parent_name,
|
198
|
+
per_file_processors: per_file_processors,
|
199
|
+
)
|
200
|
+
|
201
|
+
Logging.section('Next steps') do
|
202
|
+
next_steps = <<~NEXT_STEPS
|
203
|
+
Your next steps might be:
|
204
|
+
|
205
|
+
1) Delete the old pack when things look good: `rm -rf #{pack_name}`
|
206
|
+
|
207
|
+
2) Run `bin/packwerk update-deprecations` to update the violations. Make sure to run `spring stop` first.
|
208
|
+
NEXT_STEPS
|
209
|
+
|
210
|
+
Logging.print_bold_green(next_steps)
|
211
|
+
end
|
101
212
|
end
|
102
213
|
|
103
214
|
sig do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: use_packwerk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.54.0
|
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-08-
|
11
|
+
date: 2022-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|