tiny-tmpl 0.1.3

A command line utility for interpolating templates.
Documentation
use serde_yaml::Mapping;

use tmpl::*;

fn main() -> Result<(), Error> {
    let (escape, map_file) = {
        let mut args = std::env::args();
        args.next();
        let arg = args.next().ok_or(Error::MissingArgument)?;
        if arg == "--template" || arg == "-t" {
            let escape = args.next().ok_or(Error::MissingArgument)?.parse()?;
            let map_file = args.next().ok_or(Error::MissingArgument)?;
            (escape, map_file)
        } else {
            (Default::default(), arg)
        }
    };
    let map: Mapping = serde_yaml::from_reader(std::fs::File::open(map_file)?)?;
    std::io::copy(
        &mut TemplatingReader::new(std::io::stdin(), &map, &escape, b'%'),
        &mut std::io::stdout(),
    )?;

    Ok(())
}