pub mod error;
use std::path::{Path, PathBuf};
use radicle_oid::Oid;
pub struct Blob {
pub oid: Oid,
pub bytes: Vec<u8>,
}
pub trait Reader {
fn read_commit(&self, oid: &Oid) -> Result<Option<Vec<u8>>, error::ReadCommit>;
fn read_blob(&self, commit: &Oid, path: &Path) -> Result<Option<Blob>, error::ReadBlob>;
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct RefsEntry {
pub path: PathBuf,
pub content: Vec<u8>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct SignatureEntry {
pub path: PathBuf,
pub content: Vec<u8>,
}
pub trait Writer {
fn write_tree(
&self,
refs: RefsEntry,
signature: SignatureEntry,
) -> Result<Oid, error::WriteTree>;
fn write_commit(&self, bytes: &[u8]) -> Result<Oid, error::WriteCommit>;
}