diff options
Diffstat (limited to 'src/args.rs')
| -rw-r--r-- | src/args.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/args.rs b/src/args.rs new file mode 100644 index 0000000..6753664 --- /dev/null +++ b/src/args.rs @@ -0,0 +1,51 @@ +use std::env; + +pub struct Args { + pub directory: String, + pub n_sentences: u32, + pub unique: bool, +} + +impl Args { + pub fn parse() -> Option<Args> { + let arg_vec: Vec<String> = env::args().collect(); + let mut i = 1; //skip first arg (execution path) + + let mut n_sentences = 1; + let mut unique = false; + let mut opt_directory: Option<String> = None; + + while i < arg_vec.len() { + match arg_vec[i].as_str() { + "-n" | "--sentences" => { + if i + 1 < arg_vec.len() { + n_sentences = arg_vec[i+1].parse::<u32>().ok()?; + } else { + return None; + } + i += 2; + }, + "--unique" => { + unique = true; + i += 1; + }, + other => { + opt_directory = match opt_directory { + Some(_) => { return None; }, + None => Some(other.to_string()), + }; + i += 1; + }, + } + } + + let directory = opt_directory?; + + Some(Args { + directory, + n_sentences, + unique, + }) + } +} + |
