packs 0.0.35 → 0.0.36

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29b2c810b50fb84aee08f79e49a7d6710b7bf74f8421efd2ce36a12c61bb5cb5
4
- data.tar.gz: a183ed44f957f94de6736e0272193e873da6ca7d177a6cbad491682fc73596a8
3
+ metadata.gz: c0a49abad749c63c73c0bbb9cfa0ac4d75962af3c0f5b22cfb8173906f18310e
4
+ data.tar.gz: e9757c94ee7866e9ee7daaeec189166aa7a07b47baa18f93eff239552a5e94ab
5
5
  SHA512:
6
- metadata.gz: 5587b5c11a6ffcc20213ddf8c7fc5fd1efe2d82f6d461e70d38c82fa55151956225388f45313cd2a6cda88bc839a6350ee821a3afdb942929f130ef2b5c5165a
7
- data.tar.gz: 3c789067155a3ff7a76eade07734f3acf884fecacea1472a1755afcba7f833bef370dd4f359b2761eeceb907615c2cbbf728bdfc0aa61056b17e9f2cb39593e0
6
+ metadata.gz: a74621a2a3346a352256086cb534c1ef6038beac481af3559409682ce2198c4d90e16b4d276ebe271fc93d6a9d7a2260642bf0aa2b76de22cd8bd4d9f11054a1
7
+ data.tar.gz: 93dc9e6df47b7150fd1c2ef1ddd312931b154934d83ae8060307ef17a6a146858b98b33f6961863a3c23348b0aa398f0c188098e6bdf5dc5c6c70547b97fc843
data/README.md CHANGED
@@ -21,7 +21,7 @@ The rest of the [rubyatscale](https://github.com/rubyatscale) ecosystem is inten
21
21
  Here are some example integrations with `packs`:
22
22
  - [`packs-specification`](https://github.com/rubyatscale/packs-specification) is a low-dependency gem that allows your production environment to query simple information about packs
23
23
  - [`packs-rails`](https://github.com/rubyatscale/packs-rails) can be used to integrate `packs` into your `rails` application
24
- - [`rubocop-packs`](https://github.com/rubyatscale/rubocop-packs) contains cops to improve boundaries around `packs`
24
+ - [`rubocop-packs`](https://github.com/rubyatscale/rubocop-packs) contains cops to improve boundaries around `packs`
25
25
  - [`packwerk`](https://github.com/Shopify/packwerk) and [`packwerk-extensions`](https://github.com/rubyatscale/packwerk-extensions) help you describe and constrain your package graph in terms of dependencies between packs and pack public API
26
26
  - [`code_ownership`](https://github.com/rubyatscale/code_ownership) gives your application the capability to determine the owner of a pack
27
27
  - [`pack_stats`](https://github.com/rubyatscale/pack_stats) makes it easy to send metrics about pack adoption and modularization to your favorite metrics provider, such as DataDog (which has built-in support).
@@ -77,7 +77,7 @@ If no pack name is passed in, this will list out violations across all packs.
77
77
  ## Make files or directories public API
78
78
  `bin/packs make_public path/to/file.rb path/to/directory`
79
79
 
80
- This moves a file or directory to public API (that is -- the `app/public` folder).
80
+ This moves a file or directory to public API (either the `app/public` folder or the pack's specified public path).
81
81
 
82
82
  Make sure there are no spaces between the comma-separated list of paths of directories.
83
83
 
data/lib/packs/cli.rb CHANGED
@@ -68,7 +68,7 @@ module Packs
68
68
 
69
69
  desc 'make_public path/to/file.rb path/to/directory', 'Make files or directories public API'
70
70
  long_desc <<~LONG_DESC
71
- This moves a file or directory to public API (that is -- the `app/public` folder).
71
+ This moves a file or directory to public API (either the `#{ParsePackwerk::DEFAULT_PUBLIC_PATH}` folder or the pack's specified public path).
72
72
 
73
73
  Make sure there are no spaces between the comma-separated list of paths of directories.
74
74
  LONG_DESC
data/lib/packs/private.rb CHANGED
@@ -348,7 +348,7 @@ module Packs
348
348
 
349
349
  sig { params(package: ParsePackwerk::Package).void }
350
350
  def self.add_public_directory(package)
351
- public_directory = package.directory.join('app/public')
351
+ public_directory = package.directory.join(package.public_path)
352
352
 
353
353
  if public_directory.glob('**/**.rb').none?
354
354
  FileUtils.mkdir_p(public_directory)
@@ -376,8 +376,9 @@ module Packs
376
376
  ).returns(ParsePackwerk::Package)
377
377
  end
378
378
  def self.create_pack_if_not_exists!(pack_name:, enforce_privacy:, enforce_dependencies:, team: nil)
379
- if PERMITTED_PACK_LOCATIONS.none? { |permitted_location| pack_name.start_with?(permitted_location) }
380
- raise StandardError, "Packs only supports packages in the the following directories: #{PERMITTED_PACK_LOCATIONS.inspect}. Please make sure to pass in the name of the pack including the full directory path, e.g. `packs/my_pack`."
379
+ allowed_locations = Packs::Specification.config.pack_paths
380
+ if allowed_locations.none? { |location| File.fnmatch(location, pack_name) }
381
+ raise StandardError, "Packs only supports packages in the the following directories: #{allowed_locations}. Please make sure to pass in the name of the pack including the full directory path, e.g. `packs/my_pack`."
381
382
  end
382
383
 
383
384
  existing_package = ParsePackwerk.all.find { |p| p.name == pack_name }
@@ -512,7 +513,10 @@ module Packs
512
513
  outbound: {}
513
514
  }
514
515
 
516
+ package_by_name = {}
517
+
515
518
  ParsePackwerk.all.each do |p|
519
+ package_by_name[p.name] = p
516
520
  p.violations.each do |violation|
517
521
  violations[:outbound][p.name] ||= []
518
522
  violations[:outbound][p.name] << violation
@@ -557,7 +561,7 @@ module Packs
557
561
  pack_name: pack.name,
558
562
  owner: owner.nil? ? 'No one' : owner.name,
559
563
  size: pack.relative_path.glob('**/*.rb').count,
560
- public_api: pack.relative_path.join('app/public')
564
+ public_api: pack.relative_path.join(package_by_name[pack.name].public_path)
561
565
  }
562
566
 
563
567
  row.delete(:date) unless include_date
@@ -23,7 +23,7 @@ module Packs
23
23
 
24
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
- 3) Expose public API in #{pack_name}/app/public. Try `bin/packs make_public #{pack_name}/path/to/file.rb`
26
+ 3) Expose public API in #{pack_name}/#{ParsePackwerk::DEFAULT_PUBLIC_PATH}. Try `bin/packs make_public #{pack_name}/path/to/file.rb`
27
27
 
28
28
  4) Update your readme at #{pack_name}/README.md
29
29
  MSG
@@ -45,7 +45,7 @@ module Packs
45
45
 
46
46
  2) Touch base with each team who owns files involved in this move
47
47
 
48
- 3) Expose public API in #{pack_name}/app/public. Try `bin/packs make_public #{pack_name}/path/to/file.rb`
48
+ 3) Expose public API in #{pack_name}/#{ParsePackwerk::DEFAULT_PUBLIC_PATH}. Try `bin/packs make_public #{pack_name}/path/to/file.rb`
49
49
 
50
50
  4) Update your readme at #{pack_name}/README.md
