wini 0.2.0

CLI utility for wini
Documentation
use {clap::ArgMatches, std::ffi::OsString};

pub fn resolve_args_from_arg_match(arg_match: &ArgMatches) -> Option<Vec<OsString>> {
    arg_match.subcommand().map(|arg| {
        // ...
        let mut args = vec!["just".into(), arg.0.into()];

        if let Some(new_args) = resolve_args_from_arg_match(arg.1) {
            args.extend(new_args);
        }

        args.extend(arg.1.ids().flat_map(|id| {
            let mut res = Vec::new();

            if let Some(occurrences) = arg.1.get_occurrences::<String>(id.as_ref()) {
                for mut occurrence_values in occurrences {
                    for occurrence in occurrence_values.by_ref() {
                        res.push(occurrence.into());
                    }
                }
            }

            res
        }));

        args
    })
}

pub fn run_from_arg_match(arg_match: &ArgMatches) {
    let args = resolve_args_from_arg_match(arg_match).unwrap_or_default();
    let _ = pub_just::run(args.iter());
}