main: Accept addresses as command-line arguments

Now that the `MacAddress` struct can handle parsing arbitrary input
without panicking, the main entry point can accept values from the user
in the form of command-line arguments. Users can pass one or more
addresses as positional arguments to the `wakeonlan` program, and a
magic packet will be sent to each one in series.
master
Dustin 2018-09-29 11:42:34 -05:00
parent 823cfc2593
commit 60dd1f72dc
1 changed files with 16 additions and 3 deletions

View File

@ -1,9 +1,22 @@
use std::env;
mod mac; mod mac;
mod magic; mod magic;
fn main() { fn main() {
let mac = mac::MacAddress::from_string("0c:9d:92:0e:3a:41").unwrap(); let mut args = env::args();
args.next();
for arg in args {
let mac = match mac::MacAddress::from_string(&arg) {
Ok(m) => m,
Err(e) => {
eprintln!("Invalid address: {} ({})", &arg, e);
continue;
},
};
let packet = magic::MagicPacket::new(&mac); let packet = magic::MagicPacket::new(&mac);
println!("Sending magic packet to {}", mac);
packet.send().unwrap(); packet.send().unwrap();
}
} }