packs 0.0.35 → 0.0.36

Sign up to get free protection for your applications and to get access to all the features.
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