From bd9a78b305fbedfc26547214e68e32508879ed91 Mon Sep 17 00:00:00 2001 From: Jakub Gladysz Date: Thu, 24 Jul 2025 11:02:43 +0300 Subject: [PATCH] Do not crash on unknown arg Signed-off-by: Jakub Gladysz --- crates/notedeck_chrome/src/android.rs | 11 ++++++----- crates/notedeck_chrome/src/notedeck.rs | 21 ++++++--------------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/crates/notedeck_chrome/src/android.rs b/crates/notedeck_chrome/src/android.rs index cecec89b..fdb87f05 100644 --- a/crates/notedeck_chrome/src/android.rs +++ b/crates/notedeck_chrome/src/android.rs @@ -2,11 +2,13 @@ //use egui_android::run_android; use egui_winit::winit::platform::android::activity::AndroidApp; +use notedeck::enostr::Error; use notedeck_columns::Damus; use notedeck_dave::Dave; use crate::{app::NotedeckApp, chrome::Chrome, setup::setup_chrome}; use notedeck::Notedeck; +use tracing::error; #[no_mangle] #[tokio::main] @@ -80,11 +82,10 @@ pub async fn android_main(app: AndroidApp) { .intersection(columns.unrecognized_args()) .cloned() .collect(); - assert!( - completely_unrecognized.is_empty(), - "unrecognized args: {:?}", - completely_unrecognized - ); + if !completely_unrecognized.is_empty() { + error!("Unrecognized arguments: {:?}", completely_unrecognized); + return Err(Error::Empty.into()); + } chrome.add_app(NotedeckApp::Columns(columns)); chrome.add_app(NotedeckApp::Dave(dave)); diff --git a/crates/notedeck_chrome/src/notedeck.rs b/crates/notedeck_chrome/src/notedeck.rs index 51b202ab..9ccc1051 100644 --- a/crates/notedeck_chrome/src/notedeck.rs +++ b/crates/notedeck_chrome/src/notedeck.rs @@ -9,6 +9,7 @@ use re_memory::AccountingAllocator; static GLOBAL: AccountingAllocator = AccountingAllocator::new(std::alloc::System); +use notedeck::enostr::Error; use notedeck::{DataPath, DataPathType, Notedeck}; use notedeck_chrome::{ setup::{generate_native_options, setup_chrome}, @@ -16,6 +17,7 @@ use notedeck_chrome::{ }; use notedeck_columns::Damus; use notedeck_dave::Dave; +use tracing::error; use tracing_appender::non_blocking::WorkerGuard; use tracing_subscriber::EnvFilter; @@ -104,10 +106,10 @@ async fn main() { .intersection(columns.unrecognized_args()) .cloned() .collect(); - assert!( - completely_unrecognized.is_empty(), - "unrecognized args: {completely_unrecognized:?}" - ); + if !completely_unrecognized.is_empty() { + error!("Unrecognized arguments: {:?}", completely_unrecognized); + return Err(Error::Empty.into()); + } chrome.add_app(NotedeckApp::Columns(columns)); chrome.add_app(NotedeckApp::Dave(dave)); @@ -212,17 +214,6 @@ mod tests { let mut app_ctx = notedeck.app_context(); let app = Damus::new(&mut app_ctx, &args); - // ensure we recognized all the arguments - let completely_unrecognized: Vec = unrecognized_args - .intersection(app.unrecognized_args()) - .cloned() - .collect(); - assert!( - completely_unrecognized.is_empty(), - "unrecognized args: {:?}", - completely_unrecognized - ); - assert_eq!(app.columns(app_ctx.accounts).columns().len(), 2); let tl1 = app