code_ownership 1.32.19 → 1.33.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 994693da06866743ce4cf2fa3b6bee1df754ac26e10884c999f0c37c9b72c23c
4
- data.tar.gz: 5b2643e5ecd989f8ea15984a59b0b0a2522dbc614441228e10f7e25958141af0
3
+ metadata.gz: b47612a8dd5a036e2e0f12d5706a0f014884ca977ca0a3db9ee433b580330761
4
+ data.tar.gz: 769f104467ccfe6cf73f4eddf491064adbcafe09b9666136d1e3df79e26eb525
5
5
  SHA512:
6
- metadata.gz: e832b86888eb90bb0beaff6410565f20c9224029af7d434698238039422ca67a6e34a0629a4441ab428fe73dddfac2bf606200191c621836989bbf67daff05a6
7
- data.tar.gz: 2e5b208eb94ff9cc870e53d3673cc794f87af20f7d78c80a1493e3b9edfd2c2403285731b6b5b07292df5855ddf6e55c4f0b16d102bcb65c1dc6844ed39dfcf1
6
+ metadata.gz: 1f048953162a4d95d7c44df6fff4138f38b645d042db15bce56cb945eefa722cef616a92e2f9aeb7e1ab4fd76a6e335b6d8f67cc2ff013e076ddc16deb6e40d6
7
+ data.tar.gz: c0f981c11675470220d58e06b37c737c873482e9d4c83a19bdb3995e8ffd05a45a07528892acf405a324efc8e6687f5d2404740aa9c23de1ca6930115cbda238
data/README.md CHANGED
@@ -21,6 +21,15 @@ metadata:
21
21
  owner: Team
22
22
  ```
23
23
 
24
+ You can also define `owner` as a top-level key, e.g.
25
+ ```yml
26
+ enforce_dependency: true
27
+ enforce_privacy: true
28
+ owner: Team
29
+ ```
30
+
31
+ To do this, add `code_ownership` to the `require` key of your `packwerk.yml`. See https://github.com/Shopify/packwerk/blob/main/USAGE.md#loading-extensions for more information.
32
+
24
33
  ### Glob-Based Ownership
25
34
  In your team's configured YML (see [`code_teams`](https://github.com/rubyatscale/code_teams)), you can set `owned_globs` to be a glob of files your team owns. For example, in `my_team.yml`:
26
35
  ```yml
@@ -56,7 +56,7 @@ module CodeOwnership
56
56
 
57
57
  sig { params(package: Packs::Pack).returns(T.nilable(CodeTeams::Team)) }
58
58
  def owner_for_package(package)
59
- raw_owner_value = package.metadata['owner']
59
+ raw_owner_value = package.raw_hash['owner'] || package.metadata['owner']
60
60
  return nil if !raw_owner_value
61
61
 
62
62
  Private.find_team!(
@@ -0,0 +1,24 @@
1
+
2
+ # typed: strict
3
+ # frozen_string_literal: true
4
+
5
+ require 'packwerk'
6
+
7
+ module CodeOwnership
8
+ module Private
9
+ class PackOwnershipValidator
10
+ extend T::Sig
11
+ include Packwerk::Validator
12
+
13
+ sig { override.params(package_set: Packwerk::PackageSet, configuration: Packwerk::Configuration).returns(Result) }
14
+ def call(package_set, configuration)
15
+ Result.new(ok: true)
16
+ end
17
+
18
+ sig { override.returns(T::Array[String]) }
19
+ def permitted_keys
20
+ %w[owner]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -13,6 +13,10 @@ require 'code_ownership/private'
13
13
  require 'code_ownership/cli'
14
14
  require 'code_ownership/configuration'
15
15
 
16
+ if defined?(Packwerk)
17
+ require 'code_ownership/private/permit_pack_owner_top_level_key'
18
+ end
19
+
16
20
  module CodeOwnership
17
21
  extend self
18
22
  extend T::Sig
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_ownership
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.32.19
4
+ version: 1.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusto Engineers
@@ -122,6 +122,34 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: packwerk
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
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: railties
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
125
153
  description: A gem to help engineering teams declare ownership of code
126
154
  email:
127
155
  - dev@gusto.com
@@ -146,6 +174,7 @@ files:
146
174
  - lib/code_ownership/private/ownership_mappers/team_globs.rb
147
175
  - lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
148
176
  - lib/code_ownership/private/parse_js_packages.rb
177
+ - lib/code_ownership/private/permit_pack_owner_top_level_key.rb
149
178
  - lib/code_ownership/private/team_plugins/github.rb
150
179
  - lib/code_ownership/private/team_plugins/ownership.rb
151
180
  - lib/code_ownership/private/validations/files_have_owners.rb