From 39f8865732787563cdb2909f260206e435c69f0d Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Thu, 15 Jul 2010 03:16:43 +0000 Subject: Michael Hwang: 28075: add gpg-zip completion and other improvements to _gpg --- ChangeLog | 7 +- Completion/Unix/Command/_gpg | 327 ++++++++++++++++++++++++++----------------- 2 files changed, 207 insertions(+), 127 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4a8b6fc3d..3c6ede754 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-07-15 Doug Kearns + + * Michael Hwang: 28075: Completion/Unix/Command/_gpg: add gpg-zip + completion and other general improvements. + 2010-07-13 Peter Stephenson * Jörg Sommer: 28063: Completion/Unix/Command/_rubber: suppress @@ -13367,5 +13372,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5023 $ +* $Revision: 1.5024 $ ***************************************************** diff --git a/Completion/Unix/Command/_gpg b/Completion/Unix/Command/_gpg index 368bfda2b..3f86411f6 100644 --- a/Completion/Unix/Command/_gpg +++ b/Completion/Unix/Command/_gpg @@ -1,134 +1,209 @@ -#compdef gpg gpgv +#compdef gpg gpgv gpg-zip local curcontext="$curcontext" state line expl ret=1 +local -a gpgbasic gpgextra gpgv gpgzip typeset -A opt_args -_arguments -C -s -S -A "-*" \ - '(-s --sign)'{-s,--sign}'[make a signature]' \ - '--clearsign[make a clear text signature]' \ - '(-b --detach-sign)'{-b,--detach-sign}'[make a detached signature]' \ - '(-e --encrypt)'{-e,--encrypt}'[encrypt data. this option may be combined with --sign]' \ - '(-c --symmetric)'{-c,--symmetric}'[encrypt with symmetric cypher only]' \ - '--store[store only]' \ - '--decrypt[decrypt file or stdin]' \ - '--verify[verify a signature]' \ - '--verify-files[verify a list of files]' \ - '(-f --encrypt-files)'{-f,--encrypt-files}'[encrypt files]' \ - '--decrypt-files[decrypt files]' \ - '--list-keys[list all keys]' \ - '--list-public-keys[list all public keys]' \ - '--list-secret-keys[list all secret keys]' \ - '--list-sigs[lists keys and signatures]:key attachment:->public-keys' \ - '--list-options[modify what the various --list-* commands show]' \ - '--check-sigs[list key, signatures and check them]:key attachment:->public-keys' \ - '--fingerprint[list all keys with their fingerprints]:key attachment:->public-keys' \ - '--list-packets[list only the sequence of packets]' \ - '--gen-key[generate a new pair key]' \ - '--edit-key[a menu for edit yours keys]:key attachment:->public-keys' \ - '--sign-key[sign a key]:key attachment:->public-keys'\ - '--lsign-key[sign a key but mark as non-exportable]:key attachment:->public-keys' \ - '--nrsign-key[sign a key non-revocably]' \ - '--delete-key[remove key from public keyring]:key attachment:->public-keys' \ - '--delete-secret-key[remove key from public & private keyring]:key attachment:->secret-keys' \ - '--delete-secret-and-public-key:key attachment:->secret-keys' \ - '--gen-revoke[generate a revocation certificate]' \ - '--desig-revoke[generate a designated revocation certificate]' \ - '--export[export all key from all keyrings]' \ - '--send-keys[send keys to a keyserver]:key attachment:->public-keyids' \ - '--export-all[export all key and not OpenPGP compatible keys]' \ - '--export-secret-keys:key attachment:->secret-keys' \ - '--export-secret-subkeys:key attachment:->secret-keys' \ - '--import[import a gpg key from a file]:_files attachment:_files' \ - '--fast-import[import a file without build trustdb]:_files attachment:_files' \ - '--recv-keys[receive a list of keys from a keyserver]:key attachment:->public-keyids' \ - '--refresh-keys[update all keys from a keyserver]' \ - '--search-keys[search for keys on a key server]' \ - '--update-trustdb[update the trust database]' \ - '--check-trustdb[unattended trust database update]' \ - '--fix-trustdb[fix a corrupted trust database]' \ - '--export-ownertrust[list the assigned ownertrust values in ASCII format]:file:_files' \ - '--import-ownertrust[update the trustdb with a file]:file:_files' \ - '--dearmor[de-Armor a file or stdin]' \ - '--enarmor[en-Armor a file or stdin]' \ - '--print-md[print message digests]:algorithm:->ciphers::file:_files' \ - '--print-mds[print message digests]::file:_files' \ - '--gen-random:count' --gen-prime \ - '--version[print info on program version and supported algorithms]' \ - '--warranty[print warranty info]' \ - '(-h --help)'{-h,--help}'[display usage information]' \ - '(-a --armor)'{-a,--armor}'[create ASCII armored output]' \ - '(-o --output)'{-o+,--output}'[write output to file]:output file:_files' \ +gpgv=('(-q --quiet)*'{-v,--verbose}'[increase amount of output]' + '(-q --quiet -v --verbose)'{-q,--quiet}'[reduce amount of output]' + '--keyring=[add specified file to list of keyrings]:file:_files' + '--'{status,logger}'-fd:file descriptor:_file_descriptors' + '--ignore-time-conflict' + '--homedir:directory:_directories') + +gpgzip=('--gpg[command to use instead of gpg]:command:_command' + '--gpg-args[gpg arguments]:gpg arguments:' + '--tar[command to use instead of tar]:command:_command' + '--tar-args[tar arguments]:tar arguments:' + '--list-archive[list archive contents]') + +gpgbasic=('(-e --encrypt)'{-e,--encrypt}'[encrypt data. this option may be combined with --sign]' + {-d,--decrypt}'[decrypt file or stdin]' + '(-c --symmetric)'{-c,--symmetric}'[encrypt with symmetric cypher only]' + '(-s --sign)'{-s,--sign}'[make a signature]' + '*'{-r+,--recipient}'[specify user to encrypt for]:recipient:->public-keys' '(-u --local-user)'{-u+,--local-user}'[use name as the user ID to sign]:user attachment:_users'\ - '--default-key[specify default user-id for signatures]:key:->secret-keys' \ - '*'{-r+,--recipient}'[specify user to encrypt for]:recipient:->public-keys' \ - '--default-recipient[specify default recipient]:recipient:->public-keys' \ - '--default-recipient-self[use default key as default recipient]' \ - '--no-default-recipient[reset default recipient]' \ - '*--encrypt-to[specify recipient]:key:->public-keys' \ - '(--encrypt-to)--no-encrypt-to[disable the use of all --encrypt-to keys]' \ - '(-q --quiet)*'{-v,--verbose}'[increase amount of output]' \ - '(-q --quiet -v --verbose)'{-q,--quiet}'[reduce amount of output]' \ - '(-z --compress)'{-z,--compress}'[specify compression level]:compression level:((0\:no\ compression 1\:minimum 2 3 4 5 6\:default 7 8 9\:maximum))' \ - '(-t --textmode)'{-t,--textmode}'[use canonical text mode]' \ - '(-n --dry-run)'{-n,--dry-run}"[don't make any changes]" \ - '(-i --interactive --batch)'{-i,--interactive}'[prompt before overwriting files]' \ - '(-i --interactive --no-batch)--batch[use batch mode]' \ - '--no-tty[never output to tty]' \ - '(--batch)--no-batch[disable batch mode]' \ - '(--no)--yes[assume "yes" on most questions]' \ - '(--yes)--no[assume "no" on most questions]' \ - '--default-cert-check-level:check level:((0\:no\ claim 1\:no\ verification 2\:casual\ verification 3\:extensive\ verification))' \ - '--trusted-key[assume that the specified key is trustworthy]:long key id' \ - '--always-trust[skip key validation]' \ - '--keyserver[specify key server to use]:key server:_hosts' \ - '--keyserver-options[specify keyserver options]:options' \ - '--import-options[specify options for importing keys]:options' \ - '--export-options[specify options for exporting keys]:options' \ - --show-photos --no-show-photos '--photo-viewer:command:_command_names -e'\ - --exec-path:path:_dir_list' \ - --show-keyring[display keyring name when listing keys]' \ - '--keyring=[add specified file to list of keyrings]:file:_files' \ - '--secret-keyring[add specified file to list of secret keyrings]:file:_files' \ - --homedir:directory:_directories \ - '--charset:character set:(iso-8859-1 iso-8859-2 koi8-r utf-8)' \ - '--utf8-strings' '--no-utf8-strings[arguments are not in UTF8]' \ - '(--no-options)--options[specify file to read options from]:options file:_files' \ - "(--options)--no-options[don't read options file]" \ - --{status,logger,attribute,passphrase,command}-fd:file\ descriptor:_file_descriptors \ - '--sk-comments[include secret key comments when exporting keys]' \ - '(--emit-version)--no-version[omit version string in clear text signatures]' \ - '(--no-version)--emit-version[force writing of version string in clear text signatures]' \ - '(-N --notation-data)'{-N,--notation-data}'[put parameter in signature]:name=value' \ - '(--no-show-notation)--show-notation[show key signature notations]' \ - "(--show-notation)--no-show-notation[don't show key signature notations]" \ - '--set-policy-url:policy URL' \ - '(--no-show-policy-url)--show-policy-url' \ - "(--show-policy-url)--no-show-policy-url" \ - '--set-filename[specify file which is stored in messages]:file:_files' \ - '(--for-your-eyes-only)--for-your-eyes-only' \ - "(--for-your-eyes-only)--no-for-your-eyes-only" \ - --completes-needed:number --marginals-needed:number --max-cert-depth:number \ - --{{,disable-,s2k-}cipher,{,s2k-,cert-}digest,disable-pubkey}'-algo:cipher:->ciphers' \ - --s2k-mode:value --simple-sk-checksum \ - '--compress-algo:compression algorithm:((0\:disable\ compression 1\:zlib 2\:rfc1950))' \ - --no-sig-cache --no-sig-create-check --{,no-}auto-check-trustdb --throw-keyid \ - --not-dash-escaped --escape-from-lines --use-agent \ - --rfc1991 --{,no-}pgp2 --{,no}pgp6 --{,no}pgp7 --openpgp \ - --{,no-}force-v3-sigs --{,no}force-v4-certs --force-mdc --disable-mdc \ - --{,no-}allow-non-selfsigned-uid --allow-freeform-uid \ - --ignore-time-conflict --ignore-valid-from \ - --ignore-crc-error --ignore-mdc-error --lock-once --lock-multiple --lock-never \ - --no-random-seed-file --no-verbose --no-greeting --no-secmem-warning \ - --no-permission-warning --no-mdc-warning --no-armor --no-default-keyring \ - --skip-verify --with-colons --with-key-data --with-fingerprint \ - --fast-list-mode --fixed-list-mode --list-only --no-literal --set-filesize \ - --emulate-md-encode-bug --show-session-key --override-session-key:string \ - --{,no-}ask-sig-expire --{,no}ask-cert-expire --{,no}expert \ - --merge-only --allow-secret-key-import --try-all-secrets \ - --enable-special-filenames --no-expensive-trust-checks --group:name=value \ - --preserve-permissions --personal-{cipher,digest,compress}-preferences:string \ - --default-preference-list:string \ - '*:args:->args' && ret=0 + '(-o --output)'{-o+,--output}'[write output to file]:output file:_files' + '(-h --help)'{-h,--help}'[display usage information]' + '--version[print info on program version and supported algorithms]') + +gpgextra=('--decrypt-files[decrypt multiple files]' + '(-b --detach-sign)'{-b,--detach-sign}'[make a detached signature]' + '--clearsign[make a clear text signature]' + '--store[store only]' + '--verify[verify a signature]' + '--verify-files[verify a list of files]' + '(-f --encrypt-files)'{-f,--encrypt-files}'[encrypt files]' + '--list-keys[list all keys]' + '--list-public-keys[list all public keys]' + '--list-secret-keys[list all secret keys]' + '--list-sigs[lists keys and signatures]:key attachment:->public-keys' + '--list-options[modify what the various --list-* commands show]' + '--check-sigs[list key, signatures and check them]:key attachment:->public-keys' + '--fingerprint[list all keys with their fingerprints]:key attachment:->public-keys' + '--list-packets[list only the sequence of packets]' + '--gen-key[generate a new pair key]' + '--edit-key[a menu for edit yours keys]:key attachment:->public-keys' + '--sign-key[sign a key]:key attachment:->public-keys'\ + '--lsign-key[sign a key but mark as non-exportable]:key attachment:->public-keys' + '--nrsign-key[sign a key non-revocably]' + '--delete-key[remove key from public keyring]:key attachment:->public-keys' + '--delete-secret-key[remove key from public & private keyring]:key attachment:->secret-keys' + '--delete-secret-and-public-key:key attachment:->secret-keys' + '--gen-revoke[generate a revocation certificate]' + '--desig-revoke[generate a designated revocation certificate]' + '--export[export all key from all keyrings]' + '--send-keys[send keys to a keyserver]:key attachment:->public-keyids' + '--export-all[export all key and not OpenPGP compatible keys]' + '--export-secret-keys:key attachment:->secret-keys' + '--export-secret-subkeys:key attachment:->secret-keys' + '--import[import a gpg key from a file]:_files attachment:_files' + '--fast-import[import a file without build trustdb]:_files attachment:_files' + '--fetch-keys[fetch key at URIs]:uri:' + '--recv-keys[receive a list of keys from a keyserver]:key attachment:->public-keyids' + '--refresh-keys[update all keys from a keyserver]' + '--search-keys[search for keys on a key server]' + '--update-trustdb[update the trust database]' + '--check-trustdb[unattended trust database update]' + '--fix-trustdb[fix a corrupted trust database]' + '--export-ownertrust[list the assigned ownertrust values in ASCII format]:file:_files' + '--import-ownertrust[update the trustdb with a file]:file:_files' + '--dearmor[de-Armor a file or stdin]' + '--enarmor[en-Armor a file or stdin]' + '--print-md[print message digests]:algorithm:->ciphers::file:_files' + '--print-mds[print message digests]::file:_files' + '--gen-random:count' '--gen-prime' + '--warranty[print warranty info]' + '(-a --armor)'{-a,--armor}'[create ASCII armored output]' + '--default-key[specify default user-id for signatures]:key:->secret-keys' + '--default-recipient[specify default recipient]:recipient:->public-keys' + '--default-recipient-self[use default key as default recipient]' + '--no-default-recipient[reset default recipient]' + '*--encrypt-to[specify recipient]:key:->public-keys' + '(--encrypt-to)--no-encrypt-to[disable the use of all --encrypt-to keys]' + '(-z --compress)'{-z,--compress}'[specify compression level]:compression level:((0\:no\ compression 1\:minimum 2 3 4 5 6\:default 7 8 9\:maximum))' + '(-t --textmode)'{-t,--textmode}'[use canonical text mode]' + '(-n --dry-run)'{-n,--dry-run}"[don't make any changes]" + '(-i --interactive --batch)'{-i,--interactive}'[prompt before overwriting files]' + '(-i --interactive --no-batch)--batch[use batch mode]' + '--no-tty[never output to tty]' + '(--batch)--no-batch[disable batch mode]' + '(--no)--yes[assume "yes" on most questions]' + '(--yes)--no[assume "no" on most questions]' + '--default-cert-check-level:check level:((0\:no\ claim 1\:no\ verification 2\:casual\ verification 3\:extensive\ verification))' + '--trusted-key[assume that the specified key is trustworthy]:long key id' + '--always-trust[skip key validation]' + '--keyserver[specify key server to use]:key server:_hosts' + '--keyserver-options[specify keyserver options]:options' + '--import-options[specify options for importing keys]:options' + '--export-options[specify options for exporting keys]:options' + '--show-photos' '--no-show-photos' '--photo-viewer:command:_command_names -e' + '--exec-path:path:_dir_list' + '--show-keyring[display keyring name when listing keys]' + '--secret-keyring[add specified file to list of secret keyrings]:file:_files' + '--charset:character set:(iso-8859-1 iso-8859-2 koi8-r utf-8)' + '--utf8-strings' '--no-utf8-strings[arguments are not in UTF8]' + '(--no-options)--options[specify file to read options from]:options file:_files' + "(--options)--no-options[don't read options file]" + '--'{attribute,passphrase,command}'-fd:file descriptor:_file_descriptors' + '--sk-comments[include secret key comments when exporting keys]' + '(--emit-version)--no-emit-version[omit version string in clear text signatures]' + '(--no-emit-version)--emit-version[force writing of version string in clear text signatures]' + '(-N --notation-data)'{-N,--notation-data}'[put parameter in signature]:name=value' + '(--no-show-notation)--show-notation[show key signature notations]' + "(--show-notation)--no-show-notation[don't show key signature notations]" + '--set-policy-url:policy URL' + '(--no-show-policy-url)--show-policy-url' + '(--show-policy-url)--no-show-policy-url' + '--set-filename[specify file which is stored in messages]:file:_files' + '(--for-your-eyes-only)--for-your-eyes-only' + '(--for-your-eyes-only)--no-for-your-eyes-only' + '--completes-needed:number' '--marginals-needed:number' '--max-cert-depth:number' + '--'{{,disable-,s2k-}cipher,{,s2k-,cert-}digest,disable-pubkey}'-algo:cipher:->ciphers' + '--s2k-mode:value' '--simple-sk-checksum' + '--compress-algo:compression algorithm:((0\:disable\ compression 1\:zlib 2\:rfc1950))' + '--no-sig-cache' '--no-sig-create-check' '--'{,no-}'auto-check-trustdb' '--throw-keyid' + '--not-dash-escaped' '--'{,no-}'escape-from-lines' '--'{,no-}'use-agent' + '--rfc1991' '--'{,no-}'pgp2' '--'{,no}'pgp6' '--'{,no}'pgp7' '--openpgp' + '--'{,no-}'force-v3-sigs' '--'{,no}'force-v4-certs' '--force-mdc' '--disable-mdc' + '--'{,no-}'allow-non-selfsigned-uid' '--allow-freeform-uid' + '--ignore-valid-from' + '--ignore-crc-error' '--ignore-mdc-error' '--lock-once' '--lock-multiple' '--lock-never' + '--no-random-seed-file' '--no-verbose' '--no-greeting' '--no-secmem-warning' + '--no-permission-warning' '--no-mdc-warning' '--no-armor' '--no-default-keyring' + '--skip-verify' '--with-colons' '--with-key-data' '--with-fingerprint' + '--fast-list-mode' '--fixed-list-mode' '--list-only' '--no-literal' '--set-filesize' + '--emulate-md-encode-bug' '--show-session-key' '--override-session-key:string' + '--'{,no-}'ask-sig-expire' '--'{,no}'ask-cert-expire' '--'{,no}'expert' + '--merge-only' '--allow-secret-key-import' '--try-all-secrets' + '--enable-special-filenames' '--no-expensive-trust-checks' '--group:name=value' + '--preserve-permissions' '--personal-'{cipher,digest,compress}'-preferences:string' + '--card-edit[present smartcard menu]' '--card-status[show smartcard content]' + '--change-pin[present menu to change smartcard pin]' + '--list-config[display internal configuration parameters]' + '--hidden-recipient[hidden recipient]:recipient:->public-keys' + '--dump-options[show all options]' '--default-preference-list:string' + '--fetch-keys:URIs:' '--gpgconf-list' '--gpgconf-test' + '--hidden-encrypt-to:recipient:->public-keys' + '--compress-level:integer:' + '--bzip2-compress-level:integer:' '--bzip2-decompress-lowmem' + '--default-sig-expire' '--default-cert-expire' '--no-ask-cert-expire' + '--default-cert-level:integer:' + '--min-cert-level' '--ask-cert-level' '--no-ask-cert-level' + '--max-output[maximum output generated when processing file]:bytes:' + '--gpg-agent-info[override GPG_AGENT_INFO]:' + '--primary-keyring:file:_files' + '--'{,no-}'verify-options:parameters:_multi_parts -q -S, "," + "(show-photos show-policy-urls show-notations show-std-notations + show-user-notations show-keyserver-urls show-uid-validity show-unusable-uids + show-primary-uid-only pka-lookups pka-trust-increase)"' + '--debug:flags:' '--debug-all' '--status-file:file:' + '--attribute-file:file:' '--load-extension:file:_files' + '--gnupg' '--rfc2440' '--rfc4880' '--pgp8' + '--s2k-count:integer:' '--'{,no-}'throw-keyids' + '--sig-notation:name=value:' '--cert-notation:name=value:' + '--passphrase-file:file:_files' '--passphrase-repeat:integer:' + '--command-file:file:_files' '--trustdb-name:file:_files' + '--'{,no-}'require-secmem' + '--trust-model:trust model:((pgp classic direct always auto))' + '--sig-policy-url:string:' '--cert-policy-url:string:' + '--sig-keyserver-url:string:' '--comment[comment]:comment:' + '--no-comments[disable comments]' + '--logger-file[write log to file]:file:_files' + '--'{,no-}'use-embedded-filename' + '--rebuild-keydb-caches[create signature caches in keyring]' + '--default-keyserver-url:name:' + '--display-charset[set native charset]:charset:((iso-8859-1 iso-8859-2 iso-8859-15 koi8-r utf-8))' + '--ungroup[remove group]:group name:' + '--no-groups[remove all entries from --group list]' + '--'{,no}'mangle-dos-filenames' + '--enable-progress-filter[enable progress status output]' + '--multifile[process multiple files]' + '--keyid-format[key id format]:key format:((short 0xshort long 0xlong))' + '--exit-on-status-write-error[exit immediately on error write]' + '--limit-card-insert-tries:integer:' + '--reader-port[card reader port]:port:' + '--ctapi-driver[file to use to access smartcard reader]:file:_files' + '--pcsc-driver[file to use to access smartcard reader]:file:_files' + '--disable-ccid' '--debug-ccid-driver' + '--'{enable,disable}'-dsa2' + '--'{,no-}'allow-multiple-messages' '--'{,no-}'require-cross-certification' + '--auto-key-locate:parameters:' '--no-auto-key-locate' + '--dump-options[show all options]') + +case "$service" in + gpg) + _arguments -C -s -S -A "-*" $gpgbasic $gpgextra $gpgv '*:args:->args' + ;; + + gpgv) + _arguments -C -s -S -A "-*" $gpgv '*:args:->args' + ;; + + gpg-zip) + _arguments -C -s -S -A "-*" $gpgbasic $gpgzip '*:args:->args' + ;; +esac if [[ $state = args ]]; then if (( ${+opt_args[--export]} || ${+opt_args[--list-keys]} || ${+opt_args[--list-public-keys]} )); then -- cgit 1.4.1