radicle 0.24.0

Radicle standard library
Documentation
use radicle_git_ref_format::refspec::QualifiedPattern;

use crate::git;
use crate::git::canonical::rules::{Allowed, Pattern, RawPattern, Rule};
use crate::git::fmt::RefString;
use crate::identity::doc::{self, Doc};
use crate::prelude::Did;
use crate::test::fixtures;

pub fn roundtrip(rule: &Rule<Allowed, usize>) {
    let json = serde_json::to_string(rule).unwrap();
    assert_eq!(
        *rule,
        serde_json::from_str(&json).unwrap(),
        "failed to roundtrip: {json}"
    )
}

pub fn did(s: &str) -> Did {
    s.parse().unwrap()
}

pub fn raw_pattern(qp: QualifiedPattern<'static>) -> RawPattern {
    qp
}

pub fn pattern(qp: QualifiedPattern<'static>) -> Pattern {
    Pattern::new(qp).unwrap()
}

pub fn resolve_from_doc(doc: &Doc) -> doc::Delegates {
    doc.delegates().clone()
}

pub fn tag(name: RefString, head: git::raw::Oid, repo: &git::raw::Repository) -> git::Oid {
    let commit = fixtures::commit(name.as_str(), &[head], repo);
    let target = repo.find_object(commit.into(), None).unwrap();
    let tagger = repo.signature().unwrap();
    repo.tag(name.as_str(), &target, &tagger, name.as_str(), false)
        .unwrap()
        .into()
}