vrp_cli/extensions/import/
mod.rs1mod csv;
4pub use self::csv::*;
5
6use std::io::{BufReader, Read};
7use vrp_core::prelude::GenericError;
8use vrp_pragmatic::format::problem::Problem;
9
10pub fn import_problem<R: Read>(
12 input_format: &str,
13 readers: Option<Vec<BufReader<R>>>,
14) -> Result<Problem, GenericError> {
15 match (input_format, readers) {
16 ("csv", Some(mut readers)) if readers.len() == 2 => {
17 let jobs = readers.swap_remove(0);
18 let vehicles = readers.swap_remove(0);
19 read_csv_problem(jobs, vehicles).map_err(|err| format!("cannot read csv: {err}").into())
20 }
21 ("csv", _) => Err("csv format expects two files with jobs and vehicles as an input".into()),
22 _ => Err(format!("unknown format: '{input_format}'").into()),
23 }
24}