Radish alpha
r
rad:z6cFWeWpnZNHh9rUW8phgA3b5yGt
Git libraries for Radicle
Radicle
Git
git: Update serialization for copied files
Merged did:key:z6MkkfM3...sVz5 opened 2 years ago

Instead of always trying to provide a diff, we should serialize the same way we do for moved files.

2 files changed +33 -23 2e7f12b1 1525ef65
modified radicle-surf/src/diff.rs
@@ -220,7 +220,7 @@ impl Serialize for Moved {
        S: Serializer,
    {
        if self.old == self.new {
-
            let mut state = serializer.serialize_struct("Moved", 2)?;
+
            let mut state = serializer.serialize_struct("Moved", 3)?;
            state.serialize_field("oldPath", &self.old_path)?;
            state.serialize_field("newPath", &self.new_path)?;
            state.serialize_field("current", &self.new)?;
@@ -238,7 +238,6 @@ impl Serialize for Moved {
}

/// A file that was copied within a [`Diff`].
-
#[cfg_attr(feature = "serde", derive(Serialize), serde(rename_all = "camelCase"))]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Copied {
    /// The old path to this file, relative to the repository root.
@@ -250,6 +249,30 @@ pub struct Copied {
    pub diff: DiffContent,
}

+
#[cfg(feature = "serde")]
+
impl Serialize for Copied {
+
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+
    where
+
        S: Serializer,
+
    {
+
        if self.old == self.new {
+
            let mut state = serializer.serialize_struct("Copied", 3)?;
+
            state.serialize_field("oldPath", &self.old_path)?;
+
            state.serialize_field("newPath", &self.new_path)?;
+
            state.serialize_field("current", &self.new)?;
+
            state.end()
+
        } else {
+
            let mut state = serializer.serialize_struct("Copied", 5)?;
+
            state.serialize_field("oldPath", &self.old_path)?;
+
            state.serialize_field("newPath", &self.new_path)?;
+
            state.serialize_field("old", &self.old)?;
+
            state.serialize_field("new", &self.new)?;
+
            state.serialize_field("diff", &self.diff)?;
+
            state.end()
+
        }
+
    }
+
}
+

#[cfg_attr(feature = "serde", derive(Serialize), serde(rename_all = "camelCase"))]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum EofNewLine {
@@ -354,7 +377,7 @@ pub struct DiffFile {
#[cfg_attr(
    feature = "serde",
    derive(Serialize),
-
    serde(tag = "state", rename_all = "camelCase")
+
    serde(tag = "status", rename_all = "camelCase")
)]
pub enum FileDiff {
    Added(Added),
modified radicle-surf/t/src/diff.rs
@@ -248,7 +248,7 @@ fn test_diff_serde() -> Result<(), Error> {
                "mode": "blob",
                "oid": "02f70f56ec62396ceaf38804c37e169e875ab291",
            },
-
            "state": "added"
+
            "status": "added"
        },
        {
            "path": "README.md",
@@ -291,7 +291,7 @@ fn test_diff_serde() -> Result<(), Error> {
                "mode": "blob",
                "oid": "5e07534cd74a6a9b2ccd2729b181c4ef26173a5e",
            },
-
            "state": "modified",
+
            "status": "modified",
        },
        {
            "current": {
@@ -300,33 +300,20 @@ fn test_diff_serde() -> Result<(), Error> {
            },
            "oldPath": "text/emoji.txt",
            "newPath": "emoji.txt",
-
            "state": "moved"
+
            "status": "moved"
        },
        {
-
            "diff": {
-
                "eof": "noneMissing",
-
                "hunks": [],
-
                "stats": {
-
                    "additions": 0,
-
                    "deletions": 0,
-
                },
-
                "type": "plain",
-
            },
-
            "new": {
+
            "current": {
                "mode": "blob",
                "oid": "5e07534cd74a6a9b2ccd2729b181c4ef26173a5e",
            },
            "newPath": "file_operations/copied.md",
-
            "old": {
-
                "mode": "blob",
-
                "oid": "5e07534cd74a6a9b2ccd2729b181c4ef26173a5e",
-
            },
            "oldPath": "README.md",
-
            "state": "copied"
+
            "status": "copied"
        },
        {
            "path": "text/arrows.txt",
-
            "state": "deleted",
+
            "status": "deleted",
            "old": {
                "mode": "blob",
                "oid": "95418c04010a3cc758fb3a37f9918465f147566f",
@@ -586,7 +573,7 @@ index 3f69208f3..cbc843c82 100644
                    "oid": "3f69208f30000000000000000000000000000000",
                },
                "oldPath": "radicle/src/node/tracking/config.rs",
-
                "state": "moved"
+
                "status": "moved"
            },
        ],
        "stats": {