use crate::{cli::Args, domain}; use std::{cell::RefCell, fs::File}; #[derive(Debug)] pub enum Error { OpenFile, Switch(domain::switch::Error), } pub fn execute(args: &Args) -> Result<(), Error> { let reader = File::open(&args.file).map_err(|_| Error::OpenFile)?; let writer = File::create(args.output.as_ref().unwrap_or(&args.file)).map_err(|_| Error::OpenFile)?; domain::switch::execute(domain::switch::Request { reader: RefCell::new(reader), writer, sections: &args.sections, }) .map_err(Error::Switch) }