shopt -s checkwinsize #Pour pas s'écrire dessus
shopt -s histappend
shopt -s autocd #No more cd xx
shopt -s cdspell #drain bramage
shopt -s dirspell
##shopt -s autocd #Like zsh
PROMPT_COMMAND='history -a'

set -o vi


###############
#### ALIAS ####
###############
# {{{

alias k='kubectl'
alias klks='kubectl -n kube-system'
alias dockre='docker'
alias dokcer='docker'
alias ..='cd ..'

alias rm='rm -i'
alias cp='cp -i'

alias mv='mv -i'
alias vm='mv -i'

if [ "$TERM" != "dumb" ]; then
    eval "`dircolors -b`"
    alias ls='ls --color=auto -N'
fi
alias la='ls -lahN'



alias sudp='sudo' #fuck tpyos :p
alias sudpo='sudo'


alias grep='grep --color'

alias bim='vim'
alias vi='vim'
alias VIM='vim'
alias ivm='vim'
alias vmi='vim'

alias makew='make'
alias mkae='make'
alias amke='make'
alias mak='make'
alias amek='make'

alias shm='cd /dev/shm'

alias arc='tig'
alias ack='rg'
# }}}


###############
## FONCTIONS ##
###############
# {{{

function cd #{{{
{
	MY_LAST=`pwd`
	if [ $# -eq 0 ]; then
		builtin cd ~ && cons_set > /dev/null && ls
	else
		builtin cd "$*" && cons_set > /dev/null && ls
	fi
}
#}}}

function back {
	cd $MY_LAST
}



function mkcd #{{{
{
	mkdir -p "$@"
	cd "$@"
}
# }}}



#CONS(OLE) function, a pretty useful functions that keeps track of
# the lasts whereabouts (in terms of folders) of the terminal
CONS_ROOT_DIRECTORY=/dev/shm/cons_$USER
function cons
{
	if [ ! -d $CONS_ROOT_DIRECTORY ]; then
		mkdir $CONS_ROOT_DIRECTORY
	fi;

	if [ $# -eq 0 ]; then
		for f in $CONS_ROOT_DIRECTORY/*; do
			echo -e "`echo $f|rev|cut -d/ -f1|rev` >>\n\t`cat $f`"
			#XXX basename
		done
	elif [ $# -eq 1 ]; then
		if [ -e $CONS_ROOT_DIRECTORY/$1 ]; then
			cd $(cat $CONS_ROOT_DIRECTORY/$1)
		else
			echo $1 does not exist
		fi;
	fi;
}

function cons_set
{
	TTY=$(tty)

	if [ ! -d $CONS_ROOT_DIRECTORY ]; then
		mkdir $CONS_ROOT_DIRECTORY
	fi;

	TTYNO=`echo $TTY | cut -d/ -f 4`
	pwd > $CONS_ROOT_DIRECTORY/$TTYNO
}



###############
### EXPORTS ###
###############
# {{{
export EDITOR="vim"

export HISTCONTROL=erasedups
export HISTSIZE=99999999
HISTTIMEFORMAT="%d/%m/%y %T "
# }}}
# vim: set filetype=sh

# Reset
Color_Off="\[\033[0m\]"       # Text Reset

# Regular Colors
Black="\[\033[0;30m\]"        # Black
Red="\[\033[0;31m\]"          # Red
Green="\[\033[0;32m\]"        # Green
Yellow="\[\033[0;33m\]"       # Yellow
Blue="\[\033[0;34m\]"         # Blue
Purple="\[\033[0;35m\]"       # Purple
Cyan="\[\033[0;36m\]"         # Cyan
White="\[\033[0;37m\]"        # White

# Bold
BBlack="\[\033[1;30m\]"       # Black
BRed="\[\033[1;31m\]"         # Red
BGreen="\[\033[1;32m\]"       # Green
BYellow="\[\033[1;33m\]"      # Yellow
BBlue="\[\033[1;34m\]"        # Blue
BPurple="\[\033[1;35m\]"      # Purple
BCyan="\[\033[1;36m\]"        # Cyan
BWhite="\[\033[1;37m\]"       # White

# Underline
UBlack="\[\033[4;30m\]"       # Black
URed="\[\033[4;31m\]"         # Red
UGreen="\[\033[4;32m\]"       # Green
UYellow="\[\033[4;33m\]"      # Yellow
UBlue="\[\033[4;34m\]"        # Blue
UPurple="\[\033[4;35m\]"      # Purple
UCyan="\[\033[4;36m\]"        # Cyan
UWhite="\[\033[4;37m\]"       # White

# Background
On_Black="\[\033[40m\]"       # Black
On_Red="\[\033[41m\]"         # Red
On_Green="\[\033[42m\]"       # Green
On_Yellow="\[\033[43m\]"      # Yellow
On_Blue="\[\033[44m\]"        # Blue
On_Purple="\[\033[45m\]"      # Purple
On_Cyan="\[\033[46m\]"        # Cyan
On_White="\[\033[47m\]"       # White

# High Intensty
IBlack="\[\033[0;90m\]"       # Black
IRed="\[\033[0;91m\]"         # Red
IGreen="\[\033[0;92m\]"       # Green
IYellow="\[\033[0;93m\]"      # Yellow
IBlue="\[\033[0;94m\]"        # Blue
IPurple="\[\033[0;95m\]"      # Purple
ICyan="\[\033[0;96m\]"        # Cyan
IWhite="\[\033[0;97m\]"       # White

# Bold High Intensty
BIBlack="\[\033[1;90m\]"      # Black
BIRed="\[\033[1;91m\]"        # Red
BIGreen="\[\033[1;92m\]"      # Green
BIYellow="\[\033[1;93m\]"     # Yellow
BIBlue="\[\033[1;94m\]"       # Blue
BIPurple="\[\033[1;95m\]"     # Purple
BICyan="\[\033[1;96m\]"       # Cyan
BIWhite="\[\033[1;97m\]"      # White

# High Intensty backgrounds
On_IBlack="\[\033[0;100m\]"   # Black
On_IRed="\[\033[0;101m\]"     # Red
On_IGreen="\[\033[0;102m\]"   # Green
On_IYellow="\[\033[0;103m\]"  # Yellow
On_IBlue="\[\033[0;104m\]"    # Blue
On_IPurple="\[\033[10;95m\]"  # Purple
On_ICyan="\[\033[0;106m\]"    # Cyan
On_IWhite="\[\033[0;107m\]"   # White

# Various variables you might want for your PS1 prompt instead
Time12h="\T"
Time12a="\@"
PathShort="\w"
PathFull="\W"
NewLine="\n"
Jobs="\j"

__git_ps1 ()
{
	local b="$(git symbolic-ref HEAD 2>/dev/null)";
	if [ -n "$b" ]; then
		printf " (%s)" "${b##refs/heads/}";
	fi
}

IntroCol=$BIPurple;

PROMPT_COMMAND=__prompt_command
__prompt_command() {
	local EXIT="$?"
	PS1="$On_Blue(\h)$Color_Off"


	if [ $EXIT -eq 0 ]; then
		PS1+="✔️"
	else
		PS1+="❌"
	fi

	if [ -n "$VIRTUAL_ENV" ]; then
		PS1+="(🧙)"
	fi

	PS1+=" "
	PS1+="$IntroCol$Time12h$Color_Off"

	git branch &>/dev/null
	if [ $? -eq 0 ]; then #In repo
		git status | grep 'nothing to commit' >/dev/null 2>&1
		if [ $? -eq 0 ]; then
			PS1+="$Green"$(__git_ps1 " (%s)")
		else
			PS1+="$IRed"$(__git_ps1 " {%s}")
		fi
		PS1+="$BYellow$PathShort$Color_Off"
	else
		PS1+=" $Yellow$PathShort$Color_Off\$ "
	fi

	if [[ "$KUBECONFIG" =~ (.*pikprod.*|.*rapace.*) ]]; then
		PS1+="${URed}PIKPROD !!${Color_Off}"
	fi

	PS1+="\n"

}