Skip to main content

process_file/
process_file.rs

1use libaprs_engine::{Engine, EngineResult, LineTransport, Policy};
2
3fn main() -> std::io::Result<()> {
4    let Some(path) = std::env::args().nth(1) else {
5        eprintln!("usage: process_file <packets.aprs>");
6        std::process::exit(2);
7    };
8
9    let input = std::fs::read(path)?;
10    let mut engine = Engine::new(Policy::strict());
11
12    for packet_bytes in LineTransport::new(&input).packets() {
13        match engine.process(packet_bytes) {
14            EngineResult::Accepted { packet } => println!("{}", packet.to_json()),
15            EngineResult::Rejected { reason, .. } => eprintln!("rejected: {}", reason.code()),
16            EngineResult::ParseError(error) => eprintln!("malformed: {}", error.code()),
17        }
18    }
19
20    Ok(())
21}