Switched to using a BTreeMap instead of a HashMap to preserve toml ordering

This commit is contained in:
Warren Hood 2024-09-01 11:53:38 +02:00
parent 1ead48cbc2
commit c216873393
5 changed files with 9 additions and 10 deletions

1
Cargo.lock generated
View file

@ -3710,6 +3710,7 @@ version = "0.8.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
dependencies = [
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",

View file

@ -16,4 +16,4 @@ serde = { version = "1.0.207", features = ["derive"] }
sha2 = "0.10.8"
tempfile = "3.12.0"
tokio = { version = "1.39.2", features = ["full"] }
toml = "0.8.19"
toml = { version = "0.8.19", features = ["preserve_order"] }

View file

@ -2,7 +2,7 @@ use crate::mod_meta::{ModMeta, ModProvider};
use anyhow::Result;
use serde::{Deserialize, Serialize};
use std::{
collections::{HashMap, HashSet},
collections::{BTreeMap, HashSet},
path::{Path, PathBuf},
};
@ -41,7 +41,7 @@ pub struct ModpackMeta {
pub pack_name: String,
pub mc_version: String,
pub modloader: ModLoader,
pub mods: HashMap<String, ModMeta>,
pub mods: BTreeMap<String, ModMeta>,
pub default_providers: Vec<ModProvider>,
pub forbidden_mods: HashSet<String>,
}
@ -56,7 +56,7 @@ impl ModpackMeta {
}
}
pub fn iter_mods(&self) -> std::collections::hash_map::Values<String, ModMeta> {
pub fn iter_mods(&self) -> std::collections::btree_map::Values<String, ModMeta> {
self.mods.values().into_iter()
}

View file

@ -1,8 +1,7 @@
use anyhow::Result;
use serde::{Deserialize, Serialize};
use std::{
collections::HashMap,
error::Error,
collections::BTreeMap,
fmt::Display,
path::{Path, PathBuf},
str::FromStr,
@ -80,7 +79,7 @@ impl Profile {
/// User data and configs for the modpack manager
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Data {
profiles: HashMap<String, Profile>,
profiles: BTreeMap<String, Profile>,
}
impl Default for Data {

View file

@ -2,8 +2,7 @@ use anyhow::Result;
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha512};
use std::{
collections::{HashMap, HashSet},
error::Error,
collections::{BTreeMap, HashSet},
ffi::{OsStr, OsString},
path::{Path, PathBuf},
};
@ -18,7 +17,7 @@ const MODPACK_LOCK_FILENAME: &str = "modpack.lock";
#[derive(Serialize, Deserialize)]
pub struct PinnedPackMeta {
mods: HashMap<String, PinnedMod>,
mods: BTreeMap<String, PinnedMod>,
#[serde(skip_serializing, skip_deserializing)]
modrinth: Modrinth,
}