From 8b68b1ba9bd2763e3b6cf4a2a9a8f87b54ad3df4 Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Mon, 8 Dec 2025 09:30:00 +0800 Subject: [PATCH] feat: Complete main application and documentation - Implement main.rs with clap CLI argument parsing - Add --continuous flag for continuous monitoring mode - Add --interval flag for configurable update intervals - Add --config flag for custom config file paths - Initialize env_logger for debug logging - Create comprehensive .gitignore for Rust and Python - Write README-rust.md with usage instructions - Handle config loading with fallback to defaults - Support graceful Ctrl+C interruption in continuous mode --- .gitignore | 27 +++++++++++++++++++++---- README-rust.md | 37 ++++++++++++++++++++++++++++++++++ src/main.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 112 insertions(+), 6 deletions(-) create mode 100644 README-rust.md diff --git a/.gitignore b/.gitignore index 80b5f9a..f8bb299 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +# Rust +/target +Cargo.lock +**/*.rs.bk + +# Python __pycache__/ *.py[cod] *$py.class @@ -18,11 +24,24 @@ wheels/ *.egg-info/ .installed.cfg *.egg -.env -.venv -env/ venv/ -.DS_Store +ENV/ +env/ + +# Logs logs/ *.log + +# Export data exports/ + +# IDEs +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db diff --git a/README-rust.md b/README-rust.md new file mode 100644 index 0000000..6400013 --- /dev/null +++ b/README-rust.md @@ -0,0 +1,37 @@ +# Tracker (Rust) + +A high-performance system monitoring tool written in Rust. + +## Features + +- CPU, memory, disk, and network monitoring +- Process tracking with top CPU consumers +- Temperature sensor support (platform-dependent) +- Configurable alert thresholds +- Automatic logging to daily log files +- Data export to JSON/CSV formats +- Cross-platform compatibility + +## Installation + +```bash +cargo build --release +``` + +## Usage + +```bash +# Single run +cargo run + +# Continuous monitoring +cargo run -- --continuous --interval 5 +``` + +## Configuration + +Edit `config.json` to customize monitoring behavior and alert thresholds. + +## License + +MIT diff --git a/src/main.rs b/src/main.rs index e7a11a9..adce467 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,53 @@ -fn main() { - println!("Hello, world!"); +use clap::Parser; +use std::thread; +use std::time::Duration; + +mod config; +mod monitor; +mod process; +mod temperature; +mod alert; +mod logger; +mod exporter; + +use config::Config; +use monitor::SystemMonitor; + +#[derive(Parser, Debug)] +#[command(name = "tracker-rs")] +#[command(about = "System Tracker - Monitor machine health and performance", long_about = None)] +struct Args { + /// Run in continuous monitoring mode + #[arg(short, long)] + continuous: bool, + + /// Update interval in seconds + #[arg(short, long, default_value_t = 5)] + interval: u64, + + /// Path to config file + #[arg(long, default_value = "config.json")] + config: String, +} + +fn main() { + env_logger::init(); + let args = Args::parse(); + + let config = Config::load(&args.config).unwrap_or_else(|_| { + log::warn!("Failed to load config, using defaults"); + Config::default() + }); + + let mut monitor = SystemMonitor::new(config); + + if args.continuous { + log::info!("Starting continuous monitoring mode with {}s interval", args.interval); + loop { + monitor.display_stats(); + thread::sleep(Duration::from_secs(args.interval)); + } + } else { + monitor.display_stats(); + } }