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 命令行界面
1,915 每月下载量
在 5 crates 中使用
52KB
940 代码行数(不包括注释)
reedline-repl-rs
帮助您基于nushell的reedline创建应用程序精美REPL的库。
特性
- 流行的 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()
}
运行上述示例
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