#![feature(exact_size_is_empty)] use std::io::Read; use wasm::wasm_parse_org; mod error; mod wasm; #[cfg(feature = "tracing")] use crate::init_tracing::init_telemetry; #[cfg(feature = "tracing")] use crate::init_tracing::shutdown_telemetry; #[cfg(feature = "tracing")] mod init_tracing; #[cfg(not(feature = "tracing"))] fn main() -> Result<(), Box> { let rt = tokio::runtime::Runtime::new()?; rt.block_on(async { let main_body_result = main_body().await; main_body_result }) } #[cfg(feature = "tracing")] fn main() -> Result<(), Box> { let rt = tokio::runtime::Runtime::new()?; rt.block_on(async { init_telemetry()?; let main_body_result = main_body().await; shutdown_telemetry()?; main_body_result }) } #[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] async fn main_body() -> Result<(), Box> { let args = std::env::args().skip(1); if args.is_empty() { let org_contents = read_stdin_to_string()?; let wasm_result = wasm_parse_org(org_contents.as_str()); println!("{}", serde_json::to_string(&wasm_result)?); // if run_anonymous_compare(org_contents).await? { // } else { // Err("Diff results do not match.")?; // } Ok(()) } else { todo!() // for arg in args { // if run_compare_on_file(arg).await? { // } else { // Err("Diff results do not match.")?; // } // } // Ok(()) } } fn read_stdin_to_string() -> Result> { let mut stdin_contents = String::new(); std::io::stdin() .lock() .read_to_string(&mut stdin_contents)?; Ok(stdin_contents) }