Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions src/cli/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use crate::utils::formatted_strings::APP_VERSION;

/// Parse CLI arguments, and exit if `--help`, `--version`, or an
/// unknown argument was supplied
pub fn parse_cli_args() {
let args = std::env::args().skip(1);
for arg in args {
match arg.as_str() {
"--help" | "-h" => print_help(),
"--version" | "-v" => print_version(),
_ => {
unknown_argument(&arg);
std::process::exit(1);
}
}
std::process::exit(0);
}
}

fn print_help() {
println!(
"Application to comfortably monitor your Internet traffic\n\
Usage: sniffnet [OPTIONS]\n\
Options:\n\
\t-h, --help Print help\n\
\t-v, --version Print version info\n\
(Run without options to start the app)"
);
}

fn print_version() {
println!("sniffnet {APP_VERSION}");
}

fn unknown_argument(arg: &str) {
eprintln!(
"sniffnet: unknown option '{arg}'\n\
For more information, try 'sniffnet --help'"
);
}
4 changes: 4 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ use iced::{window, Application, Settings};

use chart::types::chart_type::ChartType;
use chart::types::traffic_chart::TrafficChart;
use cli::parse_cli_args;
use configs::types::config_device::ConfigDevice;
use configs::types::config_settings::ConfigSettings;
use gui::pages::types::running_page::RunningPage;
Expand All @@ -32,6 +33,7 @@ use utils::formatted_strings::print_cli_welcome_message;
use crate::secondary_threads::check_updates::set_newer_release_status;

mod chart;
mod cli;
mod configs;
mod countries;
mod gui;
Expand All @@ -46,6 +48,8 @@ mod utils;
///
/// It initializes shared variables and loads configuration parameters
pub fn main() -> iced::Result {
parse_cli_args();

let current_capture_id1 = Arc::new(Mutex::new(0));
let current_capture_id2 = current_capture_id1.clone();

Expand Down
3 changes: 2 additions & 1 deletion src/networking/types/data_info.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
//! Module defining the `DataInfo` struct, which represents incoming and outgoing packets and bytes.

use crate::networking::types::traffic_direction::TrafficDirection;
use std::ops::AddAssign;

use crate::networking::types::traffic_direction::TrafficDirection;

/// Amount of exchanged data (packets and bytes) incoming and outgoing
#[derive(Clone, Default, Copy)]
pub struct DataInfo {
Expand Down