summaryrefslogtreecommitdiffstats
path: root/completions/op
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--completions/op59
-rw-r--r--completions/openssl138
-rw-r--r--completions/opera47
-rw-r--r--completions/optipng52
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