Skip to main content

edda_derive/
lib.rs

1mod context;
2mod evidence;
3mod snapshot;
4mod types;
5mod writers;
6
7pub use context::render_context;
8pub use evidence::{build_auto_evidence, last_commit_contribution, AutoEvidenceResult};
9pub use types::*;
10pub use writers::{rebuild_all, rebuild_branch};
11
12#[cfg(test)]
13pub(crate) mod test_support {
14    use edda_ledger::{EddaPaths, Ledger};
15    use std::sync::atomic::{AtomicU64, Ordering};
16
17    static TEST_COUNTER: AtomicU64 = AtomicU64::new(0);
18
19    pub fn setup_workspace() -> (std::path::PathBuf, Ledger) {
20        let n = TEST_COUNTER.fetch_add(1, Ordering::SeqCst);
21        let tmp = std::env::temp_dir().join(format!("edda_derive_test_{}_{n}", std::process::id()));
22        let _ = std::fs::remove_dir_all(&tmp);
23        let paths = EddaPaths::discover(&tmp);
24        edda_ledger::ledger::init_workspace(&paths).unwrap();
25        edda_ledger::ledger::init_head(&paths, "main").unwrap();
26        edda_ledger::ledger::init_branches_json(&paths, "main").unwrap();
27        let ledger = Ledger::open(&tmp).unwrap();
28        (tmp, ledger)
29    }
30}