@@ -12,8 +12,8 @@ module TeamFinder
1212
1313 requires_ancestor { Kernel }
1414
15- sig { params ( file_path : String ) . returns ( T . nilable ( CodeTeams ::Team ) ) }
16- def for_file ( file_path )
15+ sig { params ( file_path : String , allow_raise : T :: Boolean ) . returns ( T . nilable ( CodeTeams ::Team ) ) }
16+ def for_file ( file_path , allow_raise : false )
1717 return nil if file_path . start_with? ( './' )
1818
1919 return FilePathTeamCache . get ( file_path ) if FilePathTeamCache . cached? ( file_path )
@@ -24,17 +24,17 @@ def for_file(file_path)
2424 if result [ :team_name ] . nil?
2525 FilePathTeamCache . set ( file_path , nil )
2626 else
27- FilePathTeamCache . set ( file_path , T . let ( find_team! ( T . must ( result [ :team_name ] ) ) , T . nilable ( CodeTeams ::Team ) ) )
27+ FilePathTeamCache . set ( file_path , T . let ( find_team! ( T . must ( result [ :team_name ] ) , allow_raise : allow_raise ) , T . nilable ( CodeTeams ::Team ) ) )
2828 end
2929
3030 FilePathTeamCache . get ( file_path )
3131 end
3232
33- sig { params ( files : T ::Array [ String ] ) . returns ( T ::Hash [ String , T . nilable ( CodeTeams ::Team ) ] ) }
34- def teams_for_files ( files )
33+ sig { params ( files : T ::Array [ String ] , allow_raise : T :: Boolean ) . returns ( T ::Hash [ String , T . nilable ( CodeTeams ::Team ) ] ) }
34+ def teams_for_files ( files , allow_raise : false )
3535 ::RustCodeOwners . teams_for_files ( files ) . each_with_object ( { } ) do |path_team , hash |
3636 file_path , team = path_team
37- found_team = team ? CodeTeams . find ( team [ :team_name ] ) : nil
37+ found_team = team ? find_team! ( team [ :team_name ] , allow_raise : allow_raise ) : nil
3838 FilePathTeamCache . set ( file_path , found_team )
3939 hash [ file_path ] = found_team
4040 end
@@ -53,7 +53,7 @@ def for_package(package)
5353 owner_name = package . raw_hash [ 'owner' ] || package . metadata [ 'owner' ]
5454 return nil if owner_name . nil?
5555
56- find_team! ( owner_name )
56+ find_team! ( owner_name , allow_raise : true )
5757 end
5858
5959 sig { params ( backtrace : T . nilable ( T ::Array [ String ] ) , excluded_teams : T ::Array [ ::CodeTeams ::Team ] ) . returns ( T . nilable ( ::CodeTeams ::Team ) ) }
@@ -73,10 +73,14 @@ def first_owned_file_for_backtrace(backtrace, excluded_teams: [])
7373 nil
7474 end
7575
76- sig { params ( team_name : String ) . returns ( CodeTeams ::Team ) }
77- def find_team! ( team_name )
78- CodeTeams . find ( team_name ) ||
76+ sig { params ( team_name : String , allow_raise : T ::Boolean ) . returns ( T . nilable ( CodeTeams ::Team ) ) }
77+ def find_team! ( team_name , allow_raise : false )
78+ team = CodeTeams . find ( team_name )
79+ if team . nil? && allow_raise
7980 raise ( StandardError , "Could not find team with name: `#{ team_name } `. Make sure the team is one of `#{ CodeTeams . all . map ( &:name ) . sort } `" )
81+ end
82+
83+ team
8084 end
8185
8286 private_class_method ( :find_team! )
0 commit comments