7 个版本 (稳定版)

2.0.0 2019年2月25日
1.3.0 2019年2月23日
0.1.0 2019年2月18日

#794 in 命令行界面

Apache-2.0

46KB
178

Arg Soup

Arg soup 是一个超级简单的 Rust 命令行参数解析器。

它遵循非常简单的“动作参数”和“标志参数”原则

动作参数简单来说就是引发程序执行某些操作的参数。例如:如果有人用 “--help” 运行你的程序,你可能会想要打印出一些信息。你可以通过动作参数来实现这一点。

快速使用

arg-soup = "*" 添加到你的 Cargo.toml 文件的依赖部分。

为什么使用 arg-soup?

arg-soup 非常简单和轻量。所有功能都可以通过引入一个单独的结构体(Parser)到作用域中,然后使用其提供的方法来访问。所有功能都是直观且非常快速,这意味着你可以在几分钟内熟悉每个功能!

此外,arg-soup 正在不断地更新和改进。并且,新功能通常会根据请求添加!

动作参数的使用示例
use arg_soup::Parser;
use std::env;

fn main() {
    // Collect all of the arguments from the environment
    let args: Vec<String> = env::args().collect();
    // Create a new parser with these arguments
    let mut parser = Parser::new(args);
    // Add an action arg and associate it with an action
    parser.add_action("--help", Box::new(|| println!("This is an example of my crate")));
    parser.execute_actions();
}

使用上述代码,当程序以 “--help” 运行时,println!("This is an example of my crate") 将被执行。

标志参数同样简单。它们从命令行收集一些值。例如,如果你想获取某个文件的路径,你可以通过运行程序并使用标志参数 “-o file.txt” 来实现这一点。

标志参数的使用示例

use arg_soup::Parser;
use std::env;

fn main() {
    // Collect all of the arguments from the environment
    let args: Vec<String> = env::args().collect();
    // Create a new parser with these arguments
    let mut parser = Parser::new(args);
    // Create a flag arg and have it collect values
    parser.add_flag("-o");
    let flags = parser.collect_flags();
    println!("{:?}", flags);
}

上述代码将返回一个映射到值的哈希表。

当然,可以根据需要将它们组合起来使用

use arg_soup::Parser;
use std::env;

fn main() {
    let args: Vec<String> = env::args().collect();
    let mut parser = Parser::new(args);
    parser.add_action("--help", Box::new(|| println!("Some text")));
    parser.add_action("--cats", Box::new(|| println!("Meow")));
    parser.add_flag("-o");
    parser.add_flag("-z");
    
    // `actions` will hold the name of all executed arguments
    let actions = parser.execute_actions();
    let flags = parser.collect_flags();
    println!("{:?}", flags);
}

其他方法

// Will return true if argument is present and false if not
let b = parser.get_bool("--test");
// Will return Some(&str) if it's value is present, and None if not
let v = parser.get_val("-o");

待办事项

实现 CustomAction 特征

就是这样!你上面看到的所有功能都是你可以使用的功能。这个 '库' 非常微小,旨在使你的时间变得轻松一些。

运行示例文件中的代码时的一些示例输出:

没有运行时依赖