organic/src/bin_wasm_test.rs

65 lines
1.8 KiB
Rust
Raw Normal View History

2023-12-25 19:32:01 +00:00
#![feature(exact_size_is_empty)]
2023-12-27 00:06:12 +00:00
#![feature(exit_status_error)]
2023-12-25 19:32:01 +00:00
use std::io::Read;
2023-12-27 13:17:15 +00:00
use organic::wasm::compare::wasm_run_anonymous_compare;
2023-12-25 19:32:01 +00:00
#[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<dyn std::error::Error>> {
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<dyn std::error::Error>> {
2023-12-25 19:32:01 +00:00
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<dyn std::error::Error>> {
let args = std::env::args().skip(1);
if args.is_empty() {
let org_contents = read_stdin_to_string()?;
2023-12-27 13:17:15 +00:00
// let wasm_result = wasm_parse_org(org_contents.as_str());
// println!("{}", serde_json::to_string(&wasm_result)?);
if wasm_run_anonymous_compare(org_contents).await? {
2023-12-26 23:55:28 +00:00
} else {
Err("Diff results do not match.")?;
}
2023-12-25 19:32:01 +00:00
Ok(())
} else {
todo!()
// for arg in args {
// if run_compare_on_file(arg).await? {
// } else {
// Err("Diff results do not match.")?;
// }
// }
// Ok(())
}
}
2023-12-25 19:32:01 +00:00
fn read_stdin_to_string() -> Result<String, Box<dyn std::error::Error>> {
let mut stdin_contents = String::new();
std::io::stdin()
.lock()
.read_to_string(&mut stdin_contents)?;
Ok(stdin_contents)
}