Browse Source

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

Marc Cornellà 3 years ago
parent
commit
6dc937ff68
3 changed files with 4 additions and 2 deletions
  1. 1 0
      plugins/extract/README.md
  2. 1 1
      plugins/extract/_extract
  3. 2 1
      plugins/extract/extract.plugin.zsh

+ 1 - 0
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                            |

+ 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|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

+ 2 - 1
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