code_ownership 1.38.0 → 1.38.2

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: 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: []