gps 7.3.3

Official CLI & library for Git Patch Stack
Documentation
use git2;
use std::result::Result;

#[cfg(feature = "backup_cmd")]
#[derive(Debug)]
pub enum ReadHashedObjectError {
    NotValidUtf8(std::str::Utf8Error),
    Failed(git2::Error),
}

#[cfg(feature = "backup_cmd")]
pub fn read_hashed_object(
    repo: &git2::Repository,
    oid: git2::Oid,
) -> Result<String, ReadHashedObjectError> {
    let blob = repo.find_blob(oid).map_err(ReadHashedObjectError::Failed)?;
    let content = blob.content();
    let str_ref = std::str::from_utf8(content).map_err(ReadHashedObjectError::NotValidUtf8)?;
    Ok(str_ref.to_string())
}

#[cfg(test)]
mod tests {
    #[cfg(feature = "backup_cmd")]
    #[test]
    fn test_read_hashed_object() {
        let (_td, repo) = repo_init();
        let message = "Hello hash object write!";
        let oid = super::hash_object_write(&repo, message).unwrap();
        let retreived_message = super::read_hashed_object(&repo, oid).unwrap();
        assert_eq!(retreived_message, message);
    }
}