File tree Expand file tree Collapse file tree 1 file changed +12
-9
lines changed
Expand file tree Collapse file tree 1 file changed +12
-9
lines changed Original file line number Diff line number Diff line change @@ -77,17 +77,20 @@ impl<'a> PackageRepository<'a> {
7777 let repology = serde_json:: to_string ( & package. repology ) . unwrap ( ) ;
7878 let replaces = serde_json:: to_string ( & package. replaces ) . unwrap ( ) ;
7979
80- let provides = package. provides . clone ( ) . map ( |vec| {
81- vec. into_iter ( )
80+ const PROVIDES_DELIMITERS : & [ & str ] = & [ "==" , "=>" , ":" ] ;
81+
82+ let provides = package. provides . as_ref ( ) . map ( |vec| {
83+ vec. iter ( )
8284 . filter_map ( |p| {
83- let matches = p == package. pkg_name
84- || [ "==" , "=>" , ":" ]
85- . iter ( )
86- . find_map ( |& delim| p. split_once ( delim) )
87- . is_some_and ( |( first, _) | first == package. pkg_name ) ;
88- matches. then ( || PackageProvide :: from_string ( & p) )
85+ let include = * p == package. pkg_name
86+ || matches ! ( package. recurse_provides, Some ( true ) )
87+ || p. strip_prefix ( & package. pkg_name ) . is_some_and ( |rest| {
88+ PROVIDES_DELIMITERS . iter ( ) . any ( |d| rest. starts_with ( d) )
89+ } ) ;
90+
91+ include. then ( || PackageProvide :: from_string ( p) )
8992 } )
90- . collect :: < Vec < PackageProvide > > ( )
93+ . collect :: < Vec < _ > > ( )
9194 } ) ;
9295 let provides = serde_json:: to_string ( & provides) . unwrap ( ) ;
9396 let inserted = self . statements . package_insert . execute ( params ! [
You can’t perform that action at this time.
0 commit comments