use std::fs;
use std::path::{Path, PathBuf};
pub(crate) fn segments(dir: &Path, extension: &str) -> Vec<PathBuf> {
let mut paths: Vec<PathBuf> = fs::read_dir(dir)
.expect("capture directory must exist")
.map(|entry| entry.expect("readable entry").path())
.filter(|path| path.extension().is_some_and(|ext| ext == extension))
.collect();
paths.sort();
paths
}
pub(crate) fn frames(dir: &Path) -> Vec<u8> {
segments(dir, "bin")
.iter()
.flat_map(|path| fs::read(path).expect("readable capture"))
.collect()
}
pub(crate) fn index(dir: &Path) -> Vec<String> {
segments(dir, "idx")
.iter()
.flat_map(|path| {
fs::read_to_string(path)
.expect("readable index")
.lines()
.map(String::from)
.collect::<Vec<_>>()
})
.collect()
}