use std::path::Path;
pub fn set_readonly(path: &Path) -> Result<(), String> {
#[cfg(not(target_arch = "wasm32"))]
{
if !path.exists() {
return Ok(());
}
let mut perms = std::fs::metadata(path)
.map_err(|e| format!("Cannot read metadata for '{}': {}", path.display(), e))?
.permissions();
perms.set_readonly(true);
std::fs::set_permissions(path, perms)
.map_err(|e| format!("Cannot lock '{}' read-only: {}", path.display(), e))?;
}
Ok(())
}
pub fn set_writable(path: &Path) -> Result<(), String> {
#[cfg(not(target_arch = "wasm32"))]
{
if !path.exists() {
return Ok(());
}
let mut perms = std::fs::metadata(path)
.map_err(|e| format!("Cannot read metadata for '{}': {}", path.display(), e))?
.permissions();
perms.set_readonly(false);
std::fs::set_permissions(path, perms)
.map_err(|e| format!("Cannot unlock '{}' for writing: {}", path.display(), e))?;
}
Ok(())
}
pub fn is_readonly(path: &Path) -> bool {
#[cfg(not(target_arch = "wasm32"))]
{
std::fs::metadata(path)
.map(|m| m.permissions().readonly())
.unwrap_or(false)
}
#[cfg(target_arch = "wasm32")]
{
false
}
}