#compdef localedef # TODO: Solaris opts local curcontext="$curcontext" state line expl ret=1 typeset -A opt_args if _pick_variant gnu='(GNU|EGLIBC)' unix --version; then local exargs="-? --help --usage -V --version" _arguments -A "-*" -C -S -s \ '(- *)'{-\?,--help}'[display help information]' \ '(- *)--usage[display a short usage message]' \ '(- *)'{-V,--version}'[print program version]' \ "(-A --alias-file= $exargs)"{-A+,--alias-file=}'[specify locale alias file]:alias file:_files' \ "($exargs)--prefix=[specify path prefix]:prefix:_files" \ "(-c --force $exargs)"{-c,--force}'[force write despite of warnings]' \ "(-v --verbose $exargs)"{-v,--verbose}'[display additional information]' \ "($exargs)--quiet[suppress messages and warnings]" \ - set1 \ "(-f --charmap= $exargs)"{-f+,--charmap=}'[specify locale charmap file]:charmap:->charmap' \ "(-i --inputfile= $exargs)"{-i+,--inputfile=}'[specify locale definition file]:locale file:_files' \ "(-u --repertoire-map= $exargs)"{-u+,--repertoire-map=}'[specify repertoire map file]:repertoire map file:_files' \ '1:path:_files' \ - set2 \ "(--list-archive $exargs)--list-archive[list locales in archive]" \ - set3 \ "(--delete-from-archive $exargs)--delete-from-archive[delete locale from archive]" \ '*:locale:->locale' \ - set4 \ "(--add-to-archive $exargs)--add-to-archive[add locale to archive]" \ "(--replace $exargs)--replace[replace locale in archive]" \ "(--no-archive $exargs)--no-archive[use subdir not archive]" \ '*:compiled path:_files -/' \ && return 0 case "$state" in charmap) if [[ $words[-1] == */* ]]; then _wanted values expl charmap _files && ret=0 else typeset -a charmaps charmaps=( ${(f)"$(locale -m)"} ) _wanted values expl charmap compadd "$@" \ -M 'm:{a-zA-Z}={A-Za-z} r:|-=* r:|=*' \ -a - charmaps && ret=0 fi ;; locale) typeset -a locales local pref=${opt_args[--prefix]} local p=${pref:+--prefix} locales=( ${(f)"$(localedef --list-archive $p $pref)"} ) _wanted values expl locale compadd "$@" -a - locales && ret=0 ;; esac return ret else typeset -a u_opt dragonfly_opts [[ $OSTYPE != darwin* ]] && u_opt=( "(-u)"-u+'[specify target codeset]:codeset:_files' ) [[ $OSTYPE == dragonfly* ]] && dragonfly_opts=( "(-D)"-D'[create BSD-style output]' \ "(-U)"-U'[ignore undefined character symbols]' \ "(-v)"-v'[verbose deguggin output]' \ "(-w)"-w+'[specify width file]:width file:_files' \ ) _arguments -A "-*" -C \ "(-c)"-c'[force write despite of warnings]' \ "(-f)"-f+'[specify locale charmap file]:charmap:->charmap' \ "(-i)"-i+'[specify locale definition file]:locale file:_files' \ $u_opt \ $dragonfly_opts \ '1:path:_files' \ && return 0 case "$state" in charmap) if [[ $words[-1] == */* ]]; then _wanted values expl charmap _files && ret=0 else typeset -a charmaps charmaps=( ${(f)"$(locale -m)"} ) _wanted values expl charmap compadd "$@" \ -M 'm:{a-zA-Z}={A-Za-z} r:|-=* r:|=*' \ -a - charmaps && ret=0 fi ;; esac return ret fi