use std::fs;
use super::{FontFile, ResourceSet, sanitize_ident};
use crate::meta::Project;
pub fn stage(project: &Project, set: &ResourceSet, fonts: &[FontFile]) -> Result<(), String> {
if set.images.is_empty() && fonts.is_empty() {
return Ok(());
}
let res = project.root.join("build/day/android/res");
let _ = fs::remove_dir_all(&res);
if !fonts.is_empty() {
let dir = res.join("font");
fs::create_dir_all(&dir).map_err(|e| format!("mkdir {}: {e}", dir.display()))?;
for f in fonts {
let dest = dir.join(f.staged_name());
fs::copy(&f.path, &dest).map_err(|e| format!("stage {}: {e}", dest.display()))?;
}
}
for img in &set.images {
let bucket = match img.scale {
2 => "drawable-xhdpi",
3 => "drawable-xxhdpi",
4 => "drawable-xxxhdpi",
_ => "drawable",
};
let dir = res.join(bucket);
fs::create_dir_all(&dir).map_err(|e| format!("mkdir {}: {e}", dir.display()))?;
let ext = img
.path
.extension()
.and_then(|e| e.to_str())
.unwrap_or("png")
.to_ascii_lowercase();
let dest = dir.join(format!("{}.{}", sanitize_ident(&img.name), ext));
fs::copy(&img.path, &dest).map_err(|e| format!("stage {}: {e}", dest.display()))?;
}
Ok(())
}