diff options
author | Tuowen Zhao <ztuowen@gmail.com> | 2022-02-19 17:12:23 -0600 |
---|---|---|
committer | Tuowen Zhao <ztuowen@gmail.com> | 2022-02-19 17:12:23 -0600 |
commit | cae9a2b797649379e865e6bd73bc67e294e4ac77 (patch) | |
tree | 481419eff4bc761c3ca516704427394193473419 /plugins/rbw | |
parent | 49edbf438ed690c76e6b2af80368c59404cf0167 (diff) | |
parent | 3427da4057dbe302933a7b5b19b4e23bfb9d0969 (diff) | |
download | zsh-cae9a2b797649379e865e6bd73bc67e294e4ac77.tar.gz zsh-cae9a2b797649379e865e6bd73bc67e294e4ac77.tar.bz2 zsh-cae9a2b797649379e865e6bd73bc67e294e4ac77.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'plugins/rbw')
-rw-r--r-- | plugins/rbw/README.md | 10 | ||||
-rw-r--r-- | plugins/rbw/rbw.plugin.zsh | 32 |
2 files changed, 41 insertions, 1 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 3825be7a6..523e35aff 100644 --- a/plugins/rbw/rbw.plugin.zsh +++ b/plugins/rbw/rbw.plugin.zsh @@ -11,9 +11,39 @@ command mkdir -p "$ZSH_CACHE_DIR/completions" # If the completion file doesn't exist yet, we need to autoload it and # bind it to `rbw`. Otherwise, compinit will have already done that. if [[ ! -f "$ZSH_CACHE_DIR/completions/_rbw" ]]; then - declare -A _comps + typeset -g -A _comps autoload -Uz _rbw _comps[rbw]=_rbw 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 |