22 lines
570 B
Rust
22 lines
570 B
Rust
|
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)
|
||
|
}
|