use std::fs;
use std::path::PathBuf;
pub struct LockFile {
lockfile_path: PathBuf,
}
impl LockFile {
pub fn new(session_name: &str) -> Self {
let mut lockfile_path = PathBuf::from("/tmp");
lockfile_path.push(format!("{}.lock", session_name));
LockFile { lockfile_path }
}
pub fn is_locked(&self) -> bool {
self.lockfile_path.exists()
}
pub fn lock(&self) {
if self.is_locked() {
println!("Lock file already exists.");
} else {
match fs::write(&self.lockfile_path, "Locked") {
Ok(_) => println!("Lock file created successfully."),
Err(e) => println!("Error creating lock file: {}", e),
}
}
}
pub fn release(&self) {
if self.is_locked() {
match fs::remove_file(&self.lockfile_path) {
Ok(_) => println!("Lock file removed successfully."),
Err(e) => println!("Error removing lock file: {}", e),
}
} else {
println!("No lock file exists to release.");
}
}
}