Validation initiale

This commit is contained in:
2018-03-16 12:02:58 +01:00
commit dbb3445f0b
35 changed files with 1926 additions and 0 deletions

65
functions/_auto-apt Normal file
View File

@@ -0,0 +1,65 @@
#compdef auto-apt
# Bruno Bonfils, <asyd@zshwiki.org>
local expl prev ret
prev="$words[CURRENT-1]"
# if there is a command in arguments ?
if [[ -n $words[(r)(run|update|update-local|merge|del|check|list|search|debuilt|status)] ]] ; then
# yes, add completion for command arguments and command options
if [[ -n $words[(r)(update|update-local|merge)] && "$words[CURRENT]" = -* ]] ; then
_wanted option expl 'option' compadd - "-a" && return 0;
fi
if [[ -n $words[(r)(check|list|search)] && "$words[CURRENT]" = -* ]] ; then
_wanted option expl 'option' compadd - "-v" "-f" && return 0;
fi
case $prev in
"run")
_wanted command expl 'command' _files -g '*(/,*)' && return 0 ;;
"del")
_wanted package expl 'package' _deb_packages avail && return 0 ;;
"search")
_arguments ':pattern:' && return 0 ;;
esac
else
# no, add completion for commands or options (and options arguments)
compset -P "*,"
case $prev in
"-a")
local distribs
distribs=("main" "contrib" "non-free" "non-US" "none")
_wanted distribution expl 'distribution' compadd -q -S, $distribs ;;
"-p")
local hooks
hooks=("exec" "open" "access" "stat" "none")
_wanted hook expl 'hook' compadd -q -S, $hooks ;;
"-D")
_wanted file expl 'dbfile' _files ;;
"-F")
_wanted file expl 'filedb' _files ;;
*)
local commands options
commands=("run" "update" "update-local" "merge" "del" "check" "list" "search" "debuild" "status")
options=("-h" "-s" "-y" "-q" "-i" "-X" "-x" "-a" "-p" "-D" "-F" "-L")
if [[ "$words[CURRENT]" = -* ]] ; then
_wanted option expl 'option' compadd - $options
else
_wanted command expl 'command' compadd $commands
fi
;;
esac
return 0
fi

586
functions/_java Normal file
View File

