diff --git a/rc/git-prompt.sh b/rc/git-prompt.sh index f021731..4636afe 100644 --- a/rc/git-prompt.sh +++ b/rc/git-prompt.sh @@ -1,16 +1,39 @@ -if [ -d "$HOME/.bash-git-prompt" ]; then - GIT_PROMPT_PATH="$HOME/.bash-git-prompt" -else - GIT_PROMPT_PATH="$LWS/opt/bash-git-prompt" +# shellcheck shell=bash + +# Find gitprompt.sh across supported installation methods. + +GIT_PROMPT_CANDIDATES=( + "$HOME/.bash-git-prompt/gitprompt.sh" + "$LWS/opt/bash-git-prompt/gitprompt.sh" +) + +# Detect active Homebrew prefix and add its bash-git-prompt path. +# This covers macOS Apple Silicon/Intel, Linuxbrew and any custom prefix. +if can_run brew; then + git_prompt_brew_prefix=$(brew --prefix bash-git-prompt 2>/dev/null) || git_prompt_brew_prefix="" + if [[ -n "$git_prompt_brew_prefix" ]]; then + GIT_PROMPT_CANDIDATES+=("$git_prompt_brew_prefix/share/gitprompt.sh") + fi fi -GIT_PROMPT_INIT="$GIT_PROMPT_PATH/gitprompt.sh" +GIT_PROMPT_INIT="" +for candidate in "${GIT_PROMPT_CANDIDATES[@]}"; do + if [[ -f "$candidate" ]]; then + GIT_PROMPT_INIT="$candidate" + break + fi +done + +if [[ -n "$GIT_PROMPT_INIT" ]]; then + # __GIT_PROMPT_DIR is required so gitprompt.sh can find themes and gitstatus.sh + __GIT_PROMPT_DIR="$(dirname "$GIT_PROMPT_INIT")" + export __GIT_PROMPT_DIR -if [ -f "$GIT_PROMPT_INIT" ]; then - export GIT_PROMPT_PATH GIT_PROMPT_ONLY_IN_REPO=1 GIT_PROMPT_USER_HOST="${LWS_PS1_USER_HOST}" GIT_PROMPT_START_USER="_LAST_COMMAND_INDICATOR_ ${GIT_PROMPT_USER_HOST}" GIT_PROMPT_START_ROOT="${GIT_PROMPT_START_USER}" source "$GIT_PROMPT_INIT" fi + +unset GIT_PROMPT_INIT git_prompt_brew_prefix