#completion #autocomplete #cli-applications #low-level #cli

shell_completion

使用纯Rust编写shell完成脚本

2个版本

0.0.2 2023年1月5日
0.0.1 2019年5月19日

#11 in #autocomplete

MIT/Apache

11KB
185 代码行(不包括注释)

shell_completion Build Status crates.io badge

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

许可证

根据您选择以下任一许可证授权:

由您选择。

贡献

所有形式的贡献都很有价值。我已经为许多高层次探索主题创建了问题,任何那里的反馈都将非常有帮助,推动这个crate向正确的方向发展。当然,代码贡献也同样受到欢迎。

除非您明确声明,否则根据Apache-2.0许可定义的,您有意提交以包含在工作中的任何贡献,应双重许可如上所述,不附加任何额外条款或条件。

无运行时依赖