mirror of
https://github.com/sharkdp/bat.git
synced 2025-01-05 21:28:50 +01:00
Include shell completions in the executable
This commit is contained in:
parent
f81d4dc321
commit
dbe25ba5e6
@ -63,5 +63,22 @@ pub fn gen_man_and_comp() -> anyhow::Result<()> {
|
|||||||
out_dir.join("assets/completions/bat.zsh"),
|
out_dir.join("assets/completions/bat.zsh"),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_BASH={}",
|
||||||
|
out_dir.join("assets/completions/bat.bash").display()
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_FISH={}",
|
||||||
|
out_dir.join("assets/completions/bat.fish").display()
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_PS1={}",
|
||||||
|
out_dir.join("assets/completions/_bat.ps1").display()
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_ZSH={}",
|
||||||
|
out_dir.join("assets/completions/bat.zsh").display()
|
||||||
|
);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -202,6 +202,9 @@ Options:
|
|||||||
This option exists for POSIX-compliance reasons ('u' is for 'unbuffered'). The output is
|
This option exists for POSIX-compliance reasons ('u' is for 'unbuffered'). The output is
|
||||||
always unbuffered - this option is simply ignored.
|
always unbuffered - this option is simply ignored.
|
||||||
|
|
||||||
|
--completion <SHELL>
|
||||||
|
Show shell completion for a certain shell. [possible values: bash, fish, zsh, ps1]
|
||||||
|
|
||||||
--diagnostic
|
--diagnostic
|
||||||
Show diagnostic information for bug reports.
|
Show diagnostic information for bug reports.
|
||||||
|
|
||||||
|
@ -58,6 +58,8 @@ Options:
|
|||||||
Only print the lines from N to M.
|
Only print the lines from N to M.
|
||||||
-L, --list-languages
|
-L, --list-languages
|
||||||
Display all supported languages.
|
Display all supported languages.
|
||||||
|
--completion <SHELL>
|
||||||
|
Show shell completion for a certain shell. [possible values: bash, fish, zsh, ps1]
|
||||||
-h, --help
|
-h, --help
|
||||||
Print help (see more with '--help')
|
Print help (see more with '--help')
|
||||||
-V, --version
|
-V, --version
|
||||||
|
@ -564,6 +564,17 @@ pub fn build_app(interactive_output: bool) -> Command {
|
|||||||
.help("Do not load custom assets"),
|
.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")]
|
#[cfg(feature = "lessopen")]
|
||||||
{
|
{
|
||||||
app = app
|
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 app;
|
||||||
mod assets;
|
mod assets;
|
||||||
mod clap_app;
|
mod clap_app;
|
||||||
|
#[cfg(feature = "application")]
|
||||||
|
mod completions;
|
||||||
mod config;
|
mod config;
|
||||||
mod directories;
|
mod directories;
|
||||||
mod input;
|
mod input;
|
||||||
@ -347,6 +349,18 @@ fn run() -> Result<bool> {
|
|||||||
return Ok(true);
|
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() {
|
match app.matches.subcommand() {
|
||||||
Some(("cache", cache_matches)) => {
|
Some(("cache", cache_matches)) => {
|
||||||
// If there is a file named 'cache' in the current working directory,
|
// If there is a file named 'cache' in the current working directory,
|
||||||
|
Loading…
Reference in New Issue
Block a user