diff options
Diffstat (limited to '')
-rw-r--r-- | completions/op | 59 | ||||
-rw-r--r-- | completions/openssl | 138 | ||||
-rw-r--r-- | completions/opera | 47 | ||||
-rw-r--r-- | completions/optipng | 52 |
4 files changed, 296 insertions, 0 deletions
diff --git a/completions/op b/completions/op new file mode 100644 index 0000000..31d6475 --- /dev/null +++ b/completions/op @@ -0,0 +1,59 @@ +# op (1Password CLI) completion -*- shell-script -*- + +_op_commands() +{ + "$@" --help 2>/dev/null | + awk '/^(Available |Sub)commands/{flag=1;next}/^ /&&flag{print $1}' +} + +_op_command_options() +{ + case $cur in + -*) + for i in "${!words[@]}"; do + [[ ${words[i]} == -* || $i -eq 0 ]] && unset "words[i]" + done + COMPREPLY=($(compgen -W \ + '$(_parse_usage "$1" "${words[*]} --help") --help' -- "$cur")) + [[ ${COMPREPLY-} == *= ]] && compopt -o nospace + return 0 + ;; + esac + return 1 +} + +_op() +{ + local cur prev words cword split + _init_completion -s || return + + local command i + for ((i = 1; i < cword; i++)); do + case ${words[i]} in + --help | --version) return ;; + -*) ;; + *) + command=${words[i]} + break + ;; + esac + done + + if [[ ! -v command && $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_usage "$1" --help)' -- "$cur")) + [[ ${COMPREPLY-} == *= ]] && compopt -o nospace + return + fi + + [[ -v command ]] && _op_command_options "$1" && return + + if [[ ! -v command || $command == "$prev" ]]; then + COMPREPLY=($(compgen -W '$(_op_commands "$1" ${command-})' -- "$cur")) + [[ ${COMPREPLY-} ]] && return + fi + + # TODO specific command and subcommand completions +} && + complete -F _op op + +# ex: filetype=sh diff --git a/completions/openssl b/completions/openssl new file mode 100644 index 0000000..dd77092 --- /dev/null +++ b/completions/openssl @@ -0,0 +1,138 @@ +# bash completion for openssl -*- shell-script -*- + +_openssl_sections() +{ + local config f + + # check if a specific configuration file is used + for ((i = 2; i < cword; i++)); do + if [[ ${words[i]} == -config ]]; then + config=${words[i + 1]} + break + fi + done + + # if no config given, check some usual default locations + if [[ -z $config ]]; then + for f in /etc/ssl/openssl.cnf /etc/pki/tls/openssl.cnf \ + /usr/share/ssl/openssl.cnf; do + [[ -f $f ]] && config=$f && break + done + fi + + [[ ! -f $config ]] && return + + COMPREPLY=($(compgen -W "$(awk '/\[.*\]/ {print $2}' $config)" -- "$cur")) +} + +_openssl_digests() +{ + "$1" dgst -h 2>&1 | + awk '/^-.*[ \t]to use the .* message digest algorithm/ { print $1 }' + local -a digests=($("$1" help 2>&1 | + command sed -ne '/^Message Digest commands/,/^[[:space:]]*$/p' | + command sed -e 1d)) + printf "%s\n" "${digests[@]/#/-}" +} + +_openssl() +{ + local cur prev words cword + _init_completion || return + + local commands command options formats + + commands='asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa dsaparam + ec ecparam enc engine errstr gendh gendsa genrsa nseq ocsp passwd + pkcs12 pkcs7 pkcs8 prime rand req rsa rsautl s_client s_server s_time + sess_id smime speed spkac verify version x509 md2 md4 md5 rmd160 sha + sha1 aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc + aes-256-ecb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc + camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc + camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb + des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb + des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 + rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 + sha224 sha256 sha384 sha512 genpkey pkey pkeyparam pkeyutl' + + if ((cword == 1)); then + COMPREPLY=($(compgen -W "$commands" -- "$cur")) + else + command=${words[1]} + case $prev in + -CA | -CAfile | -CAkey | -CAserial | -cert | -certfile | -config | -content | \ + -dcert | -dkey | -dhparam | -extfile | -in | -inkey | -kfile | -key | -keyout | \ + -out | -oid | -paramfile | -peerkey | -prvrify | -rand | -recip | -revoke | \ + -sess_in | -sess_out | -spkac | -sigfile | -sign | -signkey | -signer | \ + -signature | -ss_cert | -untrusted | -verify | -writerand) + _filedir + return + ;; + -outdir | -CApath) + _filedir -d + return + ;; + -name | -crlexts | -extensions) + _openssl_sections + return + ;; + -inform | -outform | -keyform | -certform | -CAform | -CAkeyform | -dkeyform | \ + -dcertform | -peerform) + formats='DER PEM' + case $command in + x509) + formats+=" NET" + ;; + smime) + formats+=" SMIME" + ;; + pkeyutl) + formats+=" ENGINE" + ;; + esac + COMPREPLY=($(compgen -W "$formats" -- "$cur")) + return + ;; + -connect) + _known_hosts_real -- "$cur" + return + ;; + -starttls) + COMPREPLY=($(compgen -W ' + smtp pop3 imap ftp xmpp xmpp-server telnet irc mysql + postgres lmtp nntp sieve ldap + ' -- "$cur")) + return + ;; + -cipher) + COMPREPLY=($(IFS=: compgen -W "$($1 ciphers)" -- "$cur")) + return + ;; + -kdf) + COMPREPLY=($(compgen -W 'TLS1-PRF HKDF' -- "$cur")) + return + ;; + esac + + if [[ $cur == -* ]]; then + # possible options for the command + options=$(_parse_help "$1" "$command -help" 2>/dev/null) + case $command in + dgst | req | x509) options+=" $(_openssl_digests $1)" ;; + esac + COMPREPLY=($(compgen -W "$options" -- "$cur")) + else + if [[ $command == speed ]]; then + COMPREPLY=($(compgen -W 'md2 mdc2 md5 hmac sha1 rmd160 + idea-cbc rc2-cbc rc5-cbc bf-cbc des-cbc des-ede3 rc4 + rsa512 rsa1024 rsa2048 rsa4096 dsa512 dsa1024 dsa2048 idea + rc2 des rsa blowfish' -- "$cur")) + else + _filedir + fi + fi + fi +} && + complete -F _openssl -o default openssl + +# ex: filetype=sh diff --git a/completions/opera b/completions/opera new file mode 100644 index 0000000..f2bc8c3 --- /dev/null +++ b/completions/opera @@ -0,0 +1,47 @@ +# opera(1) completion -*- shell-script -*- + +_opera() +{ + local cur prev words cword + _init_completion || return + + case "$prev" in + ?(-)-widget | ?(-)-urllist | ?(-)-uiparserlog | ?(-)-uiwidgetsparserlog | \ + ?(-)-profilinglog) + _filedir + return + ;; + ?(-)-[psb]d) + _filedir -d + return + ;; + ?(-)-remote) + COMPREPLY=($(compgen -W 'openURL\\( openFile\\( openM2\\( + openComposer\\( addBookmark\\( raise\\(\\) lower\\(\\)' \ + -- "$cur")) + [[ ${COMPREPLY-} == *\( ]] && compopt -o nospace + return + ;; + ?(-)-windowname) + COMPREPLY=($(compgen -W 'first last opera{1..9}' -- "$cur")) + return + ;; + ?(-)-geometry | ?(-)-window | ?(-)-display | ?(-)-urllistloadtimeout | \ + ?(-)-delaycustomizations | ?(-)-dialogtest | ?(-)-inidialogtest | \ + ?(-)-gputest) + # argument required but no completions available + return + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1" -help)' -- "$cur")) + [[ ${COMPREPLY-} == *= ]] && compopt -o nospace + return + fi + + _filedir '@(?([xX]|[sS])[hH][tT][mM]?([lL]))' +} && + complete -F _opera opera + +# ex: filetype=sh diff --git a/completions/optipng b/completions/optipng new file mode 100644 index 0000000..0f6b40e --- /dev/null +++ b/completions/optipng @@ -0,0 +1,52 @@ +# optipng(1) completion -*- shell-script -*- + +_optipng() +{ + local cur prev words cword + _init_completion || return + + case $prev in + -'?' | -h | --help | -f) + return + ;; + -o) + COMPREPLY=($(compgen -W '{0..7}' -- "$cur")) + return + ;; + -out | -log) + _filedir + return + ;; + -dir) + _filedir -d + return + ;; + -i) + COMPREPLY=($(compgen -W '0 1' -- "$cur")) + return + ;; + -zc | -zm) + COMPREPLY=($(compgen -W '{1..9}' -- "$cur")) + return + ;; + -zw) + COMPREPLY=($(compgen -W '256 512 1k 2k 4k 8k 16k 32k' \ + -- "$cur")) + return + ;; + -strip) + COMPREPLY=($(compgen -W 'all' -- "$cur")) + return + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + return + fi + + _filedir '@(png|bmp|gif|pnm|tif?(f))' +} && + complete -F _optipng optipng + +# ex: filetype=sh |