8000 minigraf/src/main.rs at v2.0.9 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content
< 7FFF script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2FGitHub.com%2Fproject-minigraf%2Fminigraf%2Fblob%2Fv2.0.9%2Fsrc%2Fmain.rs","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow\u0026source=header-repo\u0026source_repo=project-minigraf%2Fminigraf","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://GitHub.com/project-minigraf/minigraf/blob/v2.0.9/src/main.rs\",\"user_id\":null}}","auth_hydro_click_hmac":"567dbed63bdc8791fb68c5bfcf7c570d19693fd583d1e583fe9aeb4b5b002e50"}}

Latest commit

 

History

History
50 lines (44 loc) · 1.54 KB

main.rs

File metadata and controls

50 lines (44 loc) · 1.54 KB
#[cfg(any(not(target_arch = "wasm32"), target_os = "wasi"))]
use minigraf::Minigraf;
#[cfg(not(target_arch = "wasm32"))]
use minigraf::OpenOptions;
fn main() -> anyhow::Result<()> {
#[cfg(target_os = "wasi")]
{
let db = Minigraf::in_memory()?;
db.repl().run();
Ok(())
}
#[cfg(all(target_arch = "wasm32", not(target_os = "wasi")))]
{
// Browser WASM — entry point is the BrowserDb JS/WASM API, not a REPL binary.
Ok(())
}
#[cfg(not(target_arch = "wasm32"))]
{
let args: Vec<String> = std::env::args().collect();
let file_flag_pos = args.iter().position(|a| a == "--file");
let db_path = file_flag_pos.and_then(|i| args.get(i + 1)).cloned();
let init_flag_pos = args.iter().position(|a| a == "--init");
let init_path = init_flag_pos.and_then(|i| args.get(i + 1)).cloned();
if file_flag_pos.is_some() && db_path.is_none() {
eprintln!("error: --file requires a path argument");
std::process::exit(1);
}
if init_flag_pos.is_some() && init_path.is_none() {
eprintln!("error: --init requires a path argument");
std::process::exit(1);
}
let db = if let Some(path) = db_path {
OpenOptions::new().path(path).open()?
} else {
Minigraf::in_memory()?
};
let repl = db.repl();
if let Some(path) = init_path {
repl.run_with_init(std::path::Path::new(&path));
}
repl.run();
Ok(())
}
}
0