From 668bb4787ac14e74574f57b47097cfb3ff9935a8 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Sun, 29 Sep 2019 12:57:07 -0700 Subject: [PATCH] Add command-line arguments to dmdoc --- src/dmdoc/main.rs | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/dmdoc/main.rs b/src/dmdoc/main.rs index fb6505d3..89d4a6bf 100644 --- a/src/dmdoc/main.rs +++ b/src/dmdoc/main.rs @@ -36,16 +36,30 @@ thread_local! { } fn main() -> Result<(), Box> { - for arg in std::env::args() { + // command-line args + let mut environment = None; + let mut output_path = "dmdoc".to_owned(); + let mut modules_path = "code".to_owned(); + + let mut args = std::env::args(); + let _ = args.next(); // skip executable name + while let Some(arg) = args.next() { if arg == "-V" || arg == "--version" { println!("{}", BUILD_INFO); return Ok(()); + } else if arg == "-e" { + environment = Some(args.next().expect("must specify a value for -e")); + } else if arg == "-o" { + output_path = args.next().expect("must specify a value for -o"); + } else if arg == "--modules" { + modules_path = args.next().expect("must specify a value for --modules"); + } else { + return Err(format!("unknown argument: {}", arg).into()); } } - // TODO: command-line args - let output_path: &Path = "dmdoc".as_ref(); - let modules_path: &Path = "code".as_ref(); + let output_path: &Path = output_path.as_ref(); + let modules_path: &Path = modules_path.as_ref(); // load tera templates println!("loading templates"); @@ -80,11 +94,14 @@ fn main() -> Result<(), Box> { }); // parse environment - let environment = match dm::detect_environment_default()? { - Some(env) => env, - None => { - eprintln!("Unable to find a .dme file in this directory"); - return Ok(()); + let environment = match environment { + Some(e) => e.into(), + None => match dm::detect_environment_default()? { + Some(env) => env, + None => { + eprintln!("Unable to find a .dme file in this directory"); + return Ok(()); + } } }; println!("parsing {}", environment.display());