5 个版本
使用旧的 Rust 2015
0.2.2 | 2018年2月2日 |
---|---|
0.2.1 | 2017年11月20日 |
0.1.3 | 2017年6月13日 |
0.1.2 | 2017年5月22日 |
0.1.1 | 2017年3月30日 |
#4 in #contextual
33KB
752 代码行,不包括注释
TShell
基于 rustyline 的具有自动完成和上下文帮助功能的命令树框架
支持的平台
- Linux
构建
本项目使用 Cargo 和 Rust 稳定版
cargo build --release
示例
#[macro_use]
extern crate tshell;
use tshell::{CommandTree, CommandResult};
use std::collections::HashMap;
fn world(args: HashMap<String, &str>, o_context: &mut Option<Context>, history: &HashMap<String, String>) -> CommandResult<Option<String>> {
println!("World");
Ok(None)
}
fn darkness(args: HashMap<String, &str>, o_context: &mut Option<Context>, history: &HashMap<String, String>) -> CommandResult<Option<String>> {
if let Some(friend) = args.get("friend") {
println!("Darkness, friend = {}", friend);
}
Ok(None)
}
fn main() {
let mut root = shell_command_tree!{my_cli,
"MyCLI",
"0.1.0",
[
shell_command_node!{
cmd: hello,
txt_help: "Hello Root",
nodes: [
shell_command_node!{
cmd: world,
txt_help: "World",
callback: world
},
shell_command_node!{
cmd: darkness,
txt_help: "Darkness",
callback: darkness,
args: [friend => true]
}
]
}]
};
root.run();
}
crates.io
您可以通过在您的 Cargo.toml
中添加以下内容来在项目中使用此包
[dependencies]
tshell = "^0.1"
功能
- 命令树结构
- 命令完成
- 上下文帮助
- 命令历史
- 上下文切换
内置命令
命令 | 操作 |
---|---|
up | 移动到上一层,退出当前上下文 |
top | 移动到顶级上下文 |
exit 或 quit | 退出 shell |
help | 列出所有可用命令 |
? | 上下文帮助 |
[Object] ? | 该对象的帮助信息 |
待办事项
- 从文件读取输入
- 输出到文件
依赖项
~6.5MB
~130K SLoC