@@ -0,0 +1,586 @@
#compdef javac java javadoc appletviewer jar jdb javah javap extcheck rmic rmiregistry rmid serialver native2ascii keytool jarsigner policytool
local expl tmp jdb_args jar_cmd match basedir ret=1
local curcontext="$curcontext" state line jf
typeset -A opt_args tmpassoc
jdb_args=()
case "$service" in
javac)
_arguments -C \
'-g-[generate debugging information]:debug:->debug' \
'-nowarn[generate no warnings]' \
'-verbose[output messages about what the compiler is doing]' \
'-deprecation[output source locations where deprecated APIs are used]' \
'-classpath[specify where to find user class files]:class path:->classpath' \
'-sourcepath[specify where to find input source files]:source path:->sourcepath' \
'-bootclasspath[override location of bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
'-extdirs[override location of installed extensions]:extensions directories:->extdirs' \
'-d[specify where to place generated class files]:directory:_files -/' \
'-encoding[specify character encoding used by source files]:encoding:->encoding' \
'-source[provide source compatibility with specified release]:release:(1.{2..5})' \
'-target[specify VM version]:release:(1.{1..5})' \
'-help[print a synopsis of standard options]' \
'*:java source file:_files -g \*.java\(-.\)' && return 0
;;
jdb)
jdb_args=(
'-host[specify host to connect to]:host:_hosts'
'-password[specify password]:password:'
)
;&
java)
_arguments -C \
"$jdb_args[@]" \
'(-cp -classpath)'{-cp,-classpath}'[specify path for user class files]:class path:->classpath' \
'-D-[specify a property]:property:->property' \
'(-verbose:class)-verbose[print class information]' \
'(-verbose)-verbose\:class[print class information]' \
'-verbose\:gc[print gc information]' \
'-verbose\:jni[print JNI information]' \
'-version[print version]' \
'-help[print help message]' \
'(- 1)-jar[specify a program capsulated as jar]:jar:_files -g \*.jar\(-.\)' \
'(-):class:_java_class -m main ${(kv)opt_args[(i)(-classpath|-cp)]}' \
'*::args: _normal' \
&& return 0
;;
javadoc)
_arguments -C \
'-overview[specify overview file]:_files' \
'-public[display public classes and members only]' \
'-protected[display public/protected classes and members only (default)]' \
'-package[display packages, public/protected classes and members only]' \
'-private[display all classes and members]' \
'-help[print help message]' \
'-doclet[specify a doclet]:doclet:_java_class -t doclet ${(kv)opt_args[(i)-classpath]}' \
'-docletpath[specify a path to search doclet]:doclet path:->docletpath' \
'-1.1[Javadoc 1.1 compatible output]' \
'-sourcepath[specify path for source files]:source path:->sourcepath' \
'-classpath[specify path for user class files]:class path:->classpath' \
'-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
'-extdirs[specify directories for extensions]:extensions directories:->extdirs' \
'-verbose[print verbose messages]' \
'-locale[specify locale]:language_country_variant:' \
'-encoding[specify character encoding for source files]:encoding:->encoding' \
'-J-[specify java option]:java option:' \
'-d[specify destination directory]:destination directory:_files -/' \
'-use[display pages for use]' \
'-version[include @version text]' \
'-author[include @author text]' \
'-splitindex[split index file for each alphabet]' \
'-windowtitle[specify HTML title element]:title element:' \
'-doctitle[specify title]:document title:' \
'-header[specify header text]:header text:' \
'-footer[specify footer text]:footer text:' \
'-bottom[specify bottom text]:bottom text:' \
'-link[generate a link to external reference classes]:document URL:' \
'-linkoffline[generate a link for external reference class names]:document URL::package list URL:' \
'-group[generate tables for each groupes]:group heading::package patterns:' \
'-nodeprecated[do not document deprecated API]' \
'-nodeprecatedlist[do not generate deprecated API list]' \
'-notree[do not generate class and interface hierarchy]' \
'-noindex[do not generate index]' \
'-nohelp[do not generate help link]' \
'-nonavbar[do not generate navigation bar]' \
'-helpfile[specify alternative help link]:helpfile path/filename:' \
'-stylesheet[specify alternative HTML style sheet]:stylesheet path/filename:' \
'-docencoding[specify character encoding for output HTML files]:encoding:->encoding' \
'*:package name, source file or @list:->docsrc' && ret=0
;;
appletviewer)
_arguments -C \
'-debug[run applet on jdb]' \
'-encoding[specify character encoding for source files]:encoding:->encoding' \
'-J-[specify java option]:java option:' \
'*:URL:_urls' && return 0
;;
jar)
if (( CURRENT == 2 )); then
compset -P -
_values -s '' 'jar command' \
'( t x u)c[create new archive]' \
'(c x u)t[list the table of archive]' \
'(c t u)x[extract files from archive]' \
'(c t x )u[update archive]' \
'f[specify archive file]' \
'v[verbose mode]' \
'm[specify manifest file]' \
'0[store only without using ZIP compression]' \
'M[do not create manifest file]' && return
else
jar_cmd="${words[2]#-}"
tmpassoc=(
m ':manifest file:_files'
f ':archive file:_files -g "*.([ejw]ar|zip)(-.)"'
)
_arguments -C \
"${jar_cmd/[^-]*/:dummy:}" \
${${(s::)jar_cmd}/(#b)(?)/$tmpassoc[$match[1]]} \
'*:file:->jararg' && return 0
fi
;;
javah|javah_g)
_arguments -C \
'-o[specify output file]:output file:_files' \
'-d[specify destination directory]:directory:_files -/' \
'-stubs[generate stubs]' \
'-verbose[print verbose messages]' \
'-help[print help message]' \
'-version[print version]' \
'-jni[JNI-style native method function prototypes]' \
'-classpath[specify path for user class files]:class path:->classpath' \
'-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
'-old[generate old JDK1.0-style header files]' \
'-force[force output]' \
'*:class:_java_class -m main ${(kv)opt_args[(i)-classpath]}' && return 0
;;
javap)
_arguments -C \
'-help[print help message]' \
'-l[line and local variable tables]' \
'-b[backward compatible to JDK1.1]' \
'-public[only public classes and members]' \
'-protected[only protected and public classes and members]' \
'-package[only package, protected and public classes and members (default)]' \
'-private[all classes and members]' \
'-J-[specify java option]:java option:' \
'-s[internal type signatures]' \
'-c[disassemble code]' \
'-verbose[stack size, number of locals and args for methods]' \
'-classpath[specify path for user class files]:class path:->classpath' \
'-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
'-extdirs[specify directories for extensions]:extensions directories:->extdirs' \
'*:class:_java_class ${(kv)opt_args[(i)-classpath]}' && return 0
;;
extcheck)
_arguments \
'-verbose[print verbose messages]' \
':target jar file:_files -g \*.jar\(-.\)' && return 0
;;
rmic)
_arguments -C \
'-classpath[specify path for user class files]:class path:->classpath' \
'-d[specify destination directory]:directory:_files -/' \
'-depend[treat dependencies]' \
'-g[enable debugging]' \
'-J-[specify java option]:java option:' \
'-keepgenerated[retain generated source files]' \
'-nowarn[disable warnings]' \
'-show[GUI mode]' \
'-vcompat[compatible with JDK 1.1 and 1.2 (default)]' \
'-verbose[print verbose messages]' \
'-v1.1[JDK 1.1 stub protocol]' \
'-v1.2[JDK 1.2 stub protocol]' \
'*:package qualified class name:_java_class ${(kv)opt_args[(i)-classpath]}' && return 0
;;
rmiregistry)
if (( CURRENT == 2 )); then
_wanted ports expl 'port to listen on' _ports && return
else
_message 'no more arguments'
fi
;;
rmid)
_arguments \
'-C-[specify command line argument for child process]:command line argument for child process:' \
'-log[specify log directory]:directory to place logs:_files -/' \
'-port[specify port]:port:_ports' \
'-stop[stop rmid]:' && return 0
;;
serialver)
_arguments \
'-classpath[specify where to find user class files]:class path:->classpath' \
'(*)-show[display user interface]' \
'(-show)*:class:_java_class ${(kv)opt_args[(i)-classpath]}' && return 0
;;
native2ascii)
_arguments -C \
'-reverse[convert Latin-1 (with \udddd) to native encoding]' \
'-encoding[specify character encoding]:encoding:->encoding' \
':input file:_files' \
':output file:_files' && return 0
;;
keytool)
_arguments \
'-J-[specify java option]:java option:' \
- genkey \
'-genkey[command to generate a key pair]' \
'-alias[alias]:alias:' \
'-keyalg[key algorithm]:key algorithm:' \
'-keysize[key size]:key size:' \
'-sigalg[signature algorithm]:signature algorithm:' \
'-dname[X.500 distinguish name]:X.500 distinguish name:' \
'-keypass[password for private key]:password for private key:' \
'-validity[valid days]:number of days:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- import \
'-import[command to import certificate or certificate chain]' \
'-alias[alias]:alias:' \
'-file[specify certificate file]:certificate file:_files' \
'-keypass[password for private key]:password for private key:' \
'-noprompt[disable interaction with the user]' \
'-trustcacerts[use cacerts]' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- selfcert \
'-selfcert[command to generate X.509 v1 self-signed certificate]' \
'-alias[alias]:alias:' \
'-sigalg[signature algorithm]:signature algorithm:' \
'-dname[X.500 distinguish name]:X.500 distinguish name:' \
'-validity[valid days]:number of days:' \
'-keypass[password for private key]:password for private key:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- identitydb \
'-identitydb[command to read identity database]' \
'-file[specify identity database file]:identity database file:_files' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- certreq \
'-certreq[command to generate certificate signing request]' \
'-alias[alias]:alias:' \
'-sigalg[signature algorithm]:signature algorithm:' \
'-file[specify certificate signing request file]:certificate signing request file:_files' \
'-keypass[password for private key]:password for private key:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- export \
'-export[command to store certificate]' \
'-alias[alias]:alias:' \
'-file[specify certificate file]:certificate file:_files' \
'-rfc[make certificate format printable as RFC 1421]' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- list \
'-list[command to print keystore entry]' \
'-alias[alias]:alias:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'(-rfc)-v[make certificate format human-readable]' \
'(-v)-rfc[make certificate format printable as RFC 1421]' \
- printcert \
'-printcert[command to print certificate in a human-readable format]' \
'-file[specify certificate file]:certificate file:_files' \
'-v[verbose mode]' \
- keyclone \
'-keyclone[command to create new keystore entry]' \
'-alias[alias]:alias:' \
'-dest[destination alias]:destination alias:' \
'-keypass[password for private key]:password for private key:' \
'-new[password for private key of new entry]:password for private key of new entry:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- storepasswd \
'-storepasswd[command to change password for keystore]' \
'-new[new password]:new password:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- keypasswd \
'-keypasswd[command to change password for private key]' \
'-alias[alias]:alias:' \
'-keypass[old password for private key]:old password for private key:' \
'-new[nwe password for private key]:new password for private key:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- delete \
'-delete[command to delete entry]' \
'-alias[alias]:alias:' \
'-storetype[keystore type]:store type:' \
'-keystore[keystore location]:keystore location:_files' \
'-storepass[password for keystore]:password:' \
'-v[verbose mode]' \
- help \
'(-J)-help[command to print help message]' && return 0
;;
jarsigner)
_arguments \
'-keystore[specify URL for keystore location]:URL for keystore location:_files' \
'-storetype[specify keystore type]:store type:' \
'-storepass[specify password for keystore]:password:' \
'-keypass[specify password for private key]:password:' \
'-sigfile[specify base file name of .SF and .DSA files to be generated]:sigfile:_files' \
'-signedjar[specify signed JAR file]:_files -g "*.(jar|zip)(-.)"' \
'(2)-verify[verify mode]' \
'-certs[output certificate information in verify mode]' \
'-verbose[print verbose messages]' \
'-internalsf[old behaviour]' \
'-sectionsonly[omit header of hash of the whole manifest file]' \
'-J-[specify java option]:java option:' \
':jar file:_files -g "*.(jar|zip)(-.)"' \
':alias:' && return 0
;;
policytool)
_arguments \
'-file:policy file:_files' && return 0
;;
*)
_message 'unknown command'
;;
esac
[[ -n "$state" ]] &&
case "$state" in
debug)
if [[ -prefix :*, ]]; then
compset -P :
_values -s , "debug info" lines vars source && return
else
_description debuginfo expl "debug info"
compadd -P: "$expl[@]" none && ret=0
compadd -P: -qS, "$expl[@]" lines vars source && ret=0
fi
;;
classpath|sourcepath|bootstrapclasspath|docletpath)
compset -P '*:'
compset -S ':*'
_alternative \
"classpath:$state:_path_files -qS: -g '*.(jar|zip)(-.)'" \
"classpath:$state:_path_files -r': ' -/" && return
;;
extdirs)
compset -P '*:'
_path_files -/ && return
;;
encoding)
tmp=(
'US-ASCII:American Standard Code for Information Interchange'
'Cp1252:Windows Latin-1'
'ISO-8859-1:ISO 8859-1, Latin alphabet No. 1 '
'ISO-8859-15:Latin alphabet No. 9 '
'UTF-8:Eight-bit UCS Transformation Format'
'UTF-16:Sixteen-bit UCS Transformation Format, byte order identified by an'
'UTF-16BE:Sixteen-bit UCS Transformation Format, big-endian byte order '
'UTF-16LE:Sixteen-bit UCS Transformation Format, little-endian byte order '
'ASCII:American Standard Code for Information Interchange'
'ISO8859_1:ISO 8859-1, Latin alphabet No. 1'
'UnicodeBig:Sixteen-bit Unicode Transformation Format, big-endian'
'UnicodeBigUnmarked:Sixteen-bit Unicode Transformation Format, big-endian'
'UnicodeLittle:Sixteen-bit Unicode Transformation Format, little-endian'
'UnicodeLittleUnmarked:Sixteen-bit Unicode Transformation Format, little-endian'
'UTF8:Eight-bit Unicode Transformation Format'
'UTF-16:Sixteen-bit Unicode Transformation Format, byte order'
'Big5:Big5, Traditional Chinese'
'Big5_HKSCS:Big5 with Hong Kong extensions, Traditional Chinese'
'Big5_Solaris:Big5 with seven additional Hanzi ideograph character mappings '
'Cp037:USA, Canada (Bilingual, French), Netherlands, Portugal, Brazil, Australia'
'Cp273:IBM Austria, Germany'
'Cp277:IBM Denmark, Norway'
'Cp278:IBM Finland, Sweden'
'Cp280:IBM Italy'
'Cp284:IBM Catalan/Spain, Spanish Latin America'
'Cp285:IBM United Kingdom, Ireland'
'Cp297:IBM France'
'Cp420:IBM Arabic'
'Cp424:IBM Hebrew'
'Cp437:MS-DOS United States, Australia, New Zealand, South Africa'
'Cp500:EBCDIC 500V1'
'Cp737:PC Greek'
'Cp775:PC Baltic'
'Cp838:IBM Thailand extended SBCS'
'Cp850:MS-DOS Latin-1'
'Cp852:MS-DOS Latin-2'
'Cp855:IBM Cyrillic'
'Cp856:IBM Hebrew'
'Cp857:IBM Turkish'
'Cp858:Variant of Cp850 with Euro character'
'Cp860:MS-DOS Portuguese'
'Cp861:MS-DOS Icelandic'
'Cp862:PC Hebrew'
'Cp863:MS-DOS Canadian French'
'Cp864:PC Arabic'
'Cp865:MS-DOS Nordic'
'Cp866:MS-DOS Russian'
'Cp868:MS-DOS Pakistan'
'Cp869:IBM Modern Greek'
'Cp870:IBM Multilingual Latin-2'
'Cp871:IBM Iceland'
'Cp874:IBM Thai'
'Cp875:IBM Greek'
'Cp918:IBM Pakistan (Urdu)'
'Cp921:IBM Latvia, Lithuania (AIX, DOS)'
'Cp922:IBM Estonia (AIX, DOS)'
'Cp930:Japanese Katakana-Kanji mixed with 4370 UDC, superset of 5026'
'Cp933:Korean Mixed with 1880 UDC, superset of 5029'
'Cp935:Simplified Chinese Host mixed with 1880 UDC, superset of 5031'
'Cp937:Traditional Chinese Host miexed with 6204 UDC, superset 5033'
'Cp939:Japanese Latin Kanji mixed with 4370 UDC, superset of 5035'
'Cp942:IBM OS/2 Japanese, superset of Cp932'
'Cp942C:Variant of Cp942'
'Cp943:IBM OS/2 Japanese, superset of Cp932 and Shift-JIS'
'Cp943C:Variant of Cp943'
'Cp948:OS/2 Chinese (Taiwan) superset of 938'
'Cp949:PC Korean'
'Cp949C:Variant of Cp949'
'Cp950:PC Chinese (Hong Kong, Taiwan)'
'Cp964:AIX Chinese (Taiwan)'
'Cp970:AIX Korean'
'Cp1006:IBM AIX Pakistan (Urdu)'
'Cp1025:IBM Multilingual Cyrillic (Bulgaria, Bosnia)'
'Cp1025:IBM Multilingual Cyrillic - Bulgaria, Bosnia, Herzegovinia, Macedonia (FYR)'
'Cp1026:IBM Latin-5, Turkey'
'Cp1046:IBM Arabic - Windows'
'Cp1097:IBM Iran (Farsi)/Persian'
'Cp1098:IBM Iran (Farsi)/Persian (PC)'
'Cp1112:IBM Latvia, Lithuania'
'Cp1122:IBM Estonia'
'Cp1123:IBM Ukraine'
'Cp1124:IBM AIX Ukraine'
'Cp1140:Variant of Cp037 with Euro character'
'Cp1141:Variant of Cp273 with Euro character'
'Cp1142:Variant of Cp277 with Euro character'
'Cp1143:Variant of Cp278 with Euro character'
'Cp1144:Variant of Cp280 with Euro character'
'Cp1145:Variant of Cp284 with Euro character'
'Cp1146:Variant of Cp285 with Euro character'
'Cp1147:Variant of Cp297 with Euro character'
'Cp1148:Variant of Cp500 with Euro character'
'Cp1149:Variant of Cp871 with Euro character'
'Cp1250:Windows Eastern European'
'Cp1251:Windows Cyrillic'
'Cp1253:Windows Greek'
'Cp1254:Windows Turkish'
'Cp1255:Windows Hebrew'
'Cp1256:Windows Arabic'
'Cp1257:Windows Baltic'
'Cp1258:Windows Vietnamese'
"Cp1381:IBM OS/2, DOS People's Republic of China (PRC)"
"Cp1383:IBM AIX People's Republic of China (PRC)"
'Cp33722:IBM-eucJP - Japanese (superset of 5050)'
'EUC_CN:GB2312, EUC encoding, Simplified Chinese'
'EUC_JP:JIS X 0201, 0208, 0212, EUC encoding, Japanese'
'EUC_KR:KS C 5601, EUC encoding, Korean'
'EUC_TW:CNS11643 (Plane 1-3), EUC encoding, Traditional Chinese'
'GB18030:Simplified Chinese, PRC standard'
'GBK:GBK, Simplified Chinese'
'ISCII91:ISCII91 encoding of Indic scripts'
'ISO2022CN:ISO 2022 CN, Chinese (conversion to Unicode only)'
'ISO2022CN_CNS:CNS 11643 in ISO 2022 CN form, Traditional Chinese'
'ISO2022CN_GB:GB 2312 in ISO 2022 CN form, Simplified Chinese'
'ISO2022JP:JIS X 0201, 0208 in ISO 2022 form, Japanese'
'ISO2022KR:ISO 2022 KR, Korean'
'ISO8859_2:ISO 8859-2, Latin alphabet No. 2'
'ISO8859_3:ISO 8859-3, Latin alphabet No. 3'
'ISO8859_4:ISO 8859-4, Latin alphabet No. 4'
'ISO8859_5:ISO 8859-5, Latin/Cyrillic alphabet'
'ISO8859_6:ISO 8859-6, Latin/Arabic alphabet'
'ISO8859_7:ISO 8859-7, Latin/Greek alphabet'
'ISO8859_8:ISO 8859-8, Latin/Hebrew alphabet'
'ISO8859_9:ISO 8859-9, Latin alphabet No. 5'
'ISO8859_13:ISO 8859-13, Latin alphabet No. 7'
'ISO8859_15:ISO 8859-15, Latin alphabet No. 9'
'JIS0201:JIS X 0201, Japanese'
'JIS0208:JIS X 0208, Japanese'
'JIS0212:JIS X 0212, Japanese'
'JISAutoDetect:Detects and converts from Shift-JIS, EUC-JP, ISO 2022 JP'
'Johab:Johab, Korean'
'KOI8_R:KOI8-R, Russian'
'MS874:Windows Thai'
'MS932:Windows Japanese'
'MS936:Windows Simplified Chinese'
'MS949:Windows Korean'
'MS950:Windows Traditional Chinese'
'MacArabic:Macintosh Arabic'
'MacCentralEurope:Macintosh Latin-2'
'MacCroatian:Macintosh Croatian'
'MacCyrillic:Macintosh Cyrillic'
'MacDingbat:Macintosh Dingbat'
'MacGreek:Macintosh Greek'
'MacHebrew:Macintosh Hebrew'
'MacIceland:Macintosh Iceland'
'MacRoman:Macintosh Roman'
'MacRomania:Macintosh Romania'
'MacSymbol:Macintosh Symbol'
'MacThai:Macintosh Thai'
'MacTurkish:Macintosh Turkish'
'MacUkraine:Macintosh Ukraine'
'SJIS:Shift-JIS, Japanese'
'TIS620:TIS620, Thai'
)
_describe 'character encoding' tmp --
;;
property)
if compset -P '*='; then
_default && return
else
_message -e property-names 'property name'
fi
;;
docsrc)
if compset -P @; then
_wanted files expl 'package/source list file' _files && return
else
_wanted files expl 'package or source' _files -g '*.java(-.)' && return
fi
;;
jararg)
if [[ -prefix - ]]; then
tmp=('-C:chdir')
_describe -o 'option' tmp -- && return
elif [[ "$words[CURRENT - 2]" == -C ]]; then
_wanted file expl 'input file' _files -W "($words[CURRENT - 1])" && return
elif [[ "$words[CURRENT - 1]" == -C ]]; then
_wanted directories expl 'chdir to' _files -/ && return
elif [[ $words[2] = *x* ]]; then
jf="$words[3]"
if [[ $jf != $_jar_cache_name && -f $jf ]]; then
_jar_cache_list=("${(@f)$($words[1] tf $jf)}")
_jar_cache_name=$jf
fi
_wanted files expl 'file from archive' _multi_parts / _jar_cache_list && return
else
_wanted files expl 'input file' _files && return
fi
;;
*)
_message "unknown state: $state"
;;
esac
return ret

