#arguments-parser #argument #command-line-arguments #parser #arg

bin+lib migparser

适用于小型应用的简单参数解析器

3个不稳定版本

0.2.1 2023年3月23日
0.2.0 2023年3月11日
0.1.6 2023年2月5日
0.1.4 2023年1月27日

#1002命令行界面

MIT 许可证

28KB
666

migparser

这个Crate实现了一个非常简单的参数解析器,灵感来自Python。它允许添加不同类型的参数(int、uint、bool、string、float),并使用不同的选项(必需的、存储为true、存储为false等)来定制行为。

示例

use migparser::{ArgumentOption, ArgumentParser, DataType, ListType};

fn main() -> Result<(), String> {
    let mut parser = ArgumentParser::new();
    /* The type of argument (flag, positional, ...) is identified
       by the name of the argument and data type.
    */
    parser.add_argument("positionalarg", None, DataType::String, None, None)?;

    parser.add_argument(
        "--necessaryarg",
        Some(vec!["-na".to_owned()]),
        DataType::Int,
        Some(vec![ArgumentOption::Necessary]),
        None,
    )?;
    parser.add_argument(
        "--optionalarg",
        Some(vec!["-oa".to_owned()]),
        DataType::Float,
        None,
        None,
    )?;
    parser.add_argument(
        "--flagarg",
        Some(vec!["-f".to_owned()]),
        DataType::Bool,
        Some(vec![ArgumentOption::StoreTrue]), /* StoreTrue or StoreFalse for flag */
        None,
    )?;

    parser.add_argument(
        "--listarg",
        Some(vec!["-la".to_owned()]),
        DataType::List(ListType::Int),
        Some(vec![ArgumentOption::NArgs(4)]), /* StoreTrue or StoreFalse for flag */
        None,
    )?;
    
    parser.print_data();
    parser.parse_arguments();
    parser.print_data();

    parser2.parse_arguments_from_text("miguel -na 1 -f 1 -oa 2.3 -la 12 34 78 23".to_owned());
    parser2.print_data();
}

运行它

cargo run miguel -na 1 -f 1 -oa 2.3

依赖项

~1.5MB
~36K SLoC