diff --git a/docs/how-to.md b/docs/how-to.md index a1c40844..12e9334b 100644 --- a/docs/how-to.md +++ b/docs/how-to.md @@ -403,8 +403,73 @@ The `container system logs` command allows you to look at the log messages that % -## Setup shell completion +## Generating and installing completion scripts -The `container --generate-completion-script [zsh|bash|fish]` command generates completion scripts for the provided shell. +### Overview -A detailed guide on how to install the completion scripts can be found [here](https://swiftpackageindex.com/apple/swift-argument-parser/1.5.1/documentation/argumentparser/installingcompletionscripts) +The `container --generate-completion-script [zsh|bash|fish]` command generates completion scripts for the provided shell. Below is a detailed guide on how to install the completion scripts. + +> [!NOTE] +> See the [swift-argument-parser documentation](https://apple.github.io/swift-argument-parser/documentation/argumentparser/installingcompletionscripts/#Installing-Zsh-Completions) for more information about generating and installing shell completion scripts. + +### Installing `zsh` completions + +If you have [oh-my-zsh](https://ohmyz.sh/) installed, you already have a directory of automatically loaded completion scripts — `.oh-my-zsh/completions`. Copy your new completion script to that directory. If the `completions` directory does not exist, simply make it. + +```zsh +mkdir -p ~/.oh-my-zsh/completions +container --generate-completion-script zsh > ~/.oh-my-zsh/completions/_container +source ~/.oh-my-zsh/completions/_container +``` + +> [!NOTE] +> Your completion script must have the filename `_container`. + +Without oh-my-zsh, you’ll need to add a path for completion scripts to your function path, and turn on completion script autoloading. First, add these lines to your `~/.zshrc` file: + +```bash +fpath=(~/.zsh/completion $fpath) +autoload -U compinit +compinit +``` + +Next, create a directory at `~/.zsh/completion` and copy the completion script to the new directory. + +```zsh +mkdir -p ~/.zsh/completion +container --generate-completion-script zsh > ~/.zsh/completion/_container +source ~/.zshrc +``` + +### Installing `bash` completions + +If you have [bash-completion](https://github.com/scop/bash-completion) installed, you can just copy your new completion script to the `bash_completion.d` directory. + +> [!NOTE] +> The path to the directory is dependent on how bash-completion was installed. Find the correct path and then copy the completion script there. For example, if you used homebrew to install `bash-completion`: +> ```bash +> container --generate-completion-script bash > /opt/homebrew/etc/bash_completion.d/container +> source /opt/homebrew/etc/bash_completion.d/container +> ``` + +Without bash-completion, you’ll need to source the completion script directly. Create and copy it to a directory such as `~/.bash_completions`. + +```bash +mkdir -p ~/.bash_completions +container --generate-completion-script bash > ~/.bash_completions/container +source /opt/homebrew/etc/bash_completion.d/container +``` + +Furthermore, you can add the following line to `~/.bash_profile` or `~/.bashrc`, in order for every new bash session to have autocompletion ready. + +```bash +source ~/.bash_completions/container +``` + +### Installing `fish` completions + +Copy the completion script to any path listed in the environment variable `$fish_completion_path`. + +```bash +container --generate-completion-script fish > ~/.config/fish/completions/container.fish +```