57
functions/_mutt Normal file
View File

@@ -0,0 +1,57 @@
#compdef muttng mutt
local curcontext="$curcontext" state line expl suf
typeset -A opt_args
_arguments -C -s \
'::recipient:->userhostalias' \
'*-a[attach file using MIME]:file attachment:_files' \
'*-b[specify a BCC recipient]:BCC recipient:->userhost' \
'*-c[specify a CC recipient]:CC recipient:->userhost' \
'-e+[specify a post-init configuration command]:post-init configuration:' \
'-f+[specify mailbox to load]:mailbox: _mailboxes' \
'-F+[specify an init file]:init file:_files' \
'-h[display help]' \
'-H+[specify a draft file for message]:draft file:_files' \
'-i+[specify file to include in message]:include file:_files' \
'-m+[specify default mailbox type]:mailbox type:(mbox MMDF MH Maildir)' \
'-n[bypass system configuration]' \
'-p[resume postponed message]' \
'-R[open in read-only mode]' \
'-s+[specify a subject]:subject:' \
'-v[display mutt version]' \
'-x[emulate mailx compose]' \
'-y[start listing mailboxes]' \
'-z[start only if new messages]' \
'-Z[open first mailbox with new mail]' && return 0
if [[ "$state" = userhostalias ]]; then
if compset -P '*@'; then
_description hosts expl 'remote host name'
_hosts "$expl[@]" -q -S, && return 0
else
compset -S '@*' || suf='@'
_description users expl 'login name'
_users "$expl[@]" -q -S "$suf"
# added by asyd (20020304)
if [ -r ~/.muttrc ]; then
# use cache
if ( [[ ${+_list_alias} -eq 0 ]] || _cache_invalid mutt_alias ) &&
! _retrieve_cache mutt_alias; then
_list_alias=(${(o)${${(M)${(f)"$(< ~/.muttrc)"}##alias*}/alias /}%% *})
_store_cache mutt_alias _list_alias
fi
_wanted alias expl 'alias name' compadd -q -S, $_list_alias
fi
return 0
fi
fi
return 1

242
functions/_openssl Normal file
View File

@@ -0,0 +1,242 @@
#compdef openssl
# OpenSSL zsh completion
# Bruno Bonfils <asyd@asyd.net>
# 2005-11-13
local prev="$words[CURRENT-1]" # previous word
local cmd="$words[2]" # Current openssl sub command (i.e. x509, req, etc..)
local -a openssl_commands
local -a options
local -A explanations
# Associative arrays to add description based on the option
explanations=(
'-in' 'Input file'
'-out' 'Output file'
'-CA' 'CA file'
'-rand' 'Seed data file'
'-key' 'Key file'
'-CAfile' 'CA file'
'-cacert' 'CA certificate file'
'-CApath' 'CA directory'
)
# List of openssl's sub commands
openssl_commands=("asn1parse" "s_client" "x509" "req" "ca"
"dsa" "crl" "ocsp" "pkcs12" "verify"
"crl" "pkcs7" "genrsa" "gendsa")
local -a textoptions # suboptions of X509's certopt command
textoptions=("compatible" "no_header" "no_version" "no_serial"
"no_signame" "no_validity" "no_subject" "no_issuer"
"no_pubkey" "no_sigdump" "no_aux" "no_extensions"
"ext_default" "ext_error" "ext_parse" "ext_dump" "ca_default")
# Is first word an OpenSSL subcommand ?
if [[ -n ${(M)openssl_commands:#$cmd} ]] ; then
# These options are used by lot of sub openssl_commands
# The continue prevent complete others options
case "$prev" in
"-CA"|"-rand"|"-cacert"|"-cert"|"-in"|"-out"|"-key"|"-CAfile")
_wanted filename expl $explanations[$prev] _files
continue
;;
"-passin"|"-passout")
_wanted passphrase expl "pass phrase format"
continue
;;
"-inform"|"-outform"|"-certform")
_wanted format expl "Format" compadd "pem" "der"
continue
;;
"-CApath")
_wanted directory expl $explanations[$prev] _directories
continue
;;
esac
# Complete for specific options
case "$cmd" in
# s_client
"s_client")
case "$prev" in
"-connect")
_wanted host expl "host:port" _hosts
;;
"-starttls")
_wanted protocol expl "protocol" compadd "pop3" "smtp"
;;
*)
options=("-connect" "-cert" "-certform" "-key" "-keyform" "-pass"
"-verify" "-CApath" "-CAfile" "-reconnect" "-pause" "-showcerts"
"-prexit" "-state" "-debug" "-msg" "-nbio_test" "-crlf"
"-ign_eof" "-quiet" "-bugs" "-cipher" "-starttls" "-engine" "-rand")
_wanted options expl "s_client options" compadd - $options
;;
esac
;;
# X509 subcommand
"x509")
case "$prev" in
"-certopt")
_wanted certopt expl "Certificate options" compadd -q -S, $textoptions
;;
# Complete for x509 options
*)
options=("-inform" "-outform" "-in" "-out" "-engine" "-text" "-certopt" "-noout" "-modulus" "-serial" "-subject_hash" "-fingerprint")
# Only complete for digest only if none found
if [[ ! -n $words[(r)(-md2|-md5|-sha1|-mdc2)] ]] ; then
options=($options "-md2" "-md5" "-sha1" "-mdc2")
fi
_wanted options expl "x509 options" compadd - $options
;;
esac
;;
# verify subcommand
"verify")
options=("-CAfile" "-CApath" "-purpose" "-untrusted" "-issuer_checks" "-verbose")
_wanted options expl "verify options" compadd - $options
_wanted certificates expl "X509 certificates" _files
;;
# req subcommand
"req")
options=("-inform" "-outform" "-in" "-passin" "-out" "-passout"
"-text" "-pubkey" "-noout" "-verify" "-new" "-rand" "-newkey"
"-key" "-keyform" "-keyout" "-nodes" "-config" "-multivalue-rdn"
"-x509" "-days" "-set_serial" "-extensions" "-reqexts"
"-utf8" "-nameopt" "-asn1-kludge" "-newhdr" "-batch" "-verbose" "-engine")
# Complete for digest only if none found
if [[ ! -n $words[(r)(-md2|-md5|-sha1|-mdc2)] ]] ; then
options=($options "-md2" "-md5" "-sha1" "-mdc2")
fi
_wanted options expl "req options" compadd - $options
;;
# OCSP
"ocsp")
case "$prev" in
"-issuer"|"-index"|"-reqout"|"-respout"|"-VAfile")
_wanted filename expl "${prev//-/} file" _files
;;
"-port")
# TODO FIXME, support hosts:port
_wanted port expl "port" _ports
;;
"-url")
_wanted url expl "URL" _urls
;;
*)
options=("-out" "-issuer" "-cert" "-serial" "-signer" "-signkey" "-sign_other" "-req_text"
"-url" "-CAfile" "-port" "-index" "-CApath" "-VAfile" "-nonce" "-no_nonce"
"-req_text" "-resp_text" "-text" "-reqout" "-respout" "-host")
_wanted options expl 'ocsp options' compadd - $options
;;
esac
;;
# pkcs12
"pkcs12")
options=('-in' '-out' '-pass' '-passout' '-noout' '-clcerts' '-cacerts' '-nocerts'
'-nokeys' '-info' '-des' '-des3' '-idea' '-nodes' '-nomacver' '-twopass' '-export'
'-out' '-inkey' '-name' '-certfile' '-caname' '-passin' '-chain' '-descert')
_wanted options expl 'pkcs12 options' compadd - $options
;;
# crl
"crl")
options=('-inform' '-outform' '-text' '-in' '-out' '-noout' '-hash' '-issuer'
'-lastupdate' '-nextupdate' '-CAfile' '-CApath')
_wanted options expl 'CRL options' compadd - $options
;;
"pkcs7")
options=('-inform' '-outform' '-in' '-text' '-out' '-print_certs' '-noout' '-engine')
_wanted options expl 'PKCS#7 options' compadd - $options
;;
"asn1parse")
case "$prev" in
"-offset"|"-strparse")
_wanted format expl "Offset" compadd - "number"
;;
"-length")
;;
*)
options=('-inform' '-in' '-out' '-noout' '-offset' '-length' '-i' '-oid' '-strpase')
_wanted options expl 'ASN1Parse options' compadd - $options
;;
esac
;;
"ca")
case "$prev" in
"-config"|"-ss_cert"|"-spkack"|"-extfile")
_wanted filename expl "${prev/-/} file" _files
;;
"-outdir")
_wanted directory expl 'Directory output' _directories
;;
"-startdate"|"-enddate"|"-crl_compromise"|"-crl_CA_compromise")
_message 'Date (YYMMDDHHMMSSZ)'
;;
"-days"|"-crldays")
_message 'Number of days'
;;
"-crlhours")
_message 'Number of hours'
;;
"-crl_reason")
reasons=("unspecified"
"keyCompromise"
"CACompromise"
"affiliationChanged"
"superseded"
"cessationOfOperation"
"certificateHold"
"removeFromCRL")
_wanted reason expl 'Revocation reason' compadd - $reasons
;;
"-md")
mds=("md5" "sha1" "mdc2")
_wanted msgdst expl 'Message digest' compadd - $mds
;;
"-name"|"-policy"|"-extensions"|"-crlexts")
_message 'Section'
;;
*)
options=('-config' '-name' '-in' '-ss_cert' '-spkack' '-infiles' '-out'
'-outdir' '-cert' '-keyfile' '-key' '-passin' '-verbose'
'-notext' '-startdate' '-enddate' '-days' '-md' '-policy'
'-msie_hack' '-preverseDN' '-noemailDN' '-batch' '-extensions'
'-extfile' '-engine' '-gencrl' '-crldays' '-crlhours' '-revoke'
'-crl_reason' '-crl_hold' '-crl_compromise' '-crl_CA_compromise'
'-subj' '-crlexts')
_wanted options expl 'CA options' compadd - $options
;;
esac
;;
"genrsa")
digests=('-des' '-des3' '-idea')
options=('-out' '-passout')
# FIXME TODO
if [[ ! -n $words[(r)($digests)] ]] ; then
options=($options $digests)
fi
_wanted options expl 'genrsa Options' compadd - $options
;;
*)
_message "invalid command"
;;
esac
else # Nop, complete for subcommands
if [[ ${#words} < 3 ]] ; then
_wanted subcommand expl "Subcommand" compadd $openssl_commands
else
_message "invalid command"
fi
fi

30
functions/_svc Normal file
View File

@@ -0,0 +1,30 @@
#compdef svcadm svcs
_svc () {
case "$service" in
svcs) _svcs "$@";;
svcadm) _svcadm "$@";;
*) _message "Invalid service $service";;
esac
}
_svcadm () {
local expl prev="$words[CURRENT-1]"
if [[ -n $words[(r)(enable|disable|clear|restart|refresh|mark)] ]] ; then
_message 'ok'
else
_arguments \
'-v:verbose' && return
fi
}
_svcs () {
local -a zones
zones=(a b c)
_arguments \
'-z[zone]:zone:($zones)' \
'*:command:(boot halt install list ready uninstall verify reboot)' && return
}
return 1

51
functions/_zones Normal file
View File

@@ -0,0 +1,51 @@
#compdef zoneadm zonecfg zlogin
_zones () {
case "$service" in
zoneadm) _zoneadm "$@";;
zonecfg) _zonecfg "$@";;
zlogin) _zlogin "$@";;
*) _message "Unknow service $service";;
esac
}
_zlogin () {
local -a zones
zones=($(zonelist))
_arguments \
'-l[username]:username:_users' \
'-C[console login]' \
'-S[safe login]' \
'-E[disable escape sequence character]' \
'*:zone:($zones)' && return
}
_zoneadm () {
local -a zones
zones=($(zonelist))
_arguments \
'-z[zone]:zone:($zones)' \
'*:command:(boot halt install list ready uninstall verify reboot)' && return
}
_zonecfg () {
local -a zones
zones=($(zonelist))
_arguments \
'-z[zone]:zone:($zones)' \
'-f[command file]:file:_files' && return
}
zonelist () {
local -a zones
# Fetch zone lists from /etc/zones/index
zones=(${${(a)"${(f)$(< /etc/zones/index)}"##\#*}//:*}) #" prevent vim become crazy
# Remove global zone from list "
zones[(r)global]=''
echo -n $zones
}
return 1