use std::io;
use std::path::{Path, PathBuf};
pub const LOCK_FILE: &str = "bynk.contracts.lock";
pub fn lock_path(project_root: &Path) -> PathBuf {
project_root.join(LOCK_FILE)
}
pub fn read(project_root: &Path) -> io::Result<Option<String>> {
crate::schema_lock::read_named(project_root, LOCK_FILE)
}
pub fn write(project_root: &Path, content: &str) -> io::Result<()> {
crate::schema_lock::write_named(project_root, LOCK_FILE, content)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn an_absent_lock_is_verified_absent_and_a_written_one_reads_back() {
let dir = std::env::temp_dir().join(format!("bynk_2554_lock_{}", std::process::id()));
let _ = std::fs::remove_dir_all(&dir);
std::fs::create_dir_all(&dir).unwrap();
assert_eq!(read(&dir).unwrap(), None);
write(&dir, "version = 1\n").unwrap();
assert_eq!(read(&dir).unwrap().as_deref(), Some("version = 1\n"));
assert!(lock_path(&dir).ends_with("bynk.contracts.lock"));
let _ = std::fs::remove_dir_all(&dir);
}
}