# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# =============================================================================
# Personalized Logging for Shell Setup
# =============================================================================
logging_enabled=false
log_dir="$HOME/log/$USER"
log_file="$log_dir/shell.log"

if [ -d "$log_dir" ]; then
    export SHELL_LOG_FILE="$log_file"
    logging_enabled=true
    touch "$SHELL_LOG_FILE"
fi

# =============================================================================
# Ripped from default .bashrc
# =============================================================================
HISTCONTROL=ignoreboth
shopt -s histappend
HISTSIZE=1000
HISTFILESIZE=2000
shopt -s checkwinsize

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

# =============================================================================
# Command Prompt Customization
# =============================================================================
ps1_startup_file="$HOME/.startup/ps1"
if [ -f "$ps1_startup_file" ]; then
    source $ps1_startup_file
else
    if $logging_enabled; then
        echo "[warn] Custom PS1 for bash missing at " \
            "'$ps1_startup_file': " \
            "see git@git.sr.ht:~eidolon/scripts" >> "$log_file"
    fi
fi

# =============================================================================
# Common Environment Configuration
# =============================================================================
export EDITOR=vim

# =============================================================================
# PATH
# =============================================================================
if [ -d "$HOME/bin" ]; then
    export PATH="$HOME/bin:$PATH"
fi

if [ -d "$HOME/.local/bin" ]; then
    export PATH="$HOME/.local/bin:$PATH"
fi

if [ -f "$HOME/.cargo/env" ]; then
    source "$HOME/.cargo/env"
fi

if [ -f ~/.fzf.bash ]; then
    source ~/.fzf.bash
fi

export RACKET_HOME="$HOME/opt/racket"
if [ -d "$RACKET_HOME" ]; then
    export PATH="$RACKET_HOME/bin:$PATH"
fi

export BUILDKIT_HOME="$HOME/opt/buildkit"
if [ -d "$BUILDKIT_HOME" ]; then
    export PATH="$HOME/opt/buildkit/bin:$PATH"
fi

export JAVA_HOME="$HOME/opt/jdk"
if [ -d "$JAVA_HOME/bin" ]; then
    export PATH="$JAVA_HOME/bin:$PATH"
fi

export COURSIER_HOME="$HOME/.local/share/coursier"
if [ -d "$COURSIER_HOME/bin" ]; then
    export PATH="$COURSIER_HOME/bin:$PATH"
fi

export N_PREFIX=/home/pfm/.n
if [ -d "$N_PREFIX/bin" ]; then
    export PATH="$N_PREFIX/bin:$PATH"
fi

export DOTNET_ROOT="$HOME/.dotnet"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
if [ -d "$DOTNET_ROOT" ]; then
    export PATH="$DOTNET_ROOT:$DOTNET_ROOT/tools:$PATH"
fi

# =============================================================================
# SSH Agent Management
# =============================================================================
ssh_agent_startup_file="$HOME/.startup/start-ssh-agent"
if [ -f "$ssh_agent_startup_file" ]; then
    source "$ssh_agent_startup_file"
else
    if $logging_enabled; then
        echo "[warn] SSH Agent startup code missing at " \
            "'$ssh_agent_startup_file': " \
            "see git@git.sr.ht:~eidolon/scripts" >> "$log_file"
    fi
fi

# =============================================================================
# Aliases
# =============================================================================
if command -v exa > /dev/null 2>&1; then
    alias ls='exa'
    alias ll='exa -l'
else
    if $logging_enabled; then
        echo "[warn] exa is not setup! Using the system ls" >> "$log_file"
    fi
fi

if command -v nvim > /dev/null 2>&1; then
    alias vim='nvim'
else
    if $logging_enabled; then
        echo "[warn] Neovim is not setup! Using the system vim" >> "$log_file"
    fi
fi

# =============================================================================
# Scala/SBT Setup
# =============================================================================
if command -v sbt > /dev/null 2>&1; then
    export SBT_OPTS="-XX:+UseG1GC -Xmx2048m"
fi