diff --git a/README.md b/README.md index dda407c..82e4f85 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ you can do it with the `change-password` command. ### Changing the location of the credentials file -Simply put this into your `.zshrc` (or `.{YourSell}rc` or `.profile`): +Simply put this into your `.zshrc` (or `.{YourShell}rc` or `.profile`): ``` export TOTP_CLI_CREDENTIAL_FILE="/mnt/mydrive/totp-credentials" @@ -113,3 +113,19 @@ Note: It's a filename not just a directory. Note: It does not traverse through the given path, parent directory has to be there already. + +### Zsh Completion + +A function to provide tab-completion for zsh is in the file `_totp-cli`. +When installing or packaging totp-cli this should preferably be +installed in `$prefix/share/zsh/site-functions`. Otherwise, it can be +installed by copying to a directory where zsh searches for completion +functions (the `$fpath` array). If you, for example, put all completion +functions into the folder `~/.zsh/completions` you must add the +following to your zsh main config file (`.zshrc`): + +``` +fpath=( ~/.zsh/completions $fpath ) +autoload -U compinit +compinit +``` diff --git a/_totp-cli b/_totp-cli new file mode 100644 index 0000000..7c69e21 --- /dev/null +++ b/_totp-cli @@ -0,0 +1,33 @@ +#compdef totp-cli + +# Completion function for zsh +# Install this file in $prefix/share/zsh/site-functions or +# update the fpath array in zsh to include its location + +local -a commands=( + 'change-password:change password' + 'delete:delete an account or a whole namespace' + 'generate:generate a specific OTP' + 'instant:generate an OTP from TOTP_TOKEN without the Storage backend' + 'list:list all available namespaces or accounts under a namespace' + 'update:check and update totp-cli itself' + 'version:display version information' + 'add-token:add new token' + 'help:display general or command-specific usage information' +) + +case $CURRENT:${words[2]} in + 2:*|3:help) + _describe -t commands command commands + ;; + 3:(add-token|delete|generate|list)) + _message -e namespaces namespace + ;; + 4:(add-token|delete|generate|list)) + _message -e accounts account + ;; + *) + _message 'no more arguments' + ;; +esac +