use super::MetadataStore;
use crate::error::Result;
use crate::models::Event;
fn parse_events_from_description(description: &str) -> Vec<Event> {
description
.lines()
.filter(|l| l.starts_with("jjj: "))
.filter_map(|l| serde_json::from_str(&l["jjj: ".len()..]).ok())
.collect()
}
impl MetadataStore {
pub fn set_pending_event(&self, event: Event) {
self.pending_events.borrow_mut().push(event);
}
pub fn list_events(&self) -> Result<Vec<Event>> {
self.ensure_meta_checkout()?;
let descriptions = self.meta_client.log_descriptions("::@")?;
let mut events: Vec<Event> = descriptions
.iter()
.flat_map(|d| parse_events_from_description(d))
.collect();
events.sort_by_key(|e| e.when);
Ok(events)
}
pub fn rebuild_events_from_commits(&self) -> Result<Vec<Event>> {
self.list_events()
}
pub fn get_current_user(&self) -> Result<String> {
self.jj_client.user_name()
}
}