@@ -2,7 +2,7 @@ use std::{collections::HashMap, io::Read, path::PathBuf};
22
33use anyhow:: { Context , bail} ;
44use bytesize:: ByteSize ;
5- use common:: Package ;
5+ use common:: { Delta , Package } ;
66use http:: StatusCode ;
77use indicatif:: { ProgressBar , ProgressStyle } ;
88use itertools:: Itertools ;
@@ -63,11 +63,13 @@ pub(crate) async fn do_boring_download(
6363 Ok ( size)
6464}
6565
66+ type DeltaUpgradeCandidate = ( Url , Delta , Mmap , u64 ) ;
67+
6668pub ( crate ) fn find_deltaupgrade_candidates (
6769 _global : & crate :: GlobalState ,
6870 blacklist : & [ Str ] ,
6971 _fuz : bool ,
70- ) -> Result < ( Vec < ( String , Package , Package , Mmap , u64 ) > , Vec < Url > ) , anyhow:: Error > {
72+ ) -> Result < ( Vec < DeltaUpgradeCandidate > , Vec < Url > ) , anyhow:: Error > {
7173 let upgrades = libalpm_rs:: upgrade_urls ( & [ "core" , "extra" , "multilib" ] ) ;
7274
7375 let mut direct_downloads = Vec :: new ( ) ;
@@ -81,7 +83,7 @@ pub(crate) fn find_deltaupgrade_candidates(
8183 }
8284 let i = old. i . borrow ( ) ;
8385 let old_name = old. name . r ( & i) ;
84- if ( & blacklist) . into_iter ( ) . any ( |e| * * e == * old_name) {
86+ if blacklist. iter ( ) . any ( |e| * * e == * old_name) {
8587 info ! ( "{old_name} is blacklisted, skipping" ) ;
8688 continue ;
8789 }
@@ -116,20 +118,20 @@ pub(crate) fn find_deltaupgrade_candidates(
116118 let new_filename = new. filename . unwrap ( ) . r ( & i) ;
117119 let newpkg = Package :: try_from ( new_filename) ?;
118120
119- deltas. push ( ( url, newpkg , oldpkg , oldfile, ( dec_size as u64 ) ) ) ;
121+ deltas. push ( ( Url :: parse ( & url) ? , Delta :: try_from ( ( oldpkg , newpkg ) ) ? , oldfile, dec_size) ) ;
120122 }
121123 Err ( e) => {
122124 if e. kind ( ) == std:: io:: ErrorKind :: NotFound {
123125 debug ! ( "direct download {old_name}-{old_version}" ) ;
124126 //TODO: re-add fuzzy logic
125127 direct_downloads. push ( Url :: parse ( & url) ?) ;
126128 } else {
127- return Err ( e) ?;
129+ Err ( e) ?;
128130 }
129131 }
130132 }
131133 }
132- return Ok ( ( deltas, direct_downloads) ) ;
134+ Ok ( ( deltas, direct_downloads) )
133135}
134136
135137pub async fn sync_db ( global : crate :: GlobalState , server : Url , name : Str ) -> anyhow:: Result < ( ) > {
@@ -245,11 +247,11 @@ pub(crate) fn calc_stats(count: usize) -> std::io::Result<()> {
245247 let filename: String = filename. into_string ( ) . unwrap ( ) ;
246248 if filename. ends_with ( ".delta" ) {
247249 let ( _old, new) = filename. rsplit_once ( ":to:" ) . unwrap ( ) ;
248- let pkg = Package :: try_from ( & * new) . unwrap ( ) ;
250+ let pkg = Package :: try_from ( new) . unwrap ( ) ;
249251 let ( name, version, arch, trailer) = pkg. destructure ( ) ;
250252 assert_eq ! ( & * trailer, "delta" ) ;
251253 let len = line. metadata ( ) ?. len ( ) ;
252- deltas. insert ( ( name. into ( ) , version. into ( ) , arch. into ( ) ) , len) ;
254+ deltas. insert ( ( name, version, arch) , len) ;
253255 } else if filename. ends_with ( ".pkg.tar.zst" ) {
254256 let ( name, version, arch, _trailer) = Package :: try_from ( filename. as_str ( ) )
255257 . expect ( "weird pkg file name" )
@@ -278,10 +280,9 @@ pub(crate) fn calc_stats(count: usize) -> std::io::Result<()> {
278280 }
279281 let mut unmatched = 0 ;
280282 for ( ( name, version, arch) , len) in pkgs. drain ( ) {
281- if log:: log_enabled!( log:: Level :: Trace ) {
282- if !deltas. contains_key ( & ( name. clone ( ) , version. clone ( ) , arch. clone ( ) ) ) {
283- trace ! ( "pkg: {name} {version} {arch} unmatched" ) ;
284- }
283+ if log:: log_enabled!( log:: Level :: Trace ) && !deltas. contains_key ( & ( name. clone ( ) , version. clone ( ) , arch. clone ( ) ) )
284+ {
285+ trace ! ( "pkg: {name} {version} {arch} unmatched" ) ;
285286 }
286287 if let Some ( ( ( name, _version, _arch) , dlen) ) = deltas. remove_entry ( & ( name, version, arch) ) {
287288 pairs
0 commit comments