use std::fs::read_to_string;
-use std::io::{stdout, IsTerminal, Write};
use std::path::PathBuf;
use anyhow::{anyhow, Result};
/// Input file.
#[arg(required = true, name = "input")]
input_file_name: PathBuf,
+
+ /// Output file.
+ #[arg(required = true, name = "output")]
+ output_file_name: PathBuf,
}
fn main() -> Result<()> {
- let Args { be, le, input_file_name } = Args::parse();
- if stdout().is_terminal() {
- return Err(anyhow!(
- "not writing binary data to a terminal; redirect to a file"
- ));
- }
+ let Args { be, le, input_file_name, output_file_name } = Args::parse();
let endian = match (be, le) {
(false, false) | (true, false) => Endian::Big,
(false, true) => Endian::Little,
let input = read_to_string(&input_file_name)?;
let input_file_name = input_file_name.to_string_lossy();
let output = sack(&input, Some(&input_file_name), endian)?;
- stdout().write_all(&output)?;
+ std::fs::write(&output_file_name, &output)?;
Ok(())
}