code_ownership 1.32.19 → 1.33.1

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: db417ae94561fc36906b23a65105d40bb48c6a084ae79fa33f49a84a903344f1
4
+ data.tar.gz: b0ba72d4cfd3f5c34e90352f1c009fd3e9093cea73f6a7b5044e6ae4632040c7
5
5
  SHA512:
6
- metadata.gz: e832b86888eb90bb0beaff6410565f20c9224029af7d434698238039422ca67a6e34a0629a4441ab428fe73dddfac2bf606200191c621836989bbf67daff05a6
7
- data.tar.gz: 2e5b208eb94ff9cc870e53d3673cc794f87af20f7d78c80a1493e3b9edfd2c2403285731b6b5b07292df5855ddf6e55c4f0b16d102bcb65c1dc6844ed39dfcf1
6
+ metadata.gz: 24b6290597a69fd80b62a70a0268dc559a8704f12f67800aa5640ed71d3af6c57b551f7fc757ea57a92503cc5cca89556872b13159bf13dfaef06b868dd51e09
7
+ data.tar.gz: 28ad95acd3dcba5b2b94577a6b8355bd4d78b044cd96c7c608a9ece82a89bd4c0792143503b29d4a3ca81a0b0c71fb57427c3c1ca684a0ba31cbc0a5cb4f541b
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
@@ -70,6 +70,8 @@ module CodeOwnership
70
70
  else
71
71
  nil
72
72
  end
73
+ rescue NameError
74
+ nil
73
75
  end
74
76
 
75
77
  #
@@ -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,14 +1,14 @@
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.1
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-05-15 00:00:00.000000000 Z
11
+ date: 2023-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: code_teams
@@ -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