Skip to content

Commit

Permalink
fix: sort keys in __MISE_DIFF to make the serialised value determin…
Browse files Browse the repository at this point in the history
…istic
  • Loading branch information
joshbode committed Dec 17, 2024
1 parent b0fa5e9 commit cc49d32
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions src/env_diff.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,33 @@ use eyre::Result;
use flate2::write::{ZlibDecoder, ZlibEncoder};
use flate2::Compression;
use itertools::Itertools;
use serde_derive::{Deserialize, Serialize};
use serde::Serialize;
use serde::Serializer;

use crate::env::PATH_KEY;
use crate::{cmd, file};

#[derive(Default, Serialize, Deserialize)]
#[derive(Default, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct EnvDiff {
#[serde(default)]
#[serde(serialize_with = "ordered_map")]
pub old: HashMap<String, String>,
#[serde(default)]
#[serde(serialize_with = "ordered_map")]
pub new: HashMap<String, String>,
#[serde(default)]
pub path: Vec<PathBuf>,
}

fn ordered_map<S: Serializer, K: Serialize + Ord, V: Serialize>(
value: &HashMap<K, V>,
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let ordered: BTreeMap<_, _> = value.iter().collect();
ordered.serialize(serializer)
}

#[derive(Debug)]
pub enum EnvDiffOperation {
Add(String, String),
Expand Down

0 comments on commit cc49d32

Please sign in to comment.