feat(rbw): add rbwpw function to copy passwords to the clipboard (#10639)

This commit is contained in:
Carlo Sala 2022-02-09 22:55:05 +01:00 committed by GitHub
parent 897fa09f15
commit c41f2e7a09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 0 deletions

View File

@ -9,4 +9,14 @@ To use it, add `rbw` to the plugins array in your zshrc file:
plugins=(... rbw) plugins=(... rbw)
``` ```
## `rbwpw`
The `rbwpw` function is a wrapper around `rbw`. It copies the password in the
clipboard for the service you ask for and clears the clipboard 20s later.
The usage is as follows:
```zsh
rbwpw <service>
```
This plugin does not add any aliases. This plugin does not add any aliases.

View File

@ -17,3 +17,33 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rbw" ]]; then
fi fi
rbw gen-completions zsh >| "$ZSH_CACHE_DIR/completions/_rbw" &| rbw gen-completions zsh >| "$ZSH_CACHE_DIR/completions/_rbw" &|
# rbwpw function copies the password of a service to the clipboard
# and clears it after 20 seconds
function rbwpw {
if [[ $# -ne 1 ]]; then
echo "usage: rbwpw <service>"
return 1
fi
local service=$1
if ! rbw unlock; then
echo "rbw is locked"
return 1
fi
local pw=$(rbw get $service 2>/dev/null)
if [[ -z $pw ]]; then
echo "$service not found"
return 1
fi
echo -n $pw | clipcopy
echo "password for $service copied!"
{sleep 20 && clipcopy </dev/null 2>/dev/null} &|
}
function _rbwpw {
local -a services
services=("${(@f)$(rbw ls 2>/dev/null)}")
[[ -n "$services" ]] && compadd -a -- services
}
compdef _rbwpw rbwpw