summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Cornellà <hello@mcornella.com>2021-08-04 15:49:11 +0200
committerMarc Cornellà <hello@mcornella.com>2021-08-14 22:32:04 +0200
commit6dc937ff685fcbc43056dbd7fb05ba01c56dfd1a (patch)
treedd352dd3e8460a81eb9a6f7bf70c9001689cb55f
parentaf6c7f3d6782cf0a34e4e68f661df526d35795be (diff)
downloadzsh-6dc937ff685fcbc43056dbd7fb05ba01c56dfd1a.tar.gz
zsh-6dc937ff685fcbc43056dbd7fb05ba01c56dfd1a.tar.bz2
zsh-6dc937ff685fcbc43056dbd7fb05ba01c56dfd1a.zip
feat(extract): add suport for .cab files via `cabextract`
-rw-r--r--plugins/extract/README.md1
-rw-r--r--plugins/extract/_extract2
-rw-r--r--plugins/extract/extract.plugin.zsh3
3 files changed, 4 insertions, 2 deletions
diff --git a/plugins/extract/README.md b/plugins/extract/README.md
index f2e6ad1d1..1dd8e19c0 100644
--- a/plugins/extract/README.md
+++ b/plugins/extract/README.md
@@ -21,6 +21,7 @@ plugins=(... extract)
| `apk` | Android app file |
| `aar` | Android library file |
| `bz2` | Bzip2 file |
+| `cab` | Microsoft cabinet archive |
| `deb` | Debian package |
| `ear` | Enterprise Application aRchive |
| `gz` | Gzip file |
diff --git a/plugins/extract/_extract b/plugins/extract/_extract
index 267c4d4e1..31a7facbe 100644
--- a/plugins/extract/_extract
+++ b/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|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|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)(-.)'" \
+ "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|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)(-.)'" \
&& return 0
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index e390e2dcc..601272cac 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -55,7 +55,7 @@ extract() {
(*.lz4) lz4 -d "$1" ;;
(*.lzma) unlzma "$1" ;;
(*.z) uncompress "$1" ;;
- (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d $extract_dir ;;
+ (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d "$extract_dir" ;;
(*.rar) unrar x -ad "$1" ;;
(*.rpm) mkdir "$extract_dir" && cd "$extract_dir" && rpm2cpio "../$1" | cpio --quiet -id && cd .. ;;
(*.7z) 7za x "$1" ;;
@@ -69,6 +69,7 @@ extract() {
cd ..
;;
(*.zst) unzstd "$1" ;;
+ (*.cab) cabextract -d "$extract_dir" "$1" ;;
(*)
echo "extract: '$1' cannot be extracted" >&2
success=1