mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-12 05:01:27 +02:00
92 lines
3 KiB
Text
92 lines
3 KiB
Text
#compdef localedef
|
|
|
|
local curcontext="$curcontext" state line expl ret=1
|
|
typeset -A opt_args
|
|
|
|
if _pick_variant gnu='(Free Soft|GNU|GLIBC)' 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 charmaps expl charmap _files && ret=0
|
|
else
|
|
typeset -a charmaps
|
|
charmaps=( ${(f)"$(locale -m)"} )
|
|
_wanted charmaps expl charmap compadd -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 locales expl locale compadd -a locales && ret=0
|
|
;;
|
|
esac
|
|
|
|
return ret
|
|
|
|
else
|
|
|
|
typeset -a u_opt bsd_opts
|
|
[[ $OSTYPE != darwin* ]] && u_opt=(
|
|
'-u+[specify target codeset]:codeset:_files'
|
|
)
|
|
[[ $OSTYPE == (freebsd*|dragonfly*) ]] && bsd_opts=(
|
|
'-D[create BSD-style output]' \
|
|
'-U[ignore undefined character symbols]' \
|
|
'-v[verbose debug output]' \
|
|
'-w+[specify width file]:width file:_files' \
|
|
)
|
|
|
|
_arguments -A "-*" -C \
|
|
'-c[force write despite of warnings]' \
|
|
'-f+[specify locale charmap file]:charmap:->charmap' \
|
|
'-i+[specify locale definition file]:locale file:_files' \
|
|
$u_opt \
|
|
$bsd_opts \
|
|
'1:path:_files' \
|
|
&& return 0
|
|
|
|
case "$state" in
|
|
charmap)
|
|
if [[ $words[-1] == */* ]]; then
|
|
_wanted charmaps expl charmap _files && ret=0
|
|
else
|
|
typeset -a charmaps
|
|
charmaps=( ${(f)"$(locale -m)"} )
|
|
_wanted charmaps expl charmap compadd -a charmaps && ret=0
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
return ret
|
|
|
|
fi
|