diff --git a/Cargo.toml b/Cargo.toml index c9e5430..70e16c8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "frog_gopher" -version = "0.1.1" +version = "0.1.2" authors = ["Perl I. W. "] [dependencies] diff --git a/src/main.rs b/src/main.rs index 20f01bb..10b06de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,6 +23,8 @@ mod cli { use super::protocol::{ExternalAddr,ParseExternalAddrError}; + const VERSION: &'static str = env!("CARGO_PKG_VERSION"); + #[derive(Clone, Debug)] pub struct Config { pub int_addr: SocketAddr, @@ -34,6 +36,7 @@ mod cli { Usage(&'a str, Options), BadOpt(Box), MissingOpt(String), + Version, } impl<'a> From for Error<'a> { @@ -58,6 +61,7 @@ mod cli { opts.optopt("x", "ext-addr", "EXTERNAL ADDRESS.", "EXT_ADDR"); opts.optopt("k", "api-key", "YOUR FROG.TIPS API KEY.", "API_KEY"); opts.optflag("h", "help", "SHOW THIS HELP THEN EXIT."); + opts.optflag("v", "version", "SHOW THE CURRENT VERSION THEN EXIT."); let matches = match opts.parse(&args[1..]) { Ok(m) => { m } @@ -68,6 +72,10 @@ mod cli { return Err(Error::Usage(program, opts)); } + if matches.opt_present("v") { + return Err(Error::Version); + } + let addr: SocketAddr = if !matches.free.is_empty() { try!(matches.free[0].clone().parse()) } else { @@ -97,6 +105,7 @@ mod cli { Error::Usage(program, opts) => print_usage(&program, opts), Error::BadOpt(err) => println!("ERROR: INVALID VALUE: '{}'.", err), Error::MissingOpt(name) => println!("ERROR: {} IS REQUIRED.", name), + Error::Version => println!("{}, version {}", program, VERSION), }, } }