1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2025-12-11 15:23:41 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Divyaranjan Sahoo
49d63a7a2d
Merge f653c54441 into 92aed2e936 2025-12-10 14:09:14 +04:00
Tanzim Hossain Romel
92aed2e936
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
2025-12-09 20:14:31 +01:00
Divyaranjan Sahoo
f653c54441 brew: always eval brew shellenv to keep env vars current even if brew is on PATH; update README 2025-09-17 12:54:00 +05:30
3 changed files with 24 additions and 10 deletions

View File

@ -10,12 +10,17 @@ plugins=(... brew)
## Shellenv
If `brew` is not found in the PATH, this plugin will attempt to find it in common locations, and execute
`brew shellenv` to set the environment appropriately. This plugin will also export
`HOMEBREW_PREFIX="$(brew --prefix)"` if not previously defined for convenience.
This plugin evaluates Homebrew's shell environment on load to ensure `PATH`, `MANPATH`, `INFOPATH`, and other
Homebrew variables are up to date:
In case you installed `brew` in a non-common location, you can still set `BREW_LOCATION` variable pointing to
the `brew` binary before sourcing `oh-my-zsh.sh` and it'll set up the environment.
```zsh
eval "$(brew shellenv)"
```
If `brew` is not already on `PATH`, the plugin will attempt to find it in common locations and run
`brew shellenv` from there. You can also set a `BREW_LOCATION` variable pointing to the `brew` binary before
loading Oh My Zsh to override detection. This plugin will also export `HOMEBREW_PREFIX="$(brew --prefix)"`
if not previously defined for convenience.
## Aliases

View File

@ -1,4 +1,7 @@
if (( ! $+commands[brew] )); then
if (( $+commands[brew] )); then
# Brew is already on PATH; still evaluate shellenv to ensure env vars are current
eval "$(brew shellenv)"
else
if [[ -n "$BREW_LOCATION" ]]; then
if [[ ! -x "$BREW_LOCATION" ]]; then
echo "[oh-my-zsh] $BREW_LOCATION is not executable"
@ -16,9 +19,7 @@ if (( ! $+commands[brew] )); then
return
fi
# Only add Homebrew installation to PATH, MANPATH, and INFOPATH if brew is
# not already on the path, to prevent duplicate entries. This aligns with
# the behavior of the brew installer.sh post-install steps.
# Evaluate Homebrew shell environment from discovered brew binary
eval "$("$BREW_LOCATION" shellenv)"
unset BREW_LOCATION
fi

View File

@ -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" ;;