Support generating shell completions (#235)
* Add gen-completions subcommand for generating shell completions * Update documentation about generating shell completions * Include the shell completions in release tarball
This commit is contained in:
parent
28f78ba4e1
commit
0abd063e01
4 changed files with 44 additions and 2 deletions
7
.github/workflows/release.yaml
vendored
7
.github/workflows/release.yaml
vendored
|
@ -116,7 +116,7 @@ jobs:
|
|||
PKG_STAGING="${{ env.CICD_INTERMEDIATES_DIR }}/package"
|
||||
ARCHIVE_DIR="${PKG_STAGING}/${PKG_BASENAME}/"
|
||||
mkdir -p "${ARCHIVE_DIR}"
|
||||
mkdir -p "${ARCHIVE_DIR}/autocomplete"
|
||||
mkdir -p "${ARCHIVE_DIR}/completions"
|
||||
|
||||
# Binary
|
||||
cp "${{ steps.strip.outputs.BIN_PATH }}" "$ARCHIVE_DIR"
|
||||
|
@ -124,6 +124,11 @@ jobs:
|
|||
# README, LICENSE and CHANGELOG files
|
||||
cp "README.md" "LICENSE" "$ARCHIVE_DIR"
|
||||
|
||||
# Shell completions
|
||||
for sh in 'bash' 'fish' 'zsh'; do
|
||||
"${{ steps.strip.outputs.BIN_PATH }}" gen-completions -s $sh -o "${ARCHIVE_DIR}/completions"
|
||||
done
|
||||
|
||||
# base compressed package
|
||||
pushd "${PKG_STAGING}/" >/dev/null
|
||||
case ${{ matrix.job.target }} in
|
||||
|
|
|
@ -59,6 +59,7 @@ I wanted to. And I **really** don't want to.
|
|||
- [History stats](docs/stats.md)
|
||||
- [Running your own server](docs/server.md)
|
||||
- [Key binding](docs/key-binding.md)
|
||||
- [Shell completions](docs/shell-completions.md)
|
||||
|
||||
## Supported Shells
|
||||
|
||||
|
|
19
docs/shell-completions.md
Normal file
19
docs/shell-completions.md
Normal file
|
@ -0,0 +1,19 @@
|
|||
# `atuin gen-completions`
|
||||
|
||||
[Shell completions](https://en.wikipedia.org/wiki/Command-line_completion) for Atuin can be generated by specifying the output directory and desired shell via `gen-completions` subcommand.
|
||||
|
||||
```
|
||||
$ atuin gen-completions --shell bash --out-dir $HOME
|
||||
|
||||
Shell completion for BASH is generated in "/home/user"
|
||||
```
|
||||
|
||||
Possible values for the `--shell` argument are the following:
|
||||
|
||||
- `bash`
|
||||
- `fish`
|
||||
- `zsh`
|
||||
- `powershell`
|
||||
- `elvish`
|
||||
|
||||
Also, see the [supported shells](./../README.md#supported-shells).
|
|
@ -1,6 +1,7 @@
|
|||
use std::path::PathBuf;
|
||||
|
||||
use eyre::{Result, WrapErr};
|
||||
use structopt::clap::Shell;
|
||||
use structopt::StructOpt;
|
||||
|
||||
use atuin_client::database::Sqlite;
|
||||
|
@ -92,6 +93,15 @@ pub enum AtuinCmd {
|
|||
|
||||
#[structopt(about = "print the encryption key for transfer to another machine")]
|
||||
Key,
|
||||
|
||||
#[structopt(about = "generate shell completions")]
|
||||
GenCompletions {
|
||||
#[structopt(long, short, help = "set the shell for generating completions")]
|
||||
shell: Shell,
|
||||
|
||||
#[structopt(long, short, help = "set the output directory")]
|
||||
out_dir: String,
|
||||
},
|
||||
}
|
||||
|
||||
impl AtuinCmd {
|
||||
|
@ -157,11 +167,18 @@ impl AtuinCmd {
|
|||
println!("{}", encode);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Self::Uuid => {
|
||||
println!("{}", uuid_v4());
|
||||
Ok(())
|
||||
}
|
||||
Self::GenCompletions { shell, out_dir } => {
|
||||
AtuinCmd::clap().gen_completions(env!("CARGO_PKG_NAME"), shell, &out_dir);
|
||||
println!(
|
||||
"Shell completion for {} is generated in {:?}",
|
||||
shell, out_dir
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue