code_ownership 1.34.1 → 1.35.0

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: 5b59593095e1b124a7e6bf7b929e7f2bc9ab61f65f5f0867fff88b6cf2b5e097
4
- data.tar.gz: 1dcef45327a13811dacbe44566dbddae71998145de1b9ca63df5814e848ca899
3
+ metadata.gz: 687d34f0d9ad8f7421b0a599904c697e10b34ec9f638a47f1e861b2e858bf091
4
+ data.tar.gz: b8beee01bb8e5ff88d73117a05ad8c99c04e3ee3a7434f1a92da0e15cc7839dd
5
5
  SHA512:
6
- metadata.gz: 05546e3fb45286c44cc7227675b01d747ada9ee9b5e8cb02ab692fe3b9e30558fd1d8cfbc6716fadbece2c4048d164fe9a00b940a80f7fdf4366dbf0043fcbdf
7
- data.tar.gz: '06584d3cb45cfb7ab7cd8e0e55a1a4b1c5db09e0dc022300f75f63714a2121f42301fe9bdbe11c1f5715909a7853d68060244be51925d0edb1fab0985b0112e5'
6
+ metadata.gz: c30fb93a5e634f648f00ab7269d0744cbb9dc120b3c472769a116e59066190560845ae8ee660750efb81c10d8c483373ffda8058d523ac50f16fa05266cf9e29
7
+ data.tar.gz: 1843017837ed962de655069fcb64d7d5121e72eb6375df14b8a7be8c35d6b9b55ba3e592bb9a240374964002ea65d1c7f87a0ddd6d565a1c74e4276c51bb56fb
data/README.md CHANGED
@@ -73,6 +73,12 @@ js_package_paths:
73
73
 
74
74
  This defaults `**/`, which makes it look for `package.json` files across your application.
75
75
 
76
+ > [!NOTE]
77
+ > Javscript package ownership does not respect `unowned_globs`. If you wish to disable usage of this feature you can set `js_package_paths` to an empty list.
78
+ ```yml
79
+ js_package_paths: []
80
+ ```
81
+
76
82
  ### Custom Ownership
77
83
  To enable custom ownership, you can inject your own custom classes into `code_ownership`.
78
84
  To do this, first create a class that adheres to the `CodeOwnership::Mapper` and/or `CodeOwnership::Validator` interface.
@@ -155,7 +161,7 @@ unowned_globs:
155
161
  - app/services/some_file2.rb
156
162
  - frontend/javascripts/**/__generated__/**/*
157
163
  ```
158
- You can call the validation function with the Ruby API
164
+ You can call the validation function with the Ruby API
159
165
  ```ruby
160
166
  CodeOwnership.validate!
161
167
  ```
@@ -11,6 +11,7 @@ module CodeOwnership
11
11
  const :unbuilt_gems_path, T.nilable(String)
12
12
  const :skip_codeowners_validation, T::Boolean
13
13
  const :raw_hash, T::Hash[T.untyped, T.untyped]
14
+ const :require_github_teams, T::Boolean
14
15
 
15
16
  sig { returns(Configuration) }
16
17
  def self.fetch
@@ -27,7 +28,8 @@ module CodeOwnership
27
28
  unowned_globs: config_hash.fetch('unowned_globs', []),
28
29
  js_package_paths: js_package_paths(config_hash),
29
30
  skip_codeowners_validation: config_hash.fetch('skip_codeowners_validation', false),
30
- raw_hash: config_hash
31
+ raw_hash: config_hash,
32
+ require_github_teams: config_hash.fetch('require_github_teams', false)
31
33
  )
32
34
  end
33
35
 
@@ -21,7 +21,7 @@ module CodeOwnership
21
21
 
22
22
  sig { override.params(teams: T::Array[CodeTeams::Team]).returns(T::Array[String]) }
23
23
  def self.validation_errors(teams)
24
- all_github_teams = teams.flat_map { |team| self.for(team).github.team }
24
+ all_github_teams = teams.flat_map { |team| self.for(team).github.team }.compact
25
25
 
26
26
  teams_used_more_than_once = all_github_teams.tally.select do |_team, count|
27
27
  count > 1
@@ -29,6 +29,18 @@ module CodeOwnership
29
29
 
30
30
  errors = T.let([], T::Array[String])
31
31
 
32
+ if require_github_teams?
33
+ missing_github_teams = teams.select { |team| self.for(team).github.team.nil? }
34
+
35
+ if missing_github_teams.any?
36
+ errors << <<~ERROR
37
+ The following teams are missing `github.team` entries:
38
+
39
+ #{missing_github_teams.map(&:config_yml).join("\n")}
40
+ ERROR
41
+ end
42
+ end
43
+
32
44
  if teams_used_more_than_once.any?
33
45
  errors << <<~ERROR
34
46
  The following teams are specified multiple times:
@@ -40,6 +52,11 @@ module CodeOwnership
40
52
 
41
53
  errors
42
54
  end
55
+
56
+ sig { returns(T::Boolean) }
57
+ def self.require_github_teams?
58
+ CodeOwnership.configuration.require_github_teams
59
+ end
43
60
  end
44
61
  end
45
62
  end
@@ -6,7 +6,7 @@ require 'set'
6
6
  require 'code_teams'
7
7
  require 'sorbet-runtime'
8
8
  require 'json'
9
- require 'packs'
9
+ require 'packs-specification'
10
10
  require 'code_ownership/mapper'
11
11
  require 'code_ownership/validator'
12
12
  require 'code_ownership/private'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_ownership
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.34.1
4
+ version: 1.35.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: 2023-08-08 00:00:00.000000000 Z
11
+ date: 2023-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: code_teams
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: packs
28
+ name: packs-specification
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="