use std::path::PathBuf;
use tokio::fs;
use lighty_core::verify_file_sha1_streaming;
pub async fn needs_download(path: &PathBuf, sha1: Option<&String>, name: &str) -> bool {
if !path.exists() {
return true;
}
if let Ok(meta) = fs::metadata(path).await {
if meta.len() == 0 {
lighty_core::trace_warn!(
"[Installer] Zero-byte cached file for {}, re-downloading...",
name
);
let _ = fs::remove_file(path).await;
return true;
}
}
if let Some(hash) = sha1 {
match verify_file_sha1_streaming(path, hash).await {
Ok(true) => false,
_ => {
lighty_core::trace_warn!("[Installer] SHA1 mismatch for {}, re-downloading...", name);
let _ = fs::remove_file(path).await;
true
}
}
} else {
false
}
}