use std::path::PathBuf;
use std::time::Duration;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MdSyncSpec {
pub repo: PathBuf,
pub glob: String,
pub commit_author: String,
pub flush_every: Duration,
}
impl Default for MdSyncSpec {
fn default() -> Self {
Self {
repo: PathBuf::from("."),
glob: "**/*.md".to_string(),
commit_author: "mnemo-md-sync <mnemo@localhost>".to_string(),
flush_every: Duration::from_millis(250),
}
}
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum SyncFlushPolicy {
PreferEngine,
#[default]
PreferDisk,
NewerWins,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_glob_matches_all_md() {
let s = MdSyncSpec::default();
assert_eq!(s.glob, "**/*.md");
}
#[test]
fn default_flush_is_under_one_second() {
let s = MdSyncSpec::default();
assert!(s.flush_every < Duration::from_secs(1));
}
#[test]
fn default_policy_prefers_disk() {
let p = SyncFlushPolicy::default();
assert_eq!(p, SyncFlushPolicy::PreferDisk);
}
}