From f1d442d79866c1e8634d4ed73da995fde75e8d6d Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Mon, 22 Jun 2026 13:41:28 +0700 Subject: [PATCH] refactor(cli): separate binary entry points from library logic Move the main execution logic to a dedicated internal module and create distinct entry files for each binary to improve project structure and build configuration. --- crates/irtt-cli/Cargo.toml | 6 +++--- crates/irtt-cli/src/bin/irtt-cli.rs | 5 +++++ crates/irtt-cli/src/bin/irtt-rs.rs | 5 +++++ crates/irtt-cli/src/bin/irtt-tui.rs | 5 +++++ crates/irtt-cli/src/{main.rs => entry.rs} | 12 ++++++------ crates/irtt-cli/src/lib.rs | 2 ++ 6 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 crates/irtt-cli/src/bin/irtt-cli.rs create mode 100644 crates/irtt-cli/src/bin/irtt-rs.rs create mode 100644 crates/irtt-cli/src/bin/irtt-tui.rs rename crates/irtt-cli/src/{main.rs => entry.rs} (87%) diff --git a/crates/irtt-cli/Cargo.toml b/crates/irtt-cli/Cargo.toml index 79553b4..60d5c8a 100644 --- a/crates/irtt-cli/Cargo.toml +++ b/crates/irtt-cli/Cargo.toml @@ -16,16 +16,16 @@ doc = false [[bin]] name = "irtt-rs" -path = "src/main.rs" +path = "src/bin/irtt-rs.rs" [[bin]] name = "irtt-cli" -path = "src/main.rs" +path = "src/bin/irtt-cli.rs" required-features = ["client"] [[bin]] name = "irtt-tui" -path = "src/main.rs" +path = "src/bin/irtt-tui.rs" required-features = ["tui"] [features] diff --git a/crates/irtt-cli/src/bin/irtt-cli.rs b/crates/irtt-cli/src/bin/irtt-cli.rs new file mode 100644 index 0000000..9bab261 --- /dev/null +++ b/crates/irtt-cli/src/bin/irtt-cli.rs @@ -0,0 +1,5 @@ +use std::process::ExitCode; + +fn main() -> ExitCode { + irtt_cli::entry::main() +} diff --git a/crates/irtt-cli/src/bin/irtt-rs.rs b/crates/irtt-cli/src/bin/irtt-rs.rs new file mode 100644 index 0000000..9bab261 --- /dev/null +++ b/crates/irtt-cli/src/bin/irtt-rs.rs @@ -0,0 +1,5 @@ +use std::process::ExitCode; + +fn main() -> ExitCode { + irtt_cli::entry::main() +} diff --git a/crates/irtt-cli/src/bin/irtt-tui.rs b/crates/irtt-cli/src/bin/irtt-tui.rs new file mode 100644 index 0000000..9bab261 --- /dev/null +++ b/crates/irtt-cli/src/bin/irtt-tui.rs @@ -0,0 +1,5 @@ +use std::process::ExitCode; + +fn main() -> ExitCode { + irtt_cli::entry::main() +} diff --git a/crates/irtt-cli/src/main.rs b/crates/irtt-cli/src/entry.rs similarity index 87% rename from crates/irtt-cli/src/main.rs rename to crates/irtt-cli/src/entry.rs index 96d4cd9..a5cc899 100644 --- a/crates/irtt-cli/src/main.rs +++ b/crates/irtt-cli/src/entry.rs @@ -5,12 +5,12 @@ use std::{ sync::{atomic::AtomicBool, Arc}, }; -use irtt_cli::{ +use crate::{ applet::{dispatch_from_argv, AppletDispatch, RequestedApplet}, signal::install_signal_handler, }; -fn main() -> ExitCode { +pub fn main() -> ExitCode { match run_from_env() { Ok(()) => ExitCode::SUCCESS, Err(err) => { @@ -48,8 +48,8 @@ fn run_client_applet( ) -> Result<(), Box> { use clap::Parser; - let args = irtt_cli::cmd::client::ClientArgs::parse_from(argv); - irtt_cli::cmd::client::run_stream(args, shutdown_requested) + let args = crate::cmd::client::ClientArgs::parse_from(argv); + crate::cmd::client::run_stream(args, shutdown_requested) } #[cfg(not(feature = "client"))] @@ -67,8 +67,8 @@ fn run_tui_applet( ) -> Result<(), Box> { use clap::Parser; - let args = irtt_cli::cmd::tui::TuiArgs::parse_from(argv); - irtt_cli::cmd::tui::run_tui(args, shutdown_requested) + let args = crate::cmd::tui::TuiArgs::parse_from(argv); + crate::cmd::tui::run_tui(args, shutdown_requested) } #[cfg(not(feature = "tui"))] diff --git a/crates/irtt-cli/src/lib.rs b/crates/irtt-cli/src/lib.rs index 313549e..03debfc 100644 --- a/crates/irtt-cli/src/lib.rs +++ b/crates/irtt-cli/src/lib.rs @@ -2,5 +2,7 @@ pub mod applet; pub mod cmd; +#[doc(hidden)] +pub mod entry; pub mod shared; pub mod signal;