use std::path::{Path, PathBuf};
pub const DUMP_FILE: &str = "latest-truthy.nt.bz2";
pub const DUMP_URL: &str = "https://dumps.wikimedia.org/wikidatawiki/entities/latest-truthy.nt.bz2";
#[derive(Debug, Clone)]
pub struct Workdir {
root: PathBuf,
}
impl Workdir {
pub fn new(root: impl Into<PathBuf>) -> Self {
Self { root: root.into() }
}
pub fn root(&self) -> &Path {
&self.root
}
pub fn dump_path(&self) -> PathBuf {
self.root.join(DUMP_FILE)
}
pub fn part_path(&self) -> PathBuf {
self.root.join(format!("{DUMP_FILE}.part"))
}
pub fn ensure_dir(&self) -> std::io::Result<()> {
std::fs::create_dir_all(&self.root)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn paths_are_well_formed() {
let w = Workdir::new("/tmp/wd");
assert_eq!(w.dump_path(), Path::new("/tmp/wd/latest-truthy.nt.bz2"));
assert_eq!(
w.part_path(),
Path::new("/tmp/wd/latest-truthy.nt.bz2.part")
);
}
}