diff options
| author | Carlo Sala <carlosalag@protonmail.com> | 2022-02-09 22:55:05 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-09 22:55:05 +0100 | 
| commit | c41f2e7a0947139db79ae234b994467ff921f4cb (patch) | |
| tree | a7774e01f8d9d860933c59ddfdf96f2f543556f8 /plugins/rbw | |
| parent | 897fa09f1517e648bfbeb8549db4848a66f19c4f (diff) | |
| download | zsh-c41f2e7a0947139db79ae234b994467ff921f4cb.tar.gz zsh-c41f2e7a0947139db79ae234b994467ff921f4cb.tar.bz2 zsh-c41f2e7a0947139db79ae234b994467ff921f4cb.zip  | |
feat(rbw): add `rbwpw` function to copy passwords to the clipboard (#10639)
Diffstat (limited to 'plugins/rbw')
| -rw-r--r-- | plugins/rbw/README.md | 10 | ||||
| -rw-r--r-- | plugins/rbw/rbw.plugin.zsh | 30 | 
2 files changed, 40 insertions, 0 deletions
diff --git a/plugins/rbw/README.md b/plugins/rbw/README.md index 87d073d24..cae36cead 100644 --- a/plugins/rbw/README.md +++ b/plugins/rbw/README.md @@ -9,4 +9,14 @@ To use it, add `rbw` to the plugins array in your zshrc file:  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. diff --git a/plugins/rbw/rbw.plugin.zsh b/plugins/rbw/rbw.plugin.zsh index 56683ad06..523e35aff 100644 --- a/plugins/rbw/rbw.plugin.zsh +++ b/plugins/rbw/rbw.plugin.zsh @@ -17,3 +17,33 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rbw" ]]; then  fi  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  | 
