bolt/core/
process_args.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::parser::Command;

pub fn process_args(cmd: &Command, args: &Vec<String>) -> (Vec<String>, String) {
    let flags: Vec<String> = args
        .iter()
        .map(|x| x.to_owned())
        .filter(|x| {
            let val = x.clone().to_owned();
            let full: Vec<String> = cmd.options.iter().map(|f| f.full.clone()).collect();
            let short: Vec<String> = cmd.options.iter().map(|f| f.short.clone()).collect();

            full.contains(&val) || short.contains(&val)
        })
        .collect();

    let mut name = String::from("");
    for arg in args {
        if !flags.contains(&arg) {
            name = arg.clone()
        }
    }

    (flags, name)
}