mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-06-05 05:03:16 +02:00
Add gopass autocompletion plugin
This commit is contained in:
parent
8f3737f45b
commit
eee91af6fa
1 changed files with 268 additions and 0 deletions
268
plugins/gopass/_gopass
Normal file
268
plugins/gopass/_gopass
Normal file
|
|
@ -0,0 +1,268 @@
|
||||||
|
#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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue