ohmyzsh/plugins/gopass/_gopass
2018-05-23 20:49:48 +03:00

268 lines
12 KiB
Text

#compdef gopass
# The slightly more awesome standard unix password manager
# for teams
# https://www.justwatch.com/gopass
# https://github.com/justwatchcom/gopass
_gopass () {
local cmd
if (( CURRENT > 2)); then
cmd=${words[2]}
curcontext="${curcontext%:*:*}:gopass-$cmd"
(( CURRENT-- ))
shift words
case "${cmd}" in
agent)
local -a subcommands
subcommands=(
"client:Start a simple agent test client"
)
_describe -t commands "gopass agent" subcommands
;;
audit)
local -a subcommands
subcommands=(
"hibp:Detect leaked passwords"
)
_arguments : "--jobs[The number of jobs to run concurrently when auditing]"
_describe -t commands "gopass audit" subcommands
;;
binary|bin)
local -a subcommands
subcommands=(
"cat:Print content of a secret to stdout or insert from stdin"
"sum:Compute the SHA256 checksum"
"copy:Copy files from or to the password store"
"move:Move files from or to the password store"
)
_describe -t commands "gopass binary" subcommands
;;
clone)
_arguments : "--path[Path to clone the repo to]" "--crypto[Select crypto backend (gpg, gpgcli, plain, xc)]" "--sync[Select sync backend (git, gitcli, gogit, noop)]"
_describe -t commands "gopass clone" subcommands
;;
completion)
local -a subcommands
subcommands=(
"bash:Source for auto completion in bash"
"zsh:Source for auto completion in zsh"
"fish:Source for auto completion in fish"
"openbsdksh:Source for auto completion in OpenBSD's ksh"
)
_describe -t commands "gopass completion" subcommands
;;
config)
_arguments : "--store[Set value to substore config]"
_describe -t commands "gopass config" subcommands
;;
copy|cp)
_arguments : "--force[Force to copy the secret and overwrite existing one]"
_describe -t commands "gopass copy" subcommands
_gopass_complete_passwords;;
create|new)
_describe -t commands "gopass create" subcommands
;;
delete|remove|rm)
_arguments : "--recursive[f]" "--force[Force to delete the secret]"
_describe -t commands "gopass delete" subcommands
_gopass_complete_passwords;;
edit|set)
_arguments : "--editor[Use this editor binary]"
_describe -t commands "gopass edit" subcommands
_gopass_complete_passwords;;
find|search)
_arguments : "--clip[Copy the password into the clipboard]"
_describe -t commands "gopass find" subcommands
;;
fsck)
_describe -t commands "gopass fsck" subcommands
;;
generate)
_arguments : "--clip[Copy the generated password to the clipboard]" "--print[Print the generated password to the terminal]" "--force[Force to overwrite existing password]" "--edit[Open secret for editing after generating a password]" "--symbols[Use symbols in the password]" "--xkcd[Use multiple random english words combined to a password. If no separator is specified, the words are combined without spaces/separator and the first character of words is capitalised]" "--xkcdsep[Word separator for generated xkcd style password. Implies -xkcd]" "--xkcdlang[Language to generate password from, currently de (german) and en (english, default) are supported]"
_describe -t commands "gopass generate" subcommands
;;
jsonapi)
local -a subcommands
subcommands=(
"listen:Listen and respond to messages via stdin/stdout"
"configure:Setup gopass native messaging manifest for selected browser"
)
_describe -t commands "gopass jsonapi" subcommands
;;
otp|totp|hotp)
_arguments : "--clip[Copy the time based token into the clipboard]" "--qr[Write QR code to `FILE`]"
_describe -t commands "gopass otp" subcommands
;;
git)
local -a subcommands
subcommands=(
"init:Init git repo"
"remote:Mangage git remotes"
"push:Push to remote"
"pull:Pull from remote"
)
_describe -t commands "gopass git" subcommands
;;
grep)
_describe -t commands "gopass grep" subcommands
;;
history|hist)
_arguments : "--password[Include passwords in output]"
_describe -t commands "gopass history" subcommands
;;
init)
_arguments : "--path[Set the sub store path to operate on]" "--store[Set the name of the sub store]" "--crypto[Select crypto backend (gpg, gpgcli, plain, xc)]" "--rcs[Select sync backend (git, gitcli, gogit, noop)]"
_describe -t commands "gopass init" subcommands
;;
insert)
_arguments : "--echo[Display secret while typing]" "--multiline[Insert using $EDITOR]" "--force[Overwrite any existing secret and do not prompt to confirm recipients]"
_describe -t commands "gopass insert" subcommands
;;
list|ls)
_arguments : "--limit[Max tree depth]" "--flat[Print flat list]" "--strip-prefix[Strip prefix from filtered entries]"
_describe -t commands "gopass list" subcommands
;;
move|mv)
_arguments : "--force[Force to move the secret and overwrite existing one]"
_describe -t commands "gopass move" subcommands
_gopass_complete_passwords;;
mounts)
local -a subcommands
subcommands=(
"add:Mount a password store"
"remove:Umount an mounted password store"
)
_describe -t commands "gopass mounts" subcommands
;;
recipients)
local -a subcommands
subcommands=(
"add:Add any number of Recipients to any store"
"remove:Remove any number of Recipients from any store"
)
_describe -t commands "gopass recipients" subcommands
;;
setup)
_arguments : "--remote[URL to a git remote, will attempt to join this team]" "--alias[Local mount point for the given remote]" "--create[Create a new team (default: false, i.e. join an existing team)]" "--name[Firstname and Lastname for unattended GPG key generation]" "--email[EMail for unattended GPG key generation]" "--crypto[Select crypto backend (gpg, gpgcli, plain, xc)]" "--rcs[Select sync backend (git, gitcli, gogit, noop)]"
_describe -t commands "gopass setup" subcommands
;;
show)
_arguments : "--clip[Copy the first line of the secret into the clipboard]" "--qr[Print the first line of the secret as QR Code]" "--force[Display the password even if safecontent is enabled]" "--password[Display only the password]" "--sync[Sync before attempting to display the secret]" "--revision[Show a past revision]"
_describe -t commands "gopass show" subcommands
_gopass_complete_passwords;;
sync)
_arguments : "--store[Select the store to sync]"
_describe -t commands "gopass sync" subcommands
;;
templates)
local -a subcommands
subcommands=(
"show:Show a secret template."
"edit:Edit secret templates."
"remove:Remove secret templates."
)
_describe -t commands "gopass templates" subcommands
;;
unclip)
_arguments : "--timeout[Time to wait]" "--force[Clear clipboard even if checksum mismatches]"
_describe -t commands "gopass unclip" subcommands
;;
update)
_arguments : "--pre[Update to prereleases]"
_describe -t commands "gopass update" subcommands
;;
version)
_describe -t commands "gopass version" subcommands
;;
xc)
local -a subcommands
subcommands=(
"list-private-keys:"
"list-public-keys:"
"generate:"
"export:"
"import:"
"export-private-key:"
"import-private-key:"
"remove:"
"encrypt:"
"decrypt:"
)
_describe -t commands "gopass xc" subcommands
;;
help|h)
_describe -t commands "gopass help" subcommands
;;
*)
_gopass_complete_passwords
;;
esac
else
local -a subcommands
subcommands=(
"agent:Start gopass-agent"
"audit:Scan for weak passwords"
"binary:Assist with Binary/Base64 content"
"clone:Clone a store from git"
"completion:Bash and ZSH completion"
"config:Edit configuration"
"copy:Copy secrets from one location to another"
"create:Easy creation of new secrets"
"delete:Remove secrets"
"edit:Edit new or existing secret"
"find:Search for secrets"
"fsck:Check store integrity"
"generate:Generate a new password"
"jsonapi:Run gopass as jsonapi e.g. for browser plugins"
"otp:Generate time or hmac based tokens"
"git:Run any git command inside a password store"
"grep:Search for secrets files containing search-string when decrypted."
"history:Show password history"
"init:Initialize new password store."
"insert:Insert a new secret"
"list:List existing secrets"
"move:Move secrets from one location to another"
"mounts:Edit mounted stores"
"recipients:Edit recipient permissions"
"setup:Initialize a new password store"
"show:Display a secret"
"sync:Sync all local stores with their remotes"
"templates:Edit templates"
"unclip:Internal command to clear clipboard"
"update:Check for updates"
"version:Display version"
"xc:Experimental Crypto"
"help:Shows a list of commands or help for one command"
)
_describe -t command 'gopass' subcommands
_arguments : "--yes[Assume yes on all yes/no questions or use the default on all others]" "--clip[Copy the first line of the secret into the clipboard]" "--help[show help]" "--version[print the version]"
_gopass_complete_passwords
fi
}
_gopass_complete_keys () {
local IFS=$'\n'
_values 'gpg keys' $(gpg2 --list-secret-keys --with-colons 2> /dev/null | cut -d : -f 10 | sort -u | sed '/^$/d')
}
_gopass_complete_passwords () {
_arguments : \
"--clip[Copy the first line of the secret into the clipboard]"
_values 'passwords' $(gopass ls --flat)
}
_gopass