@@ -14,10 +14,9 @@ class TeamGlobs
1414 @@map_files_to_owners = { } # rubocop:disable Style/ClassVars
1515
1616 sig do
17- params ( files : T ::Array [ String ] )
18- . returns ( T ::Hash [ String , ::CodeTeams ::Team ] )
17+ returns ( T ::Hash [ String , ::CodeTeams ::Team ] )
1918 end
20- def map_files_to_owners ( files )
19+ def map_files_to_owners
2120 return @@map_files_to_owners if @@map_files_to_owners &.keys && @@map_files_to_owners . keys . count . positive?
2221
2322 @@map_files_to_owners = CodeTeams . all . each_with_object ( { } ) do |team , map | # rubocop:disable Style/ClassVars
@@ -26,6 +25,13 @@ def map_files_to_owners(files)
2625 map [ filename ] = team
2726 end
2827 end
28+
29+ # Remove anything that is unowned
30+ TeamPlugins ::Ownership . for ( team ) . unowned_globs . each do |glob |
31+ Dir . glob ( glob ) . each do |filename |
32+ map . delete ( filename )
33+ end
34+ end
2935 end
3036 end
3137
@@ -63,6 +69,12 @@ def find_overlapping_globs
6369 T . must ( mapped_files [ filename ] ) << MappingContext . new ( glob : glob , team : team )
6470 end
6571 end
72+ # Remove anything that is unowned
73+ TeamPlugins ::Ownership . for ( team ) . unowned_globs . each do |glob |
74+ Dir . glob ( glob ) . each do |filename |
75+ mapped_files . reject! { |key , value | key == filename && value . any? { |context | context . team == team } }
76+ end
77+ end
6678 end
6779
6880 overlaps = T . let ( [ ] , T ::Array [ GlobOverlap ] )
@@ -81,10 +93,10 @@ def find_overlapping_globs
8193
8294 sig do
8395 override . params ( file : String )
84- . returns ( T . nilable ( ::CodeTeams ::Team ) )
96+ . returns ( T . nilable ( ::CodeTeams ::Team ) )
8597 end
8698 def map_file_to_owner ( file )
87- map_files_to_owners ( [ file ] ) [ file ]
99+ map_files_to_owners [ file ]
88100 end
89101
90102 sig do
@@ -96,7 +108,7 @@ def update_cache(cache, files)
96108
97109 sig do
98110 override . params ( files : T ::Array [ String ] )
99- . returns ( T ::Hash [ String , ::CodeTeams ::Team ] )
111+ . returns ( T ::Hash [ String , ::CodeTeams ::Team ] )
100112 end
101113 def globs_to_owner ( files )
102114 CodeTeams . all . each_with_object ( { } ) do |team , map |
0 commit comments