summaryrefslogtreecommitdiff
path: root/completions/tar
diff options
context:
space:
mode:
Diffstat (limited to 'completions/tar')
-rw-r--r--completions/tar34
1 files changed, 17 insertions, 17 deletions
diff --git a/completions/tar b/completions/tar
index 45f3ff36..374e0692 100644
--- a/completions/tar
+++ b/completions/tar
@@ -12,7 +12,7 @@ _tar()
return 0
fi
- local tars='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'
+ local tars='@(@(tar|gem|spkg)?(.@(Z|[bgx]z|bz2|lz?(ma)))|t@([abglx]z|b?(z)2))'
case ${words[1]} in
--*)
@@ -21,11 +21,11 @@ _tar()
if [[ $cword -eq 2 ]]; then
ext='@(tar|gem|spkg)'
case ${words[1]} in
- *a*) ext="$tars" ;;
- *z*) ext='t?(ar.)gz' ;;
- *Z*) ext='tar.Z' ;;
- *[jy]*) ext='t?(ar.)bz?(2)' ;;
- *J*) ext='t?(ar.)xz' ;;
+ *a*) ext="$tars" ;;
+ *z*) ext='t?(ar.)gz' ;;
+ *Z*) ext='ta@(r.Z|z)' ;;
+ *[jy]*) ext='t@(?(ar.)bz?(2)|b2)' ;;
+ *J*) ext='t?(ar.)xz' ;;
esac
_filedir $ext
else
@@ -33,21 +33,21 @@ _tar()
fi
return 0
;;
- +([^IZzJjy])f)
+ +([^ZzJjy])f)
ext="$tars"
- regex='\(\(tar\|gem\|spkg\)\(\.\(Z\|[gx]z\|bz2\?\|lzma\)\)\?\|t\([glx]z\|bz2\?\)\)'
+ regex='\(\(tar\|gem\|spkg\)\(\.\(Z\|[bgx]z\|bz2\|lz\(ma\)\?\)\)\?\|t\([abglx]z\|bz\?2\)\)'
;;
*[Zz]*f)
- ext='@(t?(ar.)|gem.|spkg.)@(gz|Z)'
- regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(gz\|Z\)'
+ ext='@(@(t?(ar.)|gem.|spkg.)@(gz|Z)|taz)'
+ regex='\(\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(gz\|Z\)\|taz\)'
;;
- *[Ijy]*f)
- ext='@(@(t?(ar.)|gem.)bz?(2)|spkg)'
- regex='\(\(t\(ar\.\)\?\|gem\.\)bz2\?\|spkg\)'
+ *[jy]*f)
+ ext='@(@(t?(ar.)|gem.)bz?(2)|spkg|tb2)'
+ regex='\(\(t\(ar\.\)\?\|gem\.\)bz2\?\|spkg\|tb2\)'
;;
*[J]*f)
- ext='@(t?(ar.)|gem.|spkg.)@(lz?(ma)|xz)'
- regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(lzma\|xz\)\?'
+ ext='@(@(tar|gem|spkg).@(lzma|xz)|t[lx]z)'
+ regex='\(\(tar\|gem\|spkg\)\.\(lzma\|xz\)\|t[lx]z\)'
;;
*)
_filedir
@@ -56,13 +56,13 @@ _tar()
esac
case $prev in
- *$ext)
+ *${ext:-$tars})
# complete on files in tar file
#
# get name of tar file from command line
tar=$( sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' <<<"${words[@]}" )
# devise how to untar and list it
- untar=t${words[1]//[^IJzjyf]/}
+ untar=t${words[1]//[^Jzjyf]/}
local IFS=$'\n'
COMPREPLY=( $( compgen -W "$( printf '%s\n' $( tar $untar $tar \