diff options
| author | Tanzim Hossain Romel <romel.rcs@gmail.com> | 2025-12-10 01:14:31 +0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-09 20:14:31 +0100 |
| commit | 92aed2e93624124182ba977a91efa5bbe1e76d5f (patch) | |
| tree | c9151b2efc5abf8220b2ce480676ac1f5a9ad00d /plugins/extract | |
| parent | 72acd2ca90d01e09f7960d6b62b8eb30e476de6c (diff) | |
| download | zsh-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.zsh | 10 |
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" ;; |
