From 555c1d76c0d945f42e51f1573391a88035d8e9c4 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 27 Feb 2026 19:01:06 +0100 Subject: [PATCH] Add CLI args for broker address and port --- Cargo.toml | 1 + README.md | 7 ++++++- src/main.rs | 17 +++++++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7c5d0f0..5d0f06a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,3 +8,4 @@ tokio = { version = "1", features = ["full"] } rumqttc = "0.24" serde = { version = "1", features = ["derive"] } serde_json = "1" +clap = { version = "4", features = ["derive"] } diff --git a/README.md b/README.md index c05b860..687a7b1 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,14 @@ A simple Rust application that publishes messages to an MQTT broker. ## Usage ```bash -cargo run +cargo run -- --broker 192.168.1.100 --port 1883 ``` +### Arguments + +- `broker`: MQTT broker address (default: `localhost`) +- `port`: MQTT broker port (default: `1883`) + ## Configuration Edit `src/main.rs` to customize: diff --git a/src/main.rs b/src/main.rs index 797976a..71c380c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,26 @@ +use clap::Parser; use rumqttc::{AsyncClient, Event, MqttOptions, Packet, QoS}; use std::time::Duration; use tokio::time::sleep; +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +struct Args { + #[arg(default_value = "localhost")] + broker: String, + + #[arg(default_value_t = 1883)] + port: u16, +} + #[tokio::main] async fn main() -> Result<(), Box> { + let args = Args::parse(); + let mut mqttoptions = MqttOptions::new( "mqtt-publisher", - "localhost", - 1883, + args.broker, + args.port, ); mqttoptions.set_keep_alive(Duration::from_secs(30));