# ~/.bashrc: executed by bash(1) for non-login shells.

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

# Load fastfetch
fastfetch

# Check if starship is installed
if ! command -v starship &> /dev/null
then
    echo "Starship not found, installing..."
    # Install starship (using the recommended installation script)
    curl -sS https://starship.rs/install.sh | sh
    # You can also specify an installation directory, e.g., if you don't have sudo access:
    # curl -sS https://starship.rs/install.sh | sh -s -- -b ~/.local/bin
    echo "Starship installed."
fi

# Load starship prompt if starship is installed
if [ -x /usr/bin/starship ]; then
	__main() {
		local major="${BASH_VERSINFO[0]}"
		local minor="${BASH_VERSINFO[1]}"

		if ((major > 4)) || { ((major == 4)) && ((minor >= 1)); }; then
			source <("/usr/bin/starship" init bash --print-full-init)
		else
			source /dev/stdin <<<"$("/usr/bin/starship" init bash --print-full-init)"
		fi
	}
	__main
	unset -f __main
fi

# don't put duplicate lines or lines starting with space in the history.
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=20000
HISTFILESIZE=10000

# check the window size after each command and, if necessary,
shopt -s checkwinsize

# Combine multiline commands into one in history
shopt -s cmdhist

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"


# get current branch in git repo
function parse_git_branch() {
	BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
	if [ ! "${BRANCH}" == "" ]
	then
		STAT=`parse_git_dirty`
		echo "[${BRANCH}${STAT}]"
	else
		echo ""
	fi
}

# Load Aliases and Finctions, instead of adding them here directly.
if [ -e $HOME/.bash_aliases ]; then
   source $HOME/.bash_aliases
fi

if [ -e $HOME/.bash_functions ]; then
   source $HOME/.bash_functions
fi


# enable programmable completion features (you don't need to enable this, if it's already enabled in /etc/bash.bashrc and /etc/profile,  sources /etc/bash.bashrc).
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

# Make Nano the default Editor
if [[ -n $SSH_CONNECTION ]]; then
  export EDITOR='nano'
else
  export EDITOR='nano'
fi

### FZF ###
# Enables the following keybindings:
# CTRL-t = fzf select
# CTRL-r = fzf history
# ALT-c  = fzf cd
eval "$(fzf --bash)"

# Added by LM Studio CLI (lms)
export PATH="$PATH:/home/miker/.lmstudio/bin"
# End of LM Studio CLI section

# Automatically preform ls when changing directory,
cd() {
    builtin cd "$@" && ls -lA
}


# Initialize starship
eval "$(starship init bash)"