use std::fs;
use std::io;
use std::path::Path;
fn main() -> io::Result<()> {
let dir = "./agreements/";
process_files(dir)?;
Ok(())
}
fn process_files(dir: &str) -> io::Result<()> {
let paths = fs::read_dir(dir)?;
for path in paths {
let path = path?.path();
if path.is_file() {
let file_name = path.file_name().unwrap().to_str().unwrap();
let parts: Vec<&str> = file_name.split('-').collect();
if parts.len() < 4 {
eprintln!("Skipping file {}: does not have enough parts", file_name);
continue;
}
let first = parts[0];
let second = parts[1];
let third = parts[2];
let fourth = parts[3..].join("-");
let new_dir = Path::new(dir).join(first).join(second).join(third);
fs::create_dir_all(&new_dir)?;
let new_file_path = new_dir.join(fourth);
fs::rename(&path, &new_file_path)?;
}
}
Ok(())
}