Skip to content

Commit b6b9748

Browse files
committed
use a hashset
1 parent 1c65764 commit b6b9748

File tree

5 files changed

+17
-35
lines changed

5 files changed

+17
-35
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "godot-package-manager"
3-
version = "1.3.1"
3+
version = "1.3.2"
44
edition = "2021"
55
authors = ["bendn <[email protected]>"]
66
description = "A package manager for godot"

godot.lock

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1 @@
1-
[
2-
{
3-
"name": "@bendn/gdcli",
4-
"tarball": "https://registry.npmjs.org/@bendn/gdcli/-/gdcli-1.2.5.tgz",
5-
"version": "1.2.5"
6-
},
7-
{
8-
"name": "@bendn/splitter",
9-
"tarball": "https://registry.npmjs.org/@bendn/splitter/-/splitter-1.0.6.tgz",
10-
"version": "1.0.6"
11-
},
12-
{
13-
"name": "@bendn/stockfish.gd",
14-
"tarball": "https://registry.npmjs.org/@bendn/stockfish.gd/-/stockfish.gd-1.2.6.tgz",
15-
"version": "1.2.6"
16-
},
17-
{
18-
"name": "@bendn/test",
19-
"tarball": "https://registry.npmjs.org/@bendn/test/-/test-2.0.10.tgz",
20-
"version": "2.0.10"
21-
}
22-
]
1+
[]

src/config_file.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use anyhow::{Context, Result};
55
use console::style;
66
use reqwest::Client;
77
use serde::{Deserialize, Serialize};
8-
use std::collections::HashMap;
8+
use std::collections::{HashMap, HashSet};
99
use std::sync::{Arc, Mutex};
1010

1111
pub type Cache = Arc<Mutex<HashMap<String, HashMap<String, Package>>>>;
@@ -172,9 +172,11 @@ impl ConfigFile {
172172

173173
/// Collect all the packages, and their dependencys.
174174
/// Uses clones, because I wasn't able to get references to work
175-
pub fn collect(&mut self) -> Vec<Package> {
176-
let mut pkgs: Vec<Package> = vec![];
177-
self.for_each(|p| pkgs.push(p.clone()));
175+
pub fn collect(&mut self) -> HashSet<Package> {
176+
let mut pkgs: HashSet<Package> = HashSet::new();
177+
self.for_each(|p| {
178+
pkgs.insert(p.clone());
179+
});
178180
pkgs
179181
}
180182
}

src/main.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use futures::stream::{self, StreamExt};
1515
use indicatif::{HumanCount, HumanDuration, ProgressBar, ProgressIterator};
1616
use lazy_static::lazy_static;
1717
use reqwest::Client;
18+
use std::collections::HashSet;
1819
use std::fs::{create_dir, read_dir, read_to_string, remove_dir, write};
1920
use std::io::{stdin, Read};
2021
use std::path::{Path, PathBuf};
@@ -268,7 +269,7 @@ async fn update(cfg: &mut ConfigFile, modify: bool, v: Verbosity, client: Client
268269
let bar_or_info = v.bar() || v.info();
269270
let (tx, rx) = bar_or_info.then(channel).unzip();
270271
let buf = stream::iter(packages)
271-
.map(|mut p| async {
272+
.map(|mut p| {
272273
let p_name = p.to_string();
273274
let tx = if bar_or_info { tx.clone() } else { None };
274275
let client = client.clone();
@@ -287,7 +288,6 @@ async fn update(cfg: &mut ConfigFile, modify: bool, v: Verbosity, client: Client
287288
tx.unwrap().send(Status::Finished(p_name.clone())).unwrap();
288289
}
289290
}
290-
.await;
291291
})
292292
.buffer_unordered(PARALLEL);
293293
// use to test the difference in speed
@@ -354,11 +354,12 @@ fn recursive_delete_empty(dir: String) -> std::io::Result<()> {
354354
}
355355

356356
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+
});
362363
if packages.is_empty() {
363364
if cfg.packages.is_empty() {
364365
panic!("No packages configured (modify the \"godot.package\" file to add packages)")

src/package/parsing.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ impl From<ParsedPackument> for Packument {
157157
fn from(val: ParsedPackument) -> Self {
158158
let mut versions: Vec<ParsedManifest> = val.versions.into_values().collect();
159159
// sort newest first (really badly)
160-
versions.sort_by(|a, b| {
160+
versions.sort_unstable_by(|a, b| {
161161
Version::new(&b.version)
162162
.parse()
163163
.unwrap()

0 commit comments

Comments
 (0)