#命令行工具 #应用程序 #构建 #CLI 应用 #命令行界面 #快速 #命令行应用程序

falsework

一个快速构建 Rust 命令行应用程序的工具库

5 个版本

0.1.3 2021 年 8 月 25 日
0.1.2 2021 年 8 月 25 日
0.1.1 2021 年 8 月 24 日
0.1.0 2021 年 8 月 24 日
0.0.1-dev2021 年 8 月 7 日

#5 in #命令行应用程序

MIT 许可证

16KB
264

Falsework

https://img.shields.io/badge/falsework-Rust%20CLI-brightgreen Go codecov https://img.shields.io/github/repo-size/auula/falsework https://img.shields.io/crates/v/falsework License

一个快速构建 Rust 命令行应用程序的工具库。

导入依赖

在你的项目中添加以下依赖:

[dependencies]
falsework = "0.1.0"

快速构建

use std::error::Error;
use falsework::{app, cmd};

fn main() {
    
    // 通过falsework创建一个骨架
    let mut app = falsework::app::new();
    
    
    // 应用元数据信息
    app.name("calculator")
        .author("Leon Ding <[email protected]>")
        .version("0.0.1")
        .description("A calculator that only supports addition.");

    // 构建命令行项
    let mut command = cmd::CommandItem {
        // run add命令所对应命令行逻辑代码
        run: |ctx| -> Result<(), Box<dyn Error>> {
            // 通过上下文获取flag绑定的数据
            let x = ctx.value_of("--x").parse::<i32>().unwrap();
            let y = ctx.value_of("--y").parse::<i32>().unwrap();
            println!("{} + {} = {}", x, y, x + y);
            // 如果处理发生了错误则调用 cmd::err_msg 会优雅的退出
            // Err(cmd::err_msg("Application produce error!"));
            Ok(())
        },
        // 命令帮助信息
        long: "这是一个加法计算程序需要两个flag参数 --x --y",
        // 命令介绍
        short: "加法计算",
        // 通过add激活命令
        r#use: "add",
    }.build();
    
    // 给add命令绑定flag
    command.bound_flag("--x", "加数");
    command.bound_flag("--y", "被加数");
    
    // 往app里面添加一个命令集
    app.add_cmd(command);
    
    // 最后run 程序开始监听命令行输入
    app.run();
}

上面的例子运行结果

$: ./calculator add --x=10 --y=10
10 + 10 = 20

到这里,你就快速构建了一个命令行计算器,你只需要编写你核心的逻辑,其他操作由 falsework 帮助你完成。

  1. 例如,如果我不记得命令了,只记得一个单词或字母,程序会帮助你修复:
$: ./calculator a

You need this command ?
	add
a : The corresponding command set was not found!
  1. 可以看到程序提示你有一个对应的 add 命令可以使用,如果你不知道 add 有什么参数,在后面加上 --help 即可获得帮助信息:
$: ./calculator add --help

Help:
  这是一个加法计算程序需要两个flag参数 --x --y

Usage:
  calculator add [flags]

Flags:
  --y, 被加数
  --x, 加数

构建出来的主程序预览:

$: ./calculator


A calculator that only supports addition.
calculator 0.0.1 Leon Ding <[email protected]>

Usage:
  calculator  [command]

Available Commands:
  add	加法计算

Flags:
  --help   help for calculator

Use "calculator [command] --help" for more information about a command.

其他操作

有多种构建方式,例如下面的:

    #[test]
    fn test_add_commands() {
        let mut app = falsework::app::new();

        app.name("calculator")
            .author("Leon Ding <[email protected]>")
            .version("0.0.2")
            .description("A command line program built with Falsework.");


        let command_list = vec![
            cmd::CommandItem {
                run: |_ctx| -> Result<(), Box<dyn Error>> {
                    // _ctx.args 获取命令行参数
                    println!("call foo command.");
                    Ok(())
                },
                long: "这是一个测试命令,使用foo将调用foo命令。",
                short: "foo命令",
                r#use: "foo",
            },
            cmd::CommandItem {
                run: |_ctx| -> Result<(), Box<dyn Error>> {
                    println!("call bar command.");
                    Ok(())
                },
                long: "这是一个测试命令,使用bar将调用bar命令。",
                short: "bar命令",
                r#use: "bar",
            },
        ].iter().map(|c| c.build()).collect();

        app.commands(command_list);

        println!("{:#?}", app);
    }

其他

本项目也是笔者一个练手写的 crate,看了半个月的 Rust 书,学了一点基础,不知道写什么所以写了这个玩玩。。 如果对你有帮助记得 starfalsework 目前构建一些 command line application 问题不大,不过源代码写的不太好。。。后面再改进吧。

无运行时依赖