From 66e8649d5d51bdbbc7fdc92ed6b855edb6d32dd0 Mon Sep 17 00:00:00 2001 From: Alexander Weiss Date: Thu, 3 Feb 2022 08:58:48 +0100 Subject: [PATCH] from_backend for IndexFile --- src/main.rs | 16 ++-------------- src/repo/index.rs | 12 +++++++++++- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/main.rs b/src/main.rs index e30daa6..0771cfa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,25 +18,13 @@ fn main() -> Result<()> { let args: Vec = env::args().collect(); let be = LocalBackend::new(&args[1]); - - // let key = find_key_in_backend(&be, "test", Some(Id::from_hex(&args[2])?))?; let key = repo::find_key_in_backend(&be, &args[2], None)?; - let be = DecryptBackend::new(be, key); let id = Id::from_hex(&args[3])?; - let dec = be - .read_full(FileType::Index, id) - .with_context(|| format!("Error reading {}", id.to_hex()))?; - println!("{}", String::from_utf8_lossy(&dec)); + let index = IndexFile::from_backend(&be, id)?; - let de = serde_json::from_slice::(&dec).unwrap(); - - for bi in de.iter() { - println!("{:?}", bi); - } - - let blob = de + let blob = index .get_blob(Blob { tpe: BlobType::Tree, id: Id::from_hex("72e8cb97b980f840cd2fe0b0bfdaf8c7882fb93efef6e3130d199c004fd493ac")?, diff --git a/src/repo/index.rs b/src/repo/index.rs index a67fdae..6be0e86 100644 --- a/src/repo/index.rs +++ b/src/repo/index.rs @@ -1,9 +1,11 @@ +use anyhow::Result; use std::iter::Iterator; use serde::{Deserialize, Serialize}; -use super::Id; +use crate::backend::{FileType, ReadBackend}; use crate::blob::{Blob, BlobInformation, BlobType, IndexEntry}; +use crate::id::Id; use crate::index::ReadIndex; #[derive(Debug, Serialize, Deserialize)] @@ -13,6 +15,14 @@ pub struct IndexFile { packs: Vec, } +impl IndexFile { + /// Get an IndexFile from the backend + pub fn from_backend(be: &B, id: Id) -> Result { + let data = be.read_full(FileType::Index, id)?; + Ok(serde_json::from_slice(&data)?) + } +} + #[derive(Debug, Serialize, Deserialize)] struct PackIndex { id: Id,