#![feature(round_char_boundary)] #![feature(exit_status_error)] use crate::compare::compare_document; use crate::init_tracing::init_telemetry; use crate::init_tracing::shutdown_telemetry; use crate::parser::document; use compare::emacs_parse_org_document; use compare::sexp; mod compare; mod init_tracing; mod parser; fn main() -> Result<(), Box> { init_telemetry()?; for org_path in std::env::args().skip(1) { let org_contents = std::fs::read_to_string(&org_path)?; let org_sexp = emacs_parse_org_document(&org_path)?; println!("{}", org_sexp); let (_remaining, parsed_sexp) = sexp(org_sexp.as_str()).expect("Sexp Parse failure"); println!("{:#?}", parsed_sexp); let (_remaining, rust_parsed) = document(org_contents.as_str()).expect("Org Parse failure"); println!("{:#?}", rust_parsed); compare_document(&parsed_sexp, &rust_parsed)?; } shutdown_telemetry()?; Ok(()) }