code_ownership 1.38.0 → 1.38.2

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: 7883f0d73587e099adf43101b91f0a2f296912cfa3e994e2f1c70472de918e4b
4
- data.tar.gz: 1e11b8c1ce41986fa40325b3edf10369b00a7ed8a42f47e2ed4fe9694f565642
3
+ metadata.gz: b40aef85c83e70ad2c2a8ba45030b3e894b184ec71e897443d47b859343a8636
4
+ data.tar.gz: 27741ae85077282dca91f42f274325d66ee25b8ed01eaab733aab581f23e6e4e
5
5
  SHA512:
6
- metadata.gz: 5a381fc3a9867de019b70ada03aca768c427b05198449c4d6478f245f79fefd8e2bd56ab5df06fbe62577d12ce6f6bf80a6509f8347f65831ab8251075b1047f
7
- data.tar.gz: 5ea28b28bbf41f5620fbf07d6d4083f8dcfea577648612fd8f05d4e128007ff73d6cec2e1a433ef84cf35a1e4b2c8b4a2d4fca0a8bbaeafedca948be293aaaba
6
+ metadata.gz: 8d8c2765433571d6407ec67608554fb04dc9b14d84948ddf9b227874aca628e3fd4e927c6154a3d41ede65bdd8628f522e77c089fab9727ec6860339a03673e3
7
+ data.tar.gz: 0c8eeb737cbbcce93210c43f0f6c21d846761fa94daa97243796747db3343bf6fd40c033cd3337a628716dd91714354ed5d2af1a2eda1ea29ea716f9ef0687e7
@@ -73,7 +73,26 @@ module CodeOwnership
73
73
 
74
74
  next if ownership_entries.none?
75
75
 
76
- codeowners_file_lines += ['', "# #{mapper_description}", *ownership_entries.sort]
76
+ # When we have a special character at the beginning of a folder name, then this character
77
+ # may be prioritized over *. However, we want the most specific folder to be listed last
78
+ # in the CODEOWNERS file, so we should prioritize any character above an asterisk in the
79
+ # same position.
80
+ if mapper_description == OwnershipMappers::FileAnnotations::DESCRIPTION
81
+ # individually owned files definitely won't have globs so we don't need to do special sorting
82
+ sorted_ownership_entries = ownership_entries.sort
83
+ else
84
+ sorted_ownership_entries = ownership_entries.sort do |entry1, entry2|
85
+ if entry2.start_with?(entry1.split('**').first)
86
+ -1
87
+ elsif entry1.start_with?(entry2.split('**').first)
88
+ 1
89
+ else
90
+ entry1 <=> entry2
91
+ end
92
+ end
93
+ end
94
+
95
+ codeowners_file_lines += ['', "# #{mapper_description}", *sorted_ownership_entries]
77
96
  end
78
97
 
79
98
  [
@@ -136,13 +136,23 @@ module CodeOwnership
136
136
  #
137
137
  # ./app/controllers/some_controller.rb:43:in `block (3 levels) in create'
138
138
  #
139
- backtrace_line = %r{\A(#{Pathname.pwd}/|\./)?
140
- (?<file>.+) # Matches 'app/controllers/some_controller.rb'
141
- :
142
- (?<line>\d+) # Matches '43'
143
- :in\s
144
- `(?<function>.*)' # Matches "`block (3 levels) in create'"
145
- \z}x
139
+ backtrace_line = if RUBY_VERSION >= '3.4.0'
140
+ %r{\A(#{Pathname.pwd}/|\./)?
141
+ (?<file>.+) # Matches 'app/controllers/some_controller.rb'
142
+ :
143
+ (?<line>\d+) # Matches '43'
144
+ :in\s
145
+ '(?<function>.*)' # Matches "`block (3 levels) in create'"
146
+ \z}x
147
+ else
148
+ %r{\A(#{Pathname.pwd}/|\./)?
149
+ (?<file>.+) # Matches 'app/controllers/some_controller.rb'
150
+ :
151
+ (?<line>\d+) # Matches '43'
152
+ :in\s
153
+ `(?<function>.*)' # Matches "`block (3 levels) in create'"
154
+ \z}x
155
+ end
146
156
 
147
157
  backtrace.lazy.filter_map do |line|
148
158
  match = line.match(backtrace_line)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_ownership
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.38.0
4
+ version: 1.38.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusto Engineers
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-06 00:00:00.000000000 Z
10
+ date: 2025-01-16 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: code_teams
@@ -205,7 +204,6 @@ metadata:
205
204
  source_code_uri: https://github.com/rubyatscale/code_ownership
206
205
  changelog_uri: https://github.com/rubyatscale/code_ownership/releases
207
206
  allowed_push_host: https://rubygems.org
208
- post_install_message:
209
207
  rdoc_options: []
210
208
  require_paths:
211
209
  - lib
@@ -220,8 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
218
  - !ruby/object:Gem::Version
221
219
  version: '0'
222
220
  requirements: []
223
- rubygems_version: 3.5.22
224
- signing_key:
221
+ rubygems_version: 3.6.2
225
222
  specification_version: 4
226
223
  summary: A gem to help engineering teams declare ownership of code
227
224
  test_files: []