51
51
  MSG
@@ -136,7 +136,7 @@ module Packs
136
136
  If you're the author, please consider replacing this file with a README.md, which may contain:
137
137
  - What your pack is and does
138
138
  - How you expect people to use your pack
139
- - Example usage of your pack's public API (which lives in `#{pack_name}/app/public`)
139
+ - Example usage of your pack's public API (which lives in `#{pack_name}/#{ParsePackwerk::DEFAULT_PUBLIC_PATH}`)
140
140
  - Limitations, risks, and important considerations of usage
141
141
  - How to get in touch with eng and other stakeholders for questions or issues pertaining to this pack (note: it is recommended to add ownership in `#{pack_name}/package.yml` under the `owner` metadata key)
142
142
  - What SLAs/SLOs (service level agreements/objectives), if any, your package provides
@@ -157,7 +157,7 @@ module Packs
157
157
  Pass in a limit to display more or less, e.g. `bin/packs list_top_violations #{type} #{pack_name} -l 1000`
158
158
 
159
159
  This script is intended to help you find which of YOUR pack's private classes, constants, or modules other packs are using the most.
160
- Anything not in pack_name/app/public is considered private API.
160
+ Anything not in pack_name/#{ParsePackwerk::DEFAULT_PUBLIC_PATH} is considered private API.
161
161
  PACK_CONTENT
162
162
  else
163
163
  <<~PACK_CONTENT
@@ -165,7 +165,7 @@ module Packs
165
165
  Pass in a limit to display more or less, e.g. `bin/packs list_top_violations #{type} #{pack_name} -l 1000`
166
166
 
167
167
  This script is intended to help you find which of YOUR pack's private classes, constants, or modules other packs are using the most.
168
- Anything not in #{pack_name}/app/public is considered private API.
168
+ Anything not in #{pack_name}/#{ParsePackwerk::DEFAULT_PUBLIC_PATH} is considered private API.
169
169
  PACK_CONTENT
170
170
  end
171
171
  end
data/lib/packs.rb CHANGED
@@ -25,12 +25,6 @@ require 'packs/cli'
25
25
  module Packs
26
26
  extend T::Sig
27
27
 
28
- PERMITTED_PACK_LOCATIONS = T.let(%w[
29
- gems
30
- components
31
- packs
32
- ], T::Array[String])
33
-
34
28
  sig { void }
35
29
  def self.start_interactive_mode!
36
30
  Private::InteractiveCli.start!
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.35
4
+ version: 0.0.36
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-24 00:00:00.000000000 Z
11
+ date: 2023-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: code_ownership