@@ -15,6 +15,7 @@ use futures::stream::{self, StreamExt};
15
15
use indicatif:: { HumanCount , HumanDuration , ProgressBar , ProgressIterator } ;
16
16
use lazy_static:: lazy_static;
17
17
use reqwest:: Client ;
18
+ use std:: collections:: HashSet ;
18
19
use std:: fs:: { create_dir, read_dir, read_to_string, remove_dir, write} ;
19
20
use std:: io:: { stdin, Read } ;
20
21
use std:: path:: { Path , PathBuf } ;
@@ -268,7 +269,7 @@ async fn update(cfg: &mut ConfigFile, modify: bool, v: Verbosity, client: Client
268
269
let bar_or_info = v. bar ( ) || v. info ( ) ;
269
270
let ( tx, rx) = bar_or_info. then ( channel) . unzip ( ) ;
270
271
let buf = stream:: iter ( packages)
271
- . map ( |mut p| async {
272
+ . map ( |mut p| {
272
273
let p_name = p. to_string ( ) ;
273
274
let tx = if bar_or_info { tx. clone ( ) } else { None } ;
274
275
let client = client. clone ( ) ;
@@ -287,7 +288,6 @@ async fn update(cfg: &mut ConfigFile, modify: bool, v: Verbosity, client: Client
287
288
tx. unwrap ( ) . send ( Status :: Finished ( p_name. clone ( ) ) ) . unwrap ( ) ;
288
289
}
289
290
}
290
- . await ;
291
291
} )
292
292
. buffer_unordered ( PARALLEL ) ;
293
293
// use to test the difference in speed
@@ -354,11 +354,12 @@ fn recursive_delete_empty(dir: String) -> std::io::Result<()> {
354
354
}
355
355
356
356
fn purge ( cfg : & mut ConfigFile , v : Verbosity ) {
357
- let packages = cfg
358
- . collect ( )
359
- . into_iter ( )
360
- . filter ( |p| p. is_installed ( ) )
361
- . collect :: < Vec < Package > > ( ) ;
357
+ let mut packages = HashSet :: new ( ) ;
358
+ cfg. for_each ( |p| {
359
+ if p. is_installed ( ) {
360
+ packages. insert ( p. clone ( ) ) ;
361
+ }
362
+ } ) ;
362
363
if packages. is_empty ( ) {
363
364
if cfg. packages . is_empty ( ) {
364
365
panic ! ( "No packages configured (modify the \" godot.package\" file to add packages)" )
0 commit comments