# ~/.bashrc: executed by bash(1) for non-login shells.
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# ------------------------------------------------------------------------------
# ✅ Smart Command History Configuration
# ------------------------------------------------------------------------------
HISTSIZE=100000         # Increase history size
HISTFILESIZE=200000     # Store more commands in history
HISTCONTROL=ignoredups:ignorespace  # Ignore duplicate and space-prefixed commands
shopt -s histappend    # Append to history instead of overwriting
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

# Enable arrow key history search (search by typing & pressing Up/Down)
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

# ------------------------------------------------------------------------------
# ✅ Enable Fuzzy Search for Command History (Ctrl+R)
# ------------------------------------------------------------------------------
if command -v fzf &>/dev/null; then
    __fzf_history() {
        BUFFER=$(history | fzf --height 40% --reverse | sed 's/^[ ]*[0-9]*[ ]*//')
        echo $BUFFER
    }
    bind -x '"\C-r": __fzf_history'
fi

# ------------------------------------------------------------------------------
# ✅ Enable Colorized Command Output
# ------------------------------------------------------------------------------
alias grep="grep --color=auto"
alias fgrep="fgrep --color=auto"
alias egrep="egrep --color=auto"
alias ping="ping -c 5"  # Limit ping output

# ------------------------------------------------------------------------------
# ✅ Improved `ls` with `eza` (modern replacement for `ls`)
# ------------------------------------------------------------------------------
if command -v eza &>/dev/null; then
    alias ls="eza --icons --group-directories-first"
    alias ll="eza -lh --icons --git"
    alias la="eza -lha --icons --git"
    alias lt="eza -T --icons"  # Tree view
fi

# ------------------------------------------------------------------------------
# ✅ Useful Aliases for Faster Navigation and Commands
# ------------------------------------------------------------------------------
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias ~="cd ~"

alias cpuinfo="lscpu"
alias meminfo="free -h"
alias diskinfo="df -h"

# Git Aliases
alias gs="git status"
alias ga="git add ."
alias gc="git commit -m"
alias gp="git push"
alias gl="git log --oneline --graph --decorate --all"

# Reload bashrc quickly
alias reload="source ~/.bashrc && echo 'Bash config reloaded! ✅'"

# ------------------------------------------------------------------------------
# ✅ Smart Git Prompt (Loads Only Inside Git Repos)
# ------------------------------------------------------------------------------
if command -v git &>/dev/null && [ -f "$HOME/.bash-git-prompt/gitprompt.sh" ]; then
    GIT_PROMPT_THEME=x-files-time
    alias gpchange="bash $HOME/.bash-git-prompt/gpchange.sh"
    alias gpthemes="bash $HOME/.bash-git-prompt/gpthemes.sh"

    # Load git prompt only inside git repositories
    function __git_ps1_check() {
        git rev-parse --is-inside-work-tree &>/dev/null && source "$HOME/.bash-git-prompt/gitprompt.sh"
    }
    PROMPT_COMMAND="__git_ps1_check;$PROMPT_COMMAND"
fi

# ------------------------------------------------------------------------------
# ✅ Fancy Welcome Message
# ------------------------------------------------------------------------------
echo -e "\nWelcome back, $USER! 🚀"
echo "Today is $(date '+%A, %d %B %Y')."
echo "Uptime: $(uptime -p)"
echo "You are in: $(pwd)"

