mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-10 16:31:27 +02:00
72 lines
1.7 KiB
Text
72 lines
1.7 KiB
Text
#compdef lha
|
|
|
|
local expl
|
|
|
|
if (( CURRENT == 2 )); then
|
|
compset -P -
|
|
|
|
local lhacmds
|
|
lhacmds=(
|
|
'( x l v u d m c p t)a[add \(or replace\) to archive]'
|
|
'(a l v u d m c p t)x[extract from archive]'
|
|
'(a x v u d m c p t)l[list]'
|
|
'(a x l u d m c p t)v[verbose List]'
|
|
'(a x l v d m c p t)u[update newer files to archive]'
|
|
'(a x l v u m c p t)d[delete from archive]'
|
|
'(a x l v u d c p t)m[move to archive]'
|
|
'(a x l v u d m p t)c[re-construct new archive]'
|
|
'(a x l v u d m c t)p[print to stdout from archive]'
|
|
'(a x l v u d m c p )t[test file CRC in archive]'
|
|
)
|
|
|
|
if [ "${words[2]#-}" != "" ]; then
|
|
lhacmds=($lhacmds
|
|
'v[verbose]'
|
|
'q[quiet]'
|
|
'n[not execute]'
|
|
'f[force\(over write at extract\)]'
|
|
't[files are text files]'
|
|
'e[text code convert from/to EUC]'
|
|
'g[use generic format \(for compatibility\)]'
|
|
)
|
|
case ${words[2]#-} in
|
|
a*|u*)
|
|
lhacmds=($lhacmds
|
|
'd[delete files after]'
|
|
"z[don't compress files]"
|
|
'( 1 2)0[header level 0]'
|
|
'(0 2)1[header level 1]'
|
|
'(0 1 )2[header level 2]'
|
|
)
|
|
;;
|
|
c*)
|
|
lhacmds=($lhacmds 'd[delete files after]')
|
|
;;
|
|
x*)
|
|
lhacmds=($lhacmds 'i[ignore directory path]')
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
_values -s '' 'lha command' $lhacmds
|
|
elif (( CURRENT == 3 )); then
|
|
_wanted files expl 'lha file' _files -g '*.lzh(-.)'
|
|
else
|
|
case ${words[2]#-} in
|
|
l*|x*|d*)
|
|
if [ -f "$words[3]" ]; then
|
|
_lzh_cache_list=`$words[1] lq $words[3] | awk '{print $NF}'`
|
|
_lzh_cache_list=("${(@f)${_lzh_cache_list}}")
|
|
|
|
_wanted files expl 'file from archive' _multi_parts / _lzh_cache_list
|
|
else
|
|
_message -r "archive file is not found : ${words[3]}"
|
|
return 1
|
|
fi
|
|
|
|
;;
|
|
*)
|
|
_files
|
|
;;
|
|
esac
|
|
fi
|