aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index c6201db..833c846 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -77,6 +77,10 @@ struct Arguments {
image_type: ImageType,
}
+fn print_help() {
+ println!("Usage: wmap [-t|--type IMAGE_TYPE] [-s|--stage STAGE] [-o|--output OUTPUT_FILE] INPUT_FILE");
+}
+
fn parse_arguments() -> Result<Arguments, lexopt::Error> {
use lexopt::prelude::*;
@@ -102,7 +106,12 @@ fn parse_arguments() -> Result<Arguments, lexopt::Error> {
input = Some(value.string()?);
}
Short('h') | Long("help") => {
- println!("Usage: wmap [-t|--type=png|svg] [-o=OUTPUT_FILE] INPUT_FILE");
+ print_help();
+ std::process::exit(0);
+ }
+ Short('v') | Long("version") => {
+ let version = env!("CARGO_PKG_VERSION");
+ println!("{version}");
std::process::exit(0);
}
_ => return Err(argument.unexpected()),
@@ -123,7 +132,7 @@ fn parse_arguments() -> Result<Arguments, lexopt::Error> {
})
}
-fn main() -> IoResult<()> {
+fn run() -> IoResult<()> {
let arguments = parse_arguments().map_err(|_| IoError::other("Unable to parse arguments"))?;
arguments.input.try_exists()?;
@@ -141,3 +150,21 @@ fn main() -> IoResult<()> {
write(arguments.output, image_data)?;
Ok(())
}
+
+fn main() -> IoResult<()> {
+ let result = run();
+
+ if cfg!(debug_assertions) {
+ result
+ } else {
+ match result {
+ Ok(()) => Ok(()),
+ Err(e) => {
+ eprintln!("Error: {e}");
+ eprintln!();
+ print_help();
+ std::process::exit(1);
+ }
+ }
+ }
+}