code_ownership 1.32.19 → 1.33.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: 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