mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-12 04:58:57 +00:00
Update tar completion
* Fix gzip archive files completion * Let tar auto detect file type
This commit is contained in:
parent
e03db61dac
commit
408cdba1be
1 changed files with 14 additions and 35 deletions
|
@ -1,42 +1,21 @@
|
||||||
|
|
||||||
function __fish_complete_tar -d "Peek inside of archives and list all files"
|
function __fish_complete_tar -d "Peek inside of archives and list all files"
|
||||||
|
|
||||||
set -l cmd (commandline -poc)
|
set -l args (commandline -poc)
|
||||||
set -e cmd[1]
|
while count $args >/dev/null
|
||||||
for i in $cmd
|
switch $args[1]
|
||||||
switch $i
|
case '-*f' '--file'
|
||||||
case '-*'
|
set -e args[1]
|
||||||
|
if test -f $args[1]
|
||||||
|
set -l file_list (tar -atf $args[1] ^ /dev/null)
|
||||||
|
if test -n "$file_list"
|
||||||
|
printf (_ "%s\tArchived file\n") $file_list
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
case '*'
|
||||||
|
set -e args[1]
|
||||||
continue
|
continue
|
||||||
|
|
||||||
case '*.tar.bz' '*.tar.bz2' '*.tbz' '*.tbz2'
|
|
||||||
if test -f $i
|
|
||||||
set -l file_list (tar -jt <$i)
|
|
||||||
printf (_ "%s\tArchived file\n") $file_list
|
|
||||||
end
|
|
||||||
return
|
|
||||||
|
|
||||||
case '*.tar.gz' '*.tgz'
|
|
||||||
if test -f $i
|
|
||||||
set -l file_list (tar -it <$i)
|
|
||||||
printf (_ "%s\tArchived file\n") $file_list
|
|
||||||
end
|
|
||||||
return
|
|
||||||
|
|
||||||
case '*.tar.xz'
|
|
||||||
if test -f $i
|
|
||||||
set -l file_list (tar -Jt <$i)
|
|
||||||
printf (_ "%s\tArchived file\n") $file_list
|
|
||||||
end
|
|
||||||
return
|
|
||||||
|
|
||||||
case '*.tar'
|
|
||||||
if test -f $i
|
|
||||||
set -l file_list (tar -t <$i)
|
|
||||||
printf (_ "%s\tArchived file\n") $file_list
|
|
||||||
end
|
|
||||||
return
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue