# Language
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

# Append to history file instead of overwrite
shopt -s histappend
export HISTSIZE=10000
export HISTFILESIZE=2000
PROMPT_COMMAND='history -a'

# Ignore case for autocompletion
bind "set completion-ignore-case on"

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

# Do not put duplicates into history
export HISTCONTROL=erasedups:ignoredups:ignorespace

# Editor options
export EDITOR='vi'
export VISUAL='vi'
export PAGER=less
set -o vi

# Setup path
export PATH="/usr/local/bin:$PATH"
export PATH=~/bin:$PATH

# Terminal settings
export TERM=xterm-256color

# Own completion
source ${HOME}/.bash_completion

# SSH Agent
if ! ssh-add -l &> /dev/null ;then
  pgrep ssh-add &> /dev/null && killall -9 ssh-add
  pgrep ssh-agent &> /dev/null && killall -9 ssh-agent
  eval `keychain -q --eval --agents ssh id_rsa`
fi

# Tmux Wrapper for ssh so it displays hostname in title
settitle() {
  printf "\033k%s\033\\" $1
}
ssh() {
  settitle "$*"
  command ssh "$@"
  settitle "bash"
}

# Aliases
alias ls='ls --color'
alias grep='grep --color'
alias cdc='cd $(fdfind --type directory --full-path --exact-depth 1 . /code | fzf)'
alias luamake=${HOME}/tools/lua-language-server/3rd/luamake/luamake

# Workaround WSL 2 issues with not releasing memory
# See: https://github.com/microsoft/WSL/issues/4166#issuecomment-628493643
alias drop_cache="sudo sh -c \"echo 3 >'/proc/sys/vm/drop_caches' && printf '\n%s\n' 'Ram-cache and Swap Cleared'\""

# Add brew to path
[ -e /home/linuxbrew ] && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

# Add pulumi
export PATH=$PATH:${HOME}/.pulumi/bin

# Add ansible roles
export ANSIBLE_ROLES_PATH=/code/ansible-igt-puppet/roles:/code/ansible-igt-services/roles:/code/ansible-dew-common/roles

# Git nice PS
parse_git_branch() {
  if test -d .git ;then
    GBRANCH=$(git branch --show-current)
    GDESC=$(git describe --tags --always)
    echo " (${GBRANCH})(${GDESC})"
  fi
}
export PS1="[\e[34m\]\u@\h \[\e[32m\]\w\[\e[91m\]\$(parse_git_branch)\[\e[00m\]]$ "

# Load pyenv
export PYENV_ROOT="$HOME/.pyenv"
if [ -e $PYENV_ROOT ] ;then
  export PATH="$PYENV_ROOT/bin:$PATH"
  eval "$(pyenv init -)"
  source $PYENV_ROOT/completions/pyenv.bash
fi

## Load nvm and nvm bash_completion
export NVM_DIR="$HOME/.nvm"
if [ -e $NVM_DIR ] ;then
  source "$NVM_DIR/nvm.sh"
  source "$NVM_DIR/bash_completion"
  export PATH=$HOME/node_modules/.bin:$PATH
fi

# Load RVM into a shell session *as a function*
export RVM_ROOT="$HOME/.rvm"
if [ -e $RVM_ROOT ] ;then
  export PATH="$PATH:$RVM_ROOT/bin"
  source "$RVM_ROOT/scripts/rvm"
fi

# Load sdkman
export SDKMAN_DIR="$HOME/.sdkman"
if [ -e $SDKMAN_DIR ] ; then
  source "$HOME/.sdkman/bin/sdkman-init.sh"
  export GRADLE_OPTS=-Dorg.gradle.daemon=false
  export JAVA_OPTS='-Xms256m -Xmx2048m'
  export MAVEN_ARGS='-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true -Dmaven.resolver.transport=wagon'
fi

# Add golang to path
export PATH=$PATH:/home/pbugala/tools/go/main/go/bin

# Tgenv and tfenv setup
export PATH=$HOME/tools/tfenv/bin:$PATH
export PATH=$HOME/tools/tgenv/bin:$PATH

# Kubernetes completion
type kubectl &> /dev/null && source <(kubectl completion bash)

# WSL GUI fix
test -h /tmp/.X11-unix || (sudo rm -rf /tmp/.X11-unix && ln -s /mnt/wslg/.X11-unix /tmp/.X11-unix)
test -h /run/user/1000/wayland-0 || ln -s /mnt/wslg/runtime-dir/wayland-0 /run/user/1000/wayland-0