summaryrefslogtreecommitdiff
path: root/plugins/extract
diff options
context:
space:
mode:
authorTanzim Hossain Romel <romel.rcs@gmail.com>2025-12-10 01:14:31 +0600
committerGitHub <noreply@github.com>2025-12-09 20:14:31 +0100
commit92aed2e93624124182ba977a91efa5bbe1e76d5f (patch)
treec9151b2efc5abf8220b2ce480676ac1f5a9ad00d /plugins/extract
parent72acd2ca90d01e09f7960d6b62b8eb30e476de6c (diff)
downloadzsh-92aed2e93624124182ba977a91efa5bbe1e76d5f.tar.gz
zsh-92aed2e93624124182ba977a91efa5bbe1e76d5f.tar.bz2
zsh-92aed2e93624124182ba977a91efa5bbe1e76d5f.zip
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
Diffstat (limited to 'plugins/extract')
-rw-r--r--plugins/extract/extract.plugin.zsh10
1 files changed, 9 insertions, 1 deletions
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" ;;