packs 0.0.5 → 0.0.22

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +101 -12
  3. data/bin/packs +10 -0
  4. data/bin/rubocop +29 -0
  5. data/bin/tapioca +29 -0
  6. data/lib/packs/cli.rb +164 -0
  7. data/lib/packs/code_ownership_post_processor.rb +58 -0
  8. data/lib/packs/configuration.rb +61 -0
  9. data/lib/packs/default_user_event_logger.rb +7 -0
  10. data/lib/packs/logging.rb +37 -0
  11. data/lib/packs/per_file_processor_interface.rb +18 -0
  12. data/lib/packs/private/file_move_operation.rb +80 -0
  13. data/lib/packs/private/interactive_cli/file_selector.rb +26 -0
  14. data/lib/packs/private/interactive_cli/pack_selector.rb +55 -0
  15. data/lib/packs/private/interactive_cli/team_selector.rb +58 -0
  16. data/lib/packs/private/interactive_cli/use_cases/add_dependency.rb +30 -0
  17. data/lib/packs/private/interactive_cli/use_cases/check.rb +25 -0
  18. data/lib/packs/private/interactive_cli/use_cases/create.rb +27 -0
  19. data/lib/packs/private/interactive_cli/use_cases/get_info.rb +37 -0
  20. data/lib/packs/private/interactive_cli/use_cases/interface.rb +34 -0
  21. data/lib/packs/private/interactive_cli/use_cases/lint_package_todo_yml_files.rb +25 -0
  22. data/lib/packs/private/interactive_cli/use_cases/lint_package_yml_files.rb +26 -0
  23. data/lib/packs/private/interactive_cli/use_cases/make_public.rb +30 -0
  24. data/lib/packs/private/interactive_cli/use_cases/move.rb +32 -0
  25. data/lib/packs/private/interactive_cli/use_cases/move_to_parent.rb +31 -0
  26. data/lib/packs/private/interactive_cli/use_cases/query.rb +51 -0
  27. data/lib/packs/private/interactive_cli/use_cases/rename.rb +25 -0
  28. data/lib/packs/private/interactive_cli/use_cases/update.rb +25 -0
  29. data/lib/packs/private/interactive_cli/use_cases/validate.rb +25 -0
  30. data/lib/packs/private/interactive_cli/use_cases/visualize.rb +44 -0
  31. data/lib/packs/private/interactive_cli.rb +52 -0
  32. data/lib/packs/private/pack_relationship_analyzer.rb +135 -0
  33. data/lib/packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb +44 -0
  34. data/lib/packs/private/packwerk_wrapper.rb +70 -0
  35. data/lib/packs/private.rb +606 -4
  36. data/lib/packs/rubocop_post_processor.rb +30 -0
  37. data/lib/packs/user_event_logger.rb +199 -0
  38. data/lib/packs.rb +233 -53
  39. metadata +225 -14
  40. data/lib/packs/pack.rb +0 -43
  41. data/lib/packs/private/configuration.rb +0 -36
  42. data/lib/packs/rspec/fixture_helper.rb +0 -33
  43. data/lib/packs/rspec/support.rb +0 -21
metadata CHANGED
@@ -1,15 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.22
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-29 00:00:00.000000000 Z
11
+ date: 2023-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: code_ownership
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.33.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.33.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: packs-specification
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'
55
+ - !ruby/object:Gem::Dependency
56
+ name: packwerk
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: parse_packwerk
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-packs
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
13
97
  - !ruby/object:Gem::Dependency
14
98
  name: sorbet-runtime
15
99
  requirement: !ruby/object:Gem::Requirement
@@ -24,20 +108,90 @@ dependencies:
24
108
  - - ">="
25
109
  - !ruby/object:Gem::Version
26
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: thor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: tty-prompt
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: visualize_packs
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
27
153
  - !ruby/object:Gem::Dependency
28
154
  name: bundler
29
155
  requirement: !ruby/object:Gem::Requirement
30
156
  requirements:
31
157
  - - "~>"
32
158
  - !ruby/object:Gem::Version
33
- version: 2.2.16
159
+ version: '2.2'
34
160
  type: :development
35
161
  prerelease: false
36
162
  version_requirements: !ruby/object:Gem::Requirement
37
163
  requirements:
38
164
  - - "~>"
39
165
  - !ruby/object:Gem::Version
40
- version: 2.2.16
166
+ version: '2.2'
167
+ - !ruby/object:Gem::Dependency
168
+ name: pry
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: pry-byebug
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
41
195
  - !ruby/object:Gem::Dependency
