Merge pull request #2941 from mcornella/fix-pass-completion

Update pass completion and fix syntax and autoloading
This commit is contained in:
Robby Russell 2014-08-31 10:55:35 -07:00
commit 6caed46356

View File

@ -1,13 +1,16 @@
#compdef pass #compdef pass
#autoload #autoload
# Copyright (C) 2012: # Copyright (C) 2012 - 2014:
# Johan Venant <jvenant@invicem.pro> # Johan Venant <jvenant@invicem.pro>
# Brian Mattern <rephorm@rephorm.com> # Brian Mattern <rephorm@rephorm.com>
# Jason A. Donenfeld <Jason@zx2c4.com>. # Jason A. Donenfeld <Jason@zx2c4.com>.
# Santiago Borrazás <sanbor@gmail.com>
# All Rights Reserved. # All Rights Reserved.
# This file is licensed under the GPLv2+. Please see COPYING for more information. #
# This file is licensed under the GPLv2+.
# Please visit http://git.zx2c4.com/password-store/tree/COPYING for more information.
#
# Oh my zsh plugin maintainer: Santiago Borrazás <sanbor@gmail.com>
_pass () { _pass () {
@ -23,8 +26,8 @@ _pass () {
case "${cmd}" in case "${cmd}" in
init) init)
_arguments : \ _arguments : \
"-r[re-encrypt existing passwords]" \ "-p[gpg-id will only be applied to this subfolder]" \
"--reencrypt[re-encrypt existing passwords]" "--path[gpg-id will only be applied to this subfolder]"
_pass_complete_keys _pass_complete_keys
;; ;;
ls|list|edit) ls|list|edit)
@ -43,9 +46,19 @@ _pass () {
"-n[don't include symbols in password]" \ "-n[don't include symbols in password]" \
"--no-symbols[don't include symbols in password]" \ "--no-symbols[don't include symbols in password]" \
"-c[copy password to the clipboard]" \ "-c[copy password to the clipboard]" \
"--clip[copy password to the clipboard]" "--clip[copy password to the clipboard]" \
"-f[force overwrite]" \
"--force[force overwrite]" \
"-i[replace first line]" \
"--in-place[replace first line]"
_pass_complete_entries_with_subdirs _pass_complete_entries_with_subdirs
;; ;;
cp|copy|mv|rename)
_arguments : \
"-f[force rename]" \
"--force[force rename]"
_pass_complete_entries_with_subdirs
;;
rm) rm)
_arguments : \ _arguments : \
"-f[force deletion]" \ "-f[force deletion]" \
@ -75,10 +88,14 @@ _pass () {
subcommands=( subcommands=(
"init:Initialize new password storage" "init:Initialize new password storage"
"ls:List passwords" "ls:List passwords"
"find:Find password files or directories based on pattern"
"grep:Search inside decrypted password files for matching pattern"
"show:Decrypt and print a password" "show:Decrypt and print a password"
"insert:Insert a new password" "insert:Insert a new password"
"generate:Generate a new password using pwgen" "generate:Generate a new password using pwgen"
"edit:Edit a password with \$EDITOR" "edit:Edit a password with \$EDITOR"
"mv:Rename the password"
"cp:Copy the password"
"rm:Remove the password" "rm:Remove the password"
"git:Call git on the password store" "git:Call git on the password store"
"version:Output version information" "version:Output version information"
@ -101,7 +118,7 @@ _pass_cmd_show () {
_pass_complete_entries_helper () { _pass_complete_entries_helper () {
local IFS=$'\n' local IFS=$'\n'
local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}" local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
_values -C 'passwords' $(find -L "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort) _values -C 'passwords' ${$(find -L "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print 2>/dev/null | sed -e "s#${prefix}/\{0,1\}##" -e 's#\.gpg##' | sort):-""}
} }
_pass_complete_entries_with_subdirs () { _pass_complete_entries_with_subdirs () {
@ -117,3 +134,5 @@ _pass_complete_keys () {
# Extract names and email addresses from gpg --list-keys # Extract names and email addresses from gpg --list-keys
_values 'gpg keys' $(gpg2 --list-secret-keys --with-colons | cut -d : -f 10 | sort -u | sed '/^$/d') _values 'gpg keys' $(gpg2 --list-secret-keys --with-colons | cut -d : -f 10 | sort -u | sed '/^$/d')
} }
_pass