Something went wrong. Try again.
inkfinite (an infinite canvas/whiteboard) monorepo ink.stormlightlabs.org
svelte rust tauri svg canvas perfect-freehand
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950//! File-mode command-line interface for Inkfinite documents.
use std::io;
use clap::Parser;use inkfinite_cli::cli;use tracing_subscriber::EnvFilter;use tracing_subscriber::fmt::format::FmtSpan;
fn main() { init_tracing(); let arguments = std::env::args_os().collect::<Vec<_>>(); let json_output = arguments.iter().any(|argument| argument == "--json"); let cli = match cli::Cli::try_parse_from(arguments) { Ok(cli) => cli, Err(error) if json_output && error.exit_code() != 0 => { let diagnostic = serde_json::json!({ "error": { "code": "invalid_usage", "message": error.to_string(), "details": null, "retryable": false, "suggestion": "Run the command with --help to inspect its accepted arguments." } }); eprintln!("{diagnostic}"); std::process::exit(error.exit_code()); } Err(error) => error.exit(), }; let mut stdout = io::stdout().lock(); if let Err(error) = cli::run(cli.command, cli.json, &mut stdout) { if cli.json { eprintln!("{}", error.diagnostic()); } else { eprintln!("inkfinite: {:#}", error.source); } std::process::exit(error.exit_code()); }}
fn init_tracing() { let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("off")); let _ = tracing_subscriber::fmt() .with_env_filter(filter) .with_span_events(FmtSpan::CLOSE) .with_writer(std::io::stderr) .try_init();}