use std::ffi::OsString; use lexopt::prelude::*; #[derive(Debug, Default)] pub(crate) struct Args { pub(crate) version: bool, pub(crate) clear_screen: bool, ///Pass the 'color' argument to the nmstermio module where it will set the ///foreground color of the unencrypted characters as they are ///revealed. Valid arguments are "white", "yellow", "magenta", "blue", ///"green", "red", and "cyan". pub(crate) foreground: Option, /// Set the autoDecrypt flag according to the true/false value of the /// 'setting' argument. When set to true, nmseffect_exec() will not /// require a key press to start the decryption effect. pub(crate) autodecrypt: bool, /// Set the maskBlank flag according to the true/false value of the /// 'setting' argument. When set to true, blank spaces characters /// will be masked as well. pub(crate) mask_blanks: bool, } pub(crate) fn parse_arguments() -> Result { let mut parser = lexopt::Parser::from_env(); let mut args = Args::default(); while let Some(arg) = parser.next()? { match arg { Short('a') => { args.autodecrypt = true; } Short('c') => { args.clear_screen = true; } Short('f') => { let foreground = parser.value()?; args.foreground = Some(foreground); } Short('s') => { args.mask_blanks = true; } Short('v') => { args.version = true; } _ => return Err(arg.unexpected()), } } Ok(args) }