2个版本
0.0.2 | 2023年1月5日 |
---|---|
0.0.1 | 2019年5月19日 |
#11 in #autocomplete
11KB
185 代码行(不包括注释)
shell_completion
Shell 完成脚本,为CLI应用程序提供自动完成功能,通常用Bash编写。这个crate提供了在Rust中编写shell完成脚本的底层原语。
用法
Shell 完成脚本以正常的Rust二进制形式编写。下面是一个最小示例
use shell_completion::{BashCompletionInput, CompletionInput, CompletionSet};
fn main() {
let input = BashCompletionInput::from_env()
.expect("Missing expected environment variables");
let completions = input.complete_subcommand(vec!["add", "commit"]);
completions.suggest();
}
更高级的示例可以在本工作区内的 cargo_completion
crate 中找到。要尝试它,运行 cargo install --force --path cargo_completion/ && complete -C _cargo_completion cargo
,然后在同一shell中输入 cargo run --<TAB>
。
complete
命令注册了我们的shell完成脚本以供 cargo
使用。请注意,complete
命令不会持久存在(它们仅在运行 complete
的shell中有效),因此如果您想长期使用完成功能,您可能需要将 complete
命令添加到您的 ~/.bash_profile
中。
有关更多详细信息,请参阅 这篇博客文章。
用户
此crate尚未准备好投入生产使用,但如果您是早期采用者,请随时提交PR将您自己添加到以下列表中。
- N/A
许可证
根据您选择以下任一许可证授权:
- Apache License,版本2.0,(LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
所有形式的贡献都很有价值。我已经为许多高层次探索主题创建了问题,任何那里的反馈都将非常有帮助,推动这个crate向正确的方向发展。当然,代码贡献也同样受到欢迎。
除非您明确声明,否则根据Apache-2.0许可定义的,您有意提交以包含在工作中的任何贡献,应双重许可如上所述,不附加任何额外条款或条件。