Add mkdir -p behaviour for output file to simplify harnesses
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Joshua Coles 2023-03-17 21:30:16 +00:00
parent f0ea44bb1a
commit a85e8e33ea

View File

@ -1,4 +1,4 @@
use std::fs::File;
use std::fs::{create_dir_all, File};
use std::path::Path;
use rand::Rng;
use crate::cli::cli::OutputFormat;
@ -13,6 +13,14 @@ pub fn write<R: Rng, P: Position, S: Storage<P>, W: Walker<P>, Sp: Spawner<P>, S
format: OutputFormat,
output: &Path,
) {
// If the parent does not exist (and we are not in the root or operating a relative 1-component-length path))
// create it. This greatly simplifies the harness code.
if let Some(parent) = output.parent() &&
parent.to_str().map(|x| x != "").unwrap_or(true) &&
!parent.exists() {
create_dir_all(parent).expect("Failed to create path to output");
}
match format {
OutputFormat::FullDataJson => write_json_full_data(sys, output),
OutputFormat::Positions => write_csv_positions(sys, output),