From 7bf6c3299cbcce99c1fb0c496a2dc73227691363 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sun, 13 Apr 2025 09:35:55 -0400 Subject: [PATCH] Add basic CLI for launching head(less) mode. --- src/main.rs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index cad2fb6..5f8a245 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,14 @@ // TODO: Header use cxx_qt_lib::QString; +use std::env; +use std::error::Error; +use std::process::exit; pub mod colors; pub mod filesystem; -fn main() { +fn run_gui() -> Result<(), Box> { use cxx_qt_lib::{QGuiApplication, QQmlApplicationEngine, QUrl}; let mut app = QGuiApplication::new(); @@ -21,4 +24,57 @@ fn main() { if let Some(app) = app.as_mut() { app.exec(); } + + Ok(()) +} + +fn run_tui() -> Result<(), Box> { + println!("Starting TUI editor..."); + // Your cursive logic here, like: + // let mut siv = cursive::default(); + // siv.add_layer(...); + // siv.run(); + Ok(()) +} + +fn print_help() { + println!("Usage: app_launcher [OPTION]"); + println!("Options:"); + println!(" gui Launch the QML GUI application"); + println!(" tui Launch the TUI text editor (cursive-based)"); + println!(" help Show this help message"); +} + +fn main() { + let args: Vec = env::args().collect(); + + if args.len() < 2 { + if let Err(e) = run_gui() { + eprintln!("Error launching GUI: {}", e); + exit(1); + } + } + + match args.get(1).map(|s| s.as_str()) { + Some("gui") => { + if let Err(e) = run_gui() { + eprintln!("Error launching GUI: {}", e); + exit(1); + } + } + Some("tui") => { + if let Err(e) = run_tui() { + eprintln!("Error launching TUI: {}", e); + exit(1); + } + } + Some("help") | None => { + print_help(); + } + Some(arg) => { + eprintln!("Unknown argument: {}", arg); + print_help(); + exit(1); + } + } }