Browse Source

extract: add zstd support (#8469)

Filipe Nascimento 4 years ago
parent
commit
1761685d3e
3 changed files with 9 additions and 1 deletions
  1. 3 0
      plugins/extract/README.md
  2. 1 1
      plugins/extract/_extract
  3. 5 0
      plugins/extract/extract.plugin.zsh

+ 3 - 0
plugins/extract/README.md

@@ -34,15 +34,18 @@ plugins=(... extract)
 | `tar.gz`          | Tarball with gzip compression        |
 | `tar.xz`          | Tarball with lzma2 compression       |
 | `tar.zma`         | Tarball with lzma compression        |
+| `tar.zst`         | Tarball with zstd compression        |
 | `tbz`             | Tarball with bzip compression        |
 | `tbz2`            | Tarball with bzip2 compression       |
 | `tgz`             | Tarball with gzip compression        |
 | `tlz`             | Tarball with lzma compression        |
 | `txz`             | Tarball with lzma2 compression       |
+| `tzst`            | Tarball with zstd compression        |
 | `war`             | Web Application archive (Java-based) |
 | `xpi`             | Mozilla XPI module file              |
 | `xz`              | LZMA2 archive                        |
 | `zip`             | Zip archive                          |
+| `zst`             | Zstandard file (zstd)                |
 
 See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for
 more information regarding archive formats.

+ 1 - 1
plugins/extract/_extract

@@ -3,5 +3,5 @@
 
 _arguments \
   '(-r --remove)'{-r,--remove}'[Remove archive.]' \
-  "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|deb|gz|ipsw|jar|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.xz|tar.zma|tbz|tbz2|tgz|tlz|txz|war|whl|xpi|xz|zip)(-.)'" \
+  "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|deb|gz|ipsw|jar|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst)(-.)'" \
     && return 0

+ 5 - 0
plugins/extract/extract.plugin.zsh

@@ -40,6 +40,10 @@ extract() {
 				tar --lzma --help &> /dev/null \
 				&& tar --lzma -xvf "$1" \
 				|| lzcat "$1" | tar xvf - ;;
+			(*.tar.zst|*.tzst)
+				tar --zstd --help &> /dev/null \
+				&& tar --zstd -xvf "$1" \
+				|| zstdcat "$1" | tar xvf - ;;
 			(*.tar) tar xvf "$1" ;;
 			(*.gz) (( $+commands[pigz] )) && pigz -dk "$1" || gunzip -k "$1" ;;
 			(*.bz2) bunzip2 "$1" ;;
@@ -59,6 +63,7 @@ extract() {
 				cd ..; rm *.tar.* debian-binary
 				cd ..
 			;;
+			(*.zst) unzstd "$1" ;;
 			(*)
 				echo "extract: '$1' cannot be extracted" >&2
 				success=1