from_backend for IndexFile

This commit is contained in:
Alexander Weiss 2022-02-03 08:58:48 +01:00
parent 58f1948c60
commit 66e8649d5d
2 changed files with 13 additions and 15 deletions

View File

@ -18,25 +18,13 @@ fn main() -> Result<()> {
let args: Vec<String> = 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::<IndexFile>(&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")?,

View File

@ -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<PackIndex>,
}
impl IndexFile {
/// Get an IndexFile from the backend
pub fn from_backend<B: ReadBackend>(be: &B, id: Id) -> Result<Self> {
let data = be.read_full(FileType::Index, id)?;
Ok(serde_json::from_slice(&data)?)
}
}
#[derive(Debug, Serialize, Deserialize)]
struct PackIndex {
id: Id,