Skip to main content

bake_static_format/
bake_static_format.rs

1//! Converts a packaged format into a flat static format image.
2
3use std::path::PathBuf;
4use std::process::ExitCode;
5
6fn main() -> ExitCode {
7    let Some((input, output)) = paths() else {
8        eprintln!("usage: bake_static_format <packaged input> <baked output>");
9        return ExitCode::FAILURE;
10    };
11    let packaged = match std::fs::read(&input) {
12        Ok(bytes) => bytes,
13        Err(error) => {
14            eprintln!("cannot read {}: {error}", input.display());
15            return ExitCode::FAILURE;
16        }
17    };
18    let Some(baked) = mathtex_engine::generated::bake_packaged_format(&packaged) else {
19        eprintln!("input is not a packaged format for this build target");
20        return ExitCode::FAILURE;
21    };
22    if let Err(error) = std::fs::write(&output, baked) {
23        eprintln!("cannot write {}: {error}", output.display());
24        return ExitCode::FAILURE;
25    }
26    ExitCode::SUCCESS
27}
28
29fn paths() -> Option<(PathBuf, PathBuf)> {
30    let mut args = std::env::args_os().skip(1);
31    let input = PathBuf::from(args.next()?);
32    let output = PathBuf::from(args.next()?);
33    if args.next().is_some() {
34        return None;
35    }
36    Some((input, output))
37}