6dc937ff685fcbc43056dbd7fb05ba01c56dfd1a

Author
Marc Cornellà <hello@mcornella.com>
Committer
Marc Cornellà <hello@mcornella.com>
Date

Message

feat(extract): add suport for .cab files via `cabextract`

Diff

 1diff --git a/plugins/extract/README.md b/plugins/extract/README.md
 2index f2e6ad1d1cce34ce427bad276e68c841d76c67f8..1dd8e19c0d7a78ac77416cf5c5d4d2b93f6f24a2 100644
 3--- a/plugins/extract/README.md
 4+++ b/plugins/extract/README.md
 5@@ -21,6 +21,7 @@ plugins=(... extract)
 6 | `apk`             | Android app file                     |
 7 | `aar`             | Android library file                 |
 8 | `bz2`             | Bzip2 file                           |
 9+| `cab`             | Microsoft cabinet archive            |
10 | `deb`             | Debian package                       |
11 | `ear`             | Enterprise Application aRchive       |
12 | `gz`              | Gzip file                            |
13diff --git a/plugins/extract/_extract b/plugins/extract/_extract
14index 267c4d4e14cd2d0a95b186b5e3832ad9ef76a219..31a7facbec2d31a4d2d80c7bf5cc71dcb6eb9b3b 100644
15--- a/plugins/extract/_extract
16+++ b/plugins/extract/_extract
17@@ -3,5 +3,5 @@
18 
19 _arguments \
20   '(-r --remove)'{-r,--remove}'[Remove archive.]' \
21-  "*::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)(-.)'" \
22+  "*::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)(-.)'" \
23     && return 0
24diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
25index e390e2dccaff9bc910b0e29f1a2f04dc106967ef..601272cac18495135af20a86f689d0354e560fdb 100644
26--- a/plugins/extract/extract.plugin.zsh
27+++ b/plugins/extract/extract.plugin.zsh
28@@ -55,7 +55,7 @@ extract() {
29 			(*.lz4) lz4 -d "$1" ;;
30 			(*.lzma) unlzma "$1" ;;
31 			(*.z) uncompress "$1" ;;
32-			(*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d $extract_dir ;;
33+			(*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d "$extract_dir" ;;
34 			(*.rar) unrar x -ad "$1" ;;
35 			(*.rpm) mkdir "$extract_dir" && cd "$extract_dir" && rpm2cpio "../$1" | cpio --quiet -id && cd .. ;;
36 			(*.7z) 7za x "$1" ;;
37@@ -69,6 +69,7 @@ extract() {
38 				cd ..
39 			;;
40 			(*.zst) unzstd "$1" ;;
41+			(*.cab) cabextract -d "$extract_dir" "$1" ;;
42 			(*)
43 				echo "extract: '$1' cannot be extracted" >&2
44 				success=1