mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-02 03:12:25 +01:00
Include shell completions in the executable
This commit is contained in:
@@ -564,6 +564,17 @@ pub fn build_app(interactive_output: bool) -> Command {
|
||||
.help("Do not load custom assets"),
|
||||
);
|
||||
|
||||
#[cfg(feature = "application")]
|
||||
{
|
||||
app = app.arg(
|
||||
Arg::new("completion")
|
||||
.long("completion")
|
||||
.value_name("SHELL")
|
||||
.value_parser(["bash", "fish", "ps1", "zsh"])
|
||||
.help("Show shell completion for a certain shell. [possible values: bash, fish, zsh, ps1]"),
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(feature = "lessopen")]
|
||||
{
|
||||
app = app
|
||||
|
6
src/bin/bat/completions.rs
Normal file
6
src/bin/bat/completions.rs
Normal file
@@ -0,0 +1,6 @@
|
||||
use std::env;
|
||||
|
||||
pub const BASH_COMPLETION: &str = include_str!(env!("BAT_GENERATED_COMPLETION_BASH"));
|
||||
pub const FISH_COMPLETION: &str = include_str!(env!("BAT_GENERATED_COMPLETION_FISH"));
|
||||
pub const PS1_COMPLETION: &str = include_str!(env!("BAT_GENERATED_COMPLETION_PS1"));
|
||||
pub const ZSH_COMPLETION: &str = include_str!(env!("BAT_GENERATED_COMPLETION_ZSH"));
|
@@ -3,6 +3,8 @@
|
||||
mod app;
|
||||
mod assets;
|
||||
mod clap_app;
|
||||
#[cfg(feature = "application")]
|
||||
mod completions;
|
||||
mod config;
|
||||
mod directories;
|
||||
mod input;
|
||||
@@ -347,6 +349,18 @@ fn run() -> Result<bool> {
|
||||
return Ok(true);
|
||||
}
|
||||
|
||||
#[cfg(feature = "application")]
|
||||
if let Some(shell) = app.matches.get_one::<String>("completion") {
|
||||
match shell.as_str() {
|
||||
"bash" => println!("{}", completions::BASH_COMPLETION),
|
||||
"fish" => println!("{}", completions::FISH_COMPLETION),
|
||||
"ps1" => println!("{}", completions::PS1_COMPLETION),
|
||||
"zsh" => println!("{}", completions::ZSH_COMPLETION),
|
||||
_ => unreachable!("No completion for shell '{}' available.", shell),
|
||||
}
|
||||
return Ok(true);
|
||||
}
|
||||
|
||||
match app.matches.subcommand() {
|
||||
Some(("cache", cache_matches)) => {
|
||||
// If there is a file named 'cache' in the current working directory,
|
||||
|
Reference in New Issue
Block a user