#repl #clap #interpreter

reedline-repl-rs

基于reedline和clap生成应用程序精美REPL的库

19个版本 (11个稳定版)

1.2.1 2024年8月1日
1.1.1 2024年4月1日
1.1.0 2024年3月2日
1.0.7 2023年7月31日
0.3.2 2022年6月8日

#130 in 命令行界面

Download history 464/week @ 2024-05-02 332/week @ 2024-05-09 590/week @ 2024-05-16 343/week @ 2024-05-23 360/week @ 2024-05-30 399/week @ 2024-06-06 541/week @ 2024-06-13 243/week @ 2024-06-20 382/week @ 2024-06-27 471/week @ 2024-07-04 457/week @ 2024-07-11 631/week @ 2024-07-18 500/week @ 2024-07-25 459/week @ 2024-08-01 505/week @ 2024-08-08 315/week @ 2024-08-15

1,915 每月下载量
5 crates 中使用

MIT 许可证

52KB
940 代码行数(不包括注释)

reedline-repl-rs

帮助您基于nushell的reedline创建应用程序精美REPL的库。

License: MIT Crates.io Documentation

特性

  • 流行的 clap crate 命令 作为配置接口使用
  • 还支持基于特征标志的 clap-derive 配置,请参阅 derive 示例
  • 通用的编辑功能,从其他shell(例如bash,fish,zsh)使用时应该感觉熟悉。
  • 带有图形选择菜单的交互式Tab补全
  • 鱼风格的历史自动提示
  • 带有交互式搜索选项的历史(可选地持久化到文件,可以支持多个会话访问同一文件)
  • 可配置的快捷键(默认为emacs风格绑定)。
  • 可配置的提示符,在命令运行后更新钩子
  • 命令语法高亮显示
  • 异步支持的特性标志
  • shlex 特性标志,用于可选的POSIX兼容行分割
  • 提示:使用 CTRL+R 搜索历史,使用 CTRL+C 清除输入,使用 CTRL+D 退出REPL

基本示例代码

//! Minimal example
use reedline_repl_rs::clap::{Arg, ArgMatches, Command};
use reedline_repl_rs::{Repl, Result};

/// Write "Hello" with given name
fn hello<T>(args: ArgMatches, _context: &mut T) -> Result<Option<String>> {
    Ok(Some(format!(
        "Hello, {}",
        args.get_one::<String>("who").unwrap()
    )))
}

fn main() -> Result<()> {
    let mut repl = Repl::new(())
        .with_name("MyApp")
        .with_version("v0.1.0")
        .with_description("My very cool app")
        .with_banner("Welcome to MyApp")
        .with_command(
            Command::new("hello")
                .arg(Arg::new("who").required(true))
                .about("Greetings!"),
            hello,
        );
    repl.run()
}

运行上述示例

Colored Terminal Output

Welcome to MyApp
MyApp〉help
MyApp v0.1.0: My very cool app

COMMANDS:
    hello    Greetings!
    help     Print this message or the help of the given subcommand(s)

MyApp〉help hello
hello
Greetings!

USAGE:
    hello <who>

ARGS:
    <who>

OPTIONS:
    -h, --help    Print help information
MyApp〉hello Friend
Hello, Friend
MyApp〉

测试

cargo test --features async

将运行文档测试(编译示例)。注意,examples/async.rs 需要 async 特性。

感谢

repl-rs分支而来,由Jacklund修改,改为使用reedline,这是一个高级的readline克隆版本,也是nushell的基础。

依赖项

~9–20MB
~282K SLoC