42
196
  name: rake
43
197
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +234,20 @@ dependencies:
80
234
  - - ">="
81
235
  - !ruby/object:Gem::Version
82
236
  version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rubocop-rspec
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
83
251
  - !ruby/object:Gem::Dependency
84
252
  name: sorbet
85
253
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +262,20 @@ dependencies:
94
262
  - - ">="
95
263
  - !ruby/object:Gem::Version
96
264
  version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: sorbet-static
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
97
279
  - !ruby/object:Gem::Dependency
98
280
  name: tapioca
99
281
  requirement: !ruby/object:Gem::Requirement
@@ -108,21 +290,51 @@ dependencies:
108
290
  - - ">="
109
291
  - !ruby/object:Gem::Version
110
292
  version: '0'
111
- description: Packs are the specification for gradual modularization in the `rubyatscale`
112
- ecosystem.
293
+ description: Provides CLI tools for working with ruby packs.
113
294
  email:
114
295
  - dev@gusto.com
115
- executables: []
296
+ executables:
297
+ - packs
116
298
  extensions: []
117
299
  extra_rdoc_files: []
118
300
  files:
119
301
  - README.md
302
+ - bin/packs
303
+ - bin/rubocop
304
+ - bin/tapioca
120
305
  - lib/packs.rb
121
- - lib/packs/pack.rb
306
+ - lib/packs/cli.rb
307
+ - lib/packs/code_ownership_post_processor.rb
308
+ - lib/packs/configuration.rb
309
+ - lib/packs/default_user_event_logger.rb
310
+ - lib/packs/logging.rb
311
+ - lib/packs/per_file_processor_interface.rb
122
312
  - lib/packs/private.rb
123
- - lib/packs/private/configuration.rb
124
- - lib/packs/rspec/fixture_helper.rb
125
- - lib/packs/rspec/support.rb
313
+ - lib/packs/private/file_move_operation.rb
314
+ - lib/packs/private/interactive_cli.rb
315
+ - lib/packs/private/interactive_cli/file_selector.rb
316
+ - lib/packs/private/interactive_cli/pack_selector.rb
317
+ - lib/packs/private/interactive_cli/team_selector.rb
318
+ - lib/packs/private/interactive_cli/use_cases/add_dependency.rb
319
+ - lib/packs/private/interactive_cli/use_cases/check.rb
320
+ - lib/packs/private/interactive_cli/use_cases/create.rb
321
+ - lib/packs/private/interactive_cli/use_cases/get_info.rb
322
+ - lib/packs/private/interactive_cli/use_cases/interface.rb
323
+ - lib/packs/private/interactive_cli/use_cases/lint_package_todo_yml_files.rb
324
+ - lib/packs/private/interactive_cli/use_cases/lint_package_yml_files.rb
325
+ - lib/packs/private/interactive_cli/use_cases/make_public.rb
326
+ - lib/packs/private/interactive_cli/use_cases/move.rb
327
+ - lib/packs/private/interactive_cli/use_cases/move_to_parent.rb
328
+ - lib/packs/private/interactive_cli/use_cases/query.rb
329
+ - lib/packs/private/interactive_cli/use_cases/rename.rb
330
+ - lib/packs/private/interactive_cli/use_cases/update.rb
331
+ - lib/packs/private/interactive_cli/use_cases/validate.rb
332
+ - lib/packs/private/interactive_cli/use_cases/visualize.rb
333
+ - lib/packs/private/pack_relationship_analyzer.rb
334
+ - lib/packs/private/packwerk_wrapper.rb
335
+ - lib/packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb
336
+ - lib/packs/rubocop_post_processor.rb
337
+ - lib/packs/user_event_logger.rb
126
338
  homepage: https://github.com/rubyatscale/packs
127
339
  licenses:
128
340
  - MIT
@@ -139,7 +351,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
351
  requirements:
140
352
  - - ">="
141
353
  - !ruby/object:Gem::Version
142
- version: '2.6'
354
+ version: 2.6.0
143
355
  required_rubygems_version: !ruby/object:Gem::Requirement
144
356
  requirements:
145
357
  - - ">="
@@ -149,6 +361,5 @@ requirements: []
149
361
  rubygems_version: 3.1.6
150
362
  signing_key:
151
363
  specification_version: 4
152
- summary: Packs are the specification for gradual modularization in the `rubyatscale`
153
- ecosystem.
364
+ summary: Provides CLI tools for working with ruby packs.
154
365
  test_files: []
