use std::fs; use anyhow::Context; use clap::Parser; mod cli; pub mod key_map; use crate::{cli::Args, key_map::KeyMap}; fn main() -> Result<(), anyhow::Error> { let args = Args::parse(); let keymap_file = fs::read_to_string(&args.path) .with_context(|| format!("Failed to open keymap file at: '{}'.", args.path.display()))?; let keymap: KeyMap = keymap_file .parse() .with_context(|| format!("Failed to parse keymap file at: {}", args.path.display()))?; // println!("{keymap}"); // println!("Commands:"); for mut command in keymap.to_commands() { // println!("Executing {command:?}"); let status = command .status() .with_context(|| format!("Failed to run command: '{command:?}'"))?; if !status.success() { eprintln!("Command ('{command:?}') returned with non zero exit code: {status}"); } } Ok(()) }