use crate::parser::parse_bytes_from_input_arg; use formatter::FormatConfig; use std::path::PathBuf; use structopt::StructOpt; mod byte_stream; mod formatter; mod parser; #[derive(Debug, StructOpt)] #[structopt(name = "Formaty", about = "Arbitrary Binary Data Formatting")] pub struct Args { #[structopt(parse(from_os_str))] config: PathBuf, format: String, data: Vec, } fn main() { let args: Args = Args::from_args(); let config = FormatConfig::new(&args.config).unwrap(); let format = match config.formats.iter().find(|f| f.name == args.format) { None => { println!("Format not found in config file"); return; } Some(format) => format, }; let data = parse_bytes_from_input_arg(args.data).unwrap(); match format.format_data(&data) { Ok(data_str) => println!("{}", data_str), Err(_) => println!("Error formatting data") } }