data/lib/packs/pack.rb DELETED
@@ -1,43 +0,0 @@
1
- # typed: strict
2
-
3
- module Packs
4
- class Pack < T::Struct
5
- extend T::Sig
6
-
7
- const :name, String
8
- const :path, Pathname
9
- const :relative_path, Pathname
10
- const :raw_hash, T::Hash[T.untyped, T.untyped]
11
-
12
- sig { params(package_yml_absolute_path: Pathname).returns(Pack) }
13
- def self.from(package_yml_absolute_path)
14
- package_loaded_yml = YAML.load_file(package_yml_absolute_path)
15
- path = package_yml_absolute_path.dirname
16
- relative_path = path.relative_path_from(Private.root)
17
- package_name = relative_path.cleanpath.to_s
18
-
19
- Pack.new(
20
- name: package_name,
21
- path: path,
22
- relative_path: relative_path,
23
- raw_hash: package_loaded_yml || {}
24
- )
25
- end
26
-
27
- sig { params(relative: T::Boolean).returns(Pathname) }
28
- def yml(relative: true)
29
- path_to_use = relative ? relative_path : path
30
- path_to_use.join(PACKAGE_FILE).cleanpath
31
- end
32
-
33
- sig { returns(String) }
34
- def last_name
35
- relative_path.basename.to_s
36
- end
37
-
38
- sig { returns(T::Hash[T.untyped, T.untyped]) }
39
- def metadata
40
- raw_hash['metadata'] || {}
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- # typed: strict
2
-
3
- module Packs
4
- module Private
5
- class Configuration < T::Struct
6
- extend T::Sig
7
- CONFIGURATION_PATHNAME = T.let(Pathname.new('packs.yml'), Pathname)
8
-
9
- DEFAULT_PACK_PATHS = T.let([
10
- 'packs/*',
11
- 'packs/*/*'
12
- ], T::Array[String])
13
-
14
- prop :pack_paths, T::Array[String]
15
-
16
- sig { returns(Configuration) }
17
- def self.fetch
18
- config_hash = CONFIGURATION_PATHNAME.exist? ? YAML.load_file(CONFIGURATION_PATHNAME) : {}
19
-
20
- new(
21
- pack_paths: pack_paths(config_hash)
22
- )
23
- end
24
-
25
- sig { params(config_hash: T::Hash[T.untyped, T.untyped]).returns(T::Array[String]) }
26
- def self.pack_paths(config_hash)
27
- specified_pack_paths = config_hash['pack_paths']
28
- if specified_pack_paths.nil?
29
- DEFAULT_PACK_PATHS.dup
30
- else
31
- Array(specified_pack_paths)
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,33 +0,0 @@
1
- # typed: strict
2
- # frozen_string_literal: true
3
-
4
- module FixtureHelper
5
- extend T::Sig
6
-
7
- sig { params(path: String, content: String).returns(String) }
8
- def write_file(path, content = '')
9
- pathname = Pathname.pwd.join(path)
10
- FileUtils.mkdir_p(pathname.dirname)
11
- pathname.write(content)
12
- path
13
- end
14
-
15
- sig do
16
- params(
17
- pack_name: String,
18
- config: T::Hash[T.untyped, T.untyped]
19
- ).void
20
- end
21
- def write_pack(
22
- pack_name,
23
- config = {}
24
- )
25
- path = Pathname.pwd.join(pack_name).join('package.yml')
26
- write_file(path.to_s, YAML.dump(config))
27
- end
28
-
29
- sig { params(path: String).void }
30
- def delete_app_file(path)
31
- File.delete(path)
32
- end
33
- end
@@ -1,21 +0,0 @@
1
- require_relative 'fixture_helper'
2
-
3
- RSpec.configure do |config|
4
- config.include FixtureHelper
5
-
6
- config.before do
7
- # We bust_cache always because each test may write its own packs
8
- Packs.bust_cache!
9
- end
10
-
11
- # Eventually, we could make this opt-in via metadata so someone can use this support without affecting all their tests.
12
- config.around do |example|
13
- prefix = [File.basename($0), Process.pid].join('-') # rubocop:disable Style/SpecialGlobalVars
14
- tmpdir = Dir.mktmpdir(prefix)
15
- Dir.chdir(tmpdir) do
16
- example.run
17
- end
18
- ensure
19
- FileUtils.rm_rf(tmpdir)
20
- end
21
- end