diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5d0e21..64cc6a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,4 +16,6 @@ jobs: - name: Clippy run: cargo clippy --all-targets --all-features -D warnings - name: Build - run: cargo build --release --workspace \ No newline at end of file + run: cargo build --release --workspace + - name: Smoke test (client --help) + run: cargo run -p socktop -- --help diff --git a/socktop/src/main.rs b/socktop/src/main.rs index 309e9be..27126fa 100644 --- a/socktop/src/main.rs +++ b/socktop/src/main.rs @@ -11,12 +11,19 @@ use app::App; #[tokio::main] async fn main() -> Result<(), Box> { - let args: Vec = env::args().collect(); - if args.len() < 2 { - eprintln!("Usage: {} ws://HOST:PORT/ws", args[0]); - std::process::exit(1); - } - let url = args[1].clone(); + let mut args = env::args(); + let prog = args.next().unwrap_or_else(|| "socktop".into()); + let url = match args.next() { + Some(flag) if flag == "-h" || flag == "--help" => { + println!("Usage: {prog} ws://HOST:PORT/ws"); + return Ok(()); + } + Some(url) => url, + None => { + eprintln!("Usage: {prog} ws://HOST:PORT/ws"); + std::process::exit(1); + } + }; let mut app = App::new(); app.run(&url).await