From 4ad09ab0b10adc90730476bd27f24f93d94728ad Mon Sep 17 00:00:00 2001 From: "Ing. Jan Kaláb" Date: Tue, 12 Mar 2024 18:23:08 +0100 Subject: feat(extract): prefer using `pbzip2` instead of `bunzip2` (#12280) --- plugins/extract/extract.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'plugins/extract/extract.plugin.zsh') diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 88d8b0740..80ca50c50 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -70,7 +70,7 @@ EOF (*.tar.lz4) lz4 -c -d "$full_path" | tar xvf - ;; (*.tar.lrz) (( $+commands[lrzuntar] )) && lrzuntar "$full_path" ;; (*.gz) (( $+commands[pigz] )) && pigz -cdk "$full_path" > "${file:t:r}" || gunzip -ck "$full_path" > "${file:t:r}" ;; - (*.bz2) bunzip2 "$full_path" ;; + (*.bz2) (( $+commands[pbzip2] )) && pbzip2 -d "$full_path" || bunzip2 "$full_path" ;; (*.xz) unxz "$full_path" ;; (*.lrz) (( $+commands[lrunzip] )) && lrunzip "$full_path" ;; (*.lz4) lz4 -d "$full_path" ;; -- cgit v1.2.3-70-g09d2 From 668ca3a32dae5ff5d164fc3be565f1e2ece248db Mon Sep 17 00:00:00 2001 From: Shai Coleman Date: Fri, 3 May 2024 20:43:53 +0100 Subject: fix(extract): `zst` now extracts as expected (#12395) --- plugins/extract/extract.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'plugins/extract/extract.plugin.zsh') diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 80ca50c50..1c7599195 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -87,7 +87,7 @@ EOF builtin cd -q control; extract ../control.tar.* builtin cd -q ../data; extract ../data.tar.* builtin cd -q ..; command rm *.tar.* debian-binary ;; - (*.zst) unzstd "$full_path" ;; + (*.zst) unzstd --stdout "$full_path" > "${file:t:r}" ;; (*.cab|*.exe) cabextract "$full_path" ;; (*.cpio|*.obscpio) cpio -idmvF "$full_path" ;; (*.zpaq) zpaq x "$full_path" ;; -- cgit v1.2.3-70-g09d2 From 4e8099175ef2559f00e8ab5954adccd940a8fd4a Mon Sep 17 00:00:00 2001 From: vincent Date: Sat, 8 Jun 2024 16:48:33 +0800 Subject: feat(extract): add support for multi-part 7z (#12484) --- plugins/extract/extract.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'plugins/extract/extract.plugin.zsh') diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 1c7599195..e2b3111d5 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -80,7 +80,7 @@ EOF (*.rar) unrar x -ad "$full_path" ;; (*.rpm) rpm2cpio "$full_path" | cpio --quiet -id ;; - (*.7z) 7za x "$full_path" ;; + (*.7z | *.7z.[0-9]*) 7za x "$full_path" ;; (*.deb) command mkdir -p "control" "data" ar vx "$full_path" > /dev/null -- cgit v1.2.3-70-g09d2 From c68ff8aeedc2b779ae42d745457ecd443e22e212 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Fri, 30 Aug 2024 14:30:57 +0200 Subject: feat(extract): add support for .vsix files (VS Code extension) (#12643) --- plugins/extract/README.md | 1 + plugins/extract/extract.plugin.zsh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'plugins/extract/extract.plugin.zsh') diff --git a/plugins/extract/README.md b/plugins/extract/README.md index c8d98b229..e0f571521 100644 --- a/plugins/extract/README.md +++ b/plugins/extract/README.md @@ -52,6 +52,7 @@ plugins=(... extract) | `tlz` | Tarball with lzma compression | | `txz` | Tarball with lzma2 compression | | `tzst` | Tarball with zstd compression | +| `vsix` | VS Code extension zip file | | `war` | Web Application archive (Java-based) | | `whl` | Python wheel file | | `xpi` | Mozilla XPI module file | diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index e2b3111d5..f2eebf4d6 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -76,7 +76,7 @@ EOF (*.lz4) lz4 -d "$full_path" ;; (*.lzma) unlzma "$full_path" ;; (*.z) uncompress "$full_path" ;; - (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$full_path" ;; + (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl|*.vsix) unzip "$full_path" ;; (*.rar) unrar x -ad "$full_path" ;; (*.rpm) rpm2cpio "$full_path" | cpio --quiet -id ;; -- cgit v1.2.3-70-g09d2 From e50dd3417c8b9e072593b6c14473e1360bd88b02 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Thu, 5 Sep 2024 12:07:18 +0200 Subject: feat(extract): add support for `.crx` (Chrome extension format) (#12652) --- plugins/extract/_extract | 49 +++++++++++++++++++++++++++++++++++++- plugins/extract/extract.plugin.zsh | 2 +- 2 files changed, 49 insertions(+), 2 deletions(-) (limited to 'plugins/extract/extract.plugin.zsh') diff --git a/plugins/extract/_extract b/plugins/extract/_extract index 56b17058f..0b43e86bc 100644 --- a/plugins/extract/_extract +++ b/plugins/extract/_extract @@ -1,7 +1,54 @@ #compdef extract #autoload +local -a exts=( + 7z + aar + apk + bz2 + cab + cpio + crx + deb + ear + gz + ipa + ipsw + jar + lrz + lz4 + lzma + obscpio + rar + rpm + sublime-package + tar + tar.bz2 + tar.gz + tar.lrz + tar.lz + tar.lz4 + tar.xz + tar.zma + tar.zst + tbz + tbz2 + tgz + tlz + txz + tzst + vsix + war + whl + xpi + xz + Z + zip + zpaq + zst +) + _arguments \ '(-r --remove)'{-r,--remove}'[Remove archive.]' \ - "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|cpio|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|obscpio|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst|zpaq)(-.)'" \ + "*::archive file:_files -g '(#i)*.(${(j:|:)exts})(-.)'" \ && return 0 diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index f2eebf4d6..aa3fd00e6 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -76,7 +76,7 @@ EOF (*.lz4) lz4 -d "$full_path" ;; (*.lzma) unlzma "$full_path" ;; (*.z) uncompress "$full_path" ;; - (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl|*.vsix) unzip "$full_path" ;; + (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl|*.vsix|*.crx) unzip "$full_path" ;; (*.rar) unrar x -ad "$full_path" ;; (*.rpm) rpm2cpio "$full_path" | cpio --quiet -id ;; -- cgit v1.2.3-70-g09d2 From 9d8d4cf41482a95127ca41faecc0a7ee0781ca2e Mon Sep 17 00:00:00 2001 From: drjaska <88596812+drjaska@users.noreply.github.com> Date: Fri, 8 Aug 2025 12:23:24 +0300 Subject: feat(extract): support `.pk{3,4,7}` files (#13254) --- plugins/extract/README.md | 97 ++++++++++++++++++++------------------ plugins/extract/_extract | 3 ++ plugins/extract/extract.plugin.zsh | 4 +- 3 files changed, 55 insertions(+), 49 deletions(-) (limited to 'plugins/extract/extract.plugin.zsh') diff --git a/plugins/extract/README.md b/plugins/extract/README.md index e0f571521..7bedfb1c6 100644 --- a/plugins/extract/README.md +++ b/plugins/extract/README.md @@ -14,53 +14,56 @@ plugins=(... extract) ## Supported file extensions -| Extension | Description | -| :---------------- | :----------------------------------- | -| `7z` | 7zip file | -| `Z` | Z archive (LZW) | -| `apk` | Android app file | -| `aar` | Android library file | -| `bz2` | Bzip2 file | -| `cab` | Microsoft cabinet archive | -| `cpio` | Cpio archive | -| `deb` | Debian package | -| `ear` | Enterprise Application aRchive | -| `exe` | Windows executable file | -| `gz` | Gzip file | -| `ipa` | iOS app package | -| `ipsw` | iOS firmware file | -| `jar` | Java Archive | -| `lrz` | LRZ archive | -| `lz4` | LZ4 archive | -| `lzma` | LZMA archive | -| `obscpio` | cpio archive used on OBS | -| `rar` | WinRAR archive | -| `rpm` | RPM package | -| `sublime-package` | Sublime Text package | -| `tar` | Tarball | -| `tar.bz2` | Tarball with bzip2 compression | -| `tar.gz` | Tarball with gzip compression | -| `tar.lrz` | Tarball with lrzip compression | -| `tar.lz` | Tarball with lzip compression | -| `tar.lz4` | Tarball with lz4 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 | -| `vsix` | VS Code extension zip file | -| `war` | Web Application archive (Java-based) | -| `whl` | Python wheel file | -| `xpi` | Mozilla XPI module file | -| `xz` | LZMA2 archive | -| `zip` | Zip archive | -| `zlib` | zlib archive | -| `zst` | Zstandard file (zstd) | -| `zpaq` | Zpaq file | +| Extension | Description | +| :---------------- | :-------------------------------------- | +| `7z` | 7zip file | +| `apk` | Android app file | +| `aar` | Android library file | +| `bz2` | Bzip2 file | +| `cab` | Microsoft cabinet archive | +| `cpio` | Cpio archive | +| `deb` | Debian package | +| `ear` | Enterprise Application aRchive | +| `exe` | Windows executable file | +| `gz` | Gzip file | +| `ipa` | iOS app package | +| `ipsw` | iOS firmware file | +| `jar` | Java Archive | +| `lrz` | LRZ archive | +| `lz4` | LZ4 archive | +| `lzma` | LZMA archive | +| `obscpio` | cpio archive used on OBS | +| `pk3` | Renamed Zip archive used by Quake games | +| `pk4` | Renamed Zip archive used by Quake games | +| `pk7` | Renamed 7zip file used by Quake games | +| `rar` | WinRAR archive | +| `rpm` | RPM package | +| `sublime-package` | Sublime Text package | +| `tar` | Tarball | +| `tar.bz2` | Tarball with bzip2 compression | +| `tar.gz` | Tarball with gzip compression | +| `tar.lrz` | Tarball with lrzip compression | +| `tar.lz` | Tarball with lzip compression | +| `tar.lz4` | Tarball with lz4 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 | +| `vsix` | VS Code extension zip file | +| `war` | Web Application archive (Java-based) | +| `whl` | Python wheel file | +| `xpi` | Mozilla XPI module file | +| `xz` | LZMA2 archive | +| `Z` | Z archive (LZW) | +| `zip` | Zip archive | +| `zlib` | zlib archive | +| `zst` | Zstandard file (zstd) | +| `zpaq` | Zpaq file | See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for more information regarding archive formats. diff --git a/plugins/extract/_extract b/plugins/extract/_extract index 0b43e86bc..6641443d3 100644 --- a/plugins/extract/_extract +++ b/plugins/extract/_extract @@ -19,6 +19,9 @@ local -a exts=( lz4 lzma obscpio + pk3 + pk4 + pk7 rar rpm sublime-package diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index aa3fd00e6..d8cbc8b94 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -76,11 +76,11 @@ EOF (*.lz4) lz4 -d "$full_path" ;; (*.lzma) unlzma "$full_path" ;; (*.z) uncompress "$full_path" ;; - (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl|*.vsix|*.crx) unzip "$full_path" ;; + (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl|*.vsix|*.crx|*.pk3|*.pk4) unzip "$full_path" ;; (*.rar) unrar x -ad "$full_path" ;; (*.rpm) rpm2cpio "$full_path" | cpio --quiet -id ;; - (*.7z | *.7z.[0-9]*) 7za x "$full_path" ;; + (*.7z | *.7z.[0-9]* | *.pk7) 7za x "$full_path" ;; (*.deb) command mkdir -p "control" "data" ar vx "$full_path" > /dev/null -- cgit v1.2.3-70-g09d2 From 92aed2e93624124182ba977a91efa5bbe1e76d5f Mon Sep 17 00:00:00 2001 From: Tanzim Hossain Romel Date: Wed, 10 Dec 2025 01:14:31 +0600 Subject: feat(extract): add unar as fallback for RAR extraction (#13472) Add unar as a fallback when unrar is not available for extracting RAR files. This addresses the issue where unrar has been removed from Homebrew due to licensing issues. The extraction now: - Prefers unrar if available (backward compatible) - Falls back to unar if unrar is not found - Shows helpful error message if neither tool is installed --- plugins/extract/extract.plugin.zsh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'plugins/extract/extract.plugin.zsh') diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index d8cbc8b94..aed77e7d7 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -77,7 +77,15 @@ EOF (*.lzma) unlzma "$full_path" ;; (*.z) uncompress "$full_path" ;; (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl|*.vsix|*.crx|*.pk3|*.pk4) unzip "$full_path" ;; - (*.rar) unrar x -ad "$full_path" ;; + (*.rar) + if (( $+commands[unrar] )); then + unrar x -ad "$full_path" + elif (( $+commands[unar] )); then + unar -o . "$full_path" + else + echo "extract: cannot extract RAR files: install unrar or unar" >&2 + success=1 + fi ;; (*.rpm) rpm2cpio "$full_path" | cpio --quiet -id ;; (*.7z | *.7z.[0-9]* | *.pk7) 7za x "$full_path" ;; -- cgit v1.2.3-70-g09d2