################################################################################
# ------------------------
# PROMPT CONFIGURATION
# ------------------------
# Description:
#   Shows a nicer prompt
#     ▶  💻 mypc ▶  documents ▶ ⎇  master  ▶ 𝍠 ✖️    ✔
#        --------   ---------   ----------  ---  -----
#           |           |           |        |     |
#        hostname     folder    git branch  jobs last command result
#   (See )
#
# Usage:
#   1. Get a copy of __git_ps1
#       wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -O ~/.git-prompt.sh
#   2. Get this file in your local directory:
#       wget http://whatever -O ~/.bash_prompt
#   3. Edit your ~/.bashrc, add this line:
#       . ~/.bash_prompt
#
# Requires:
#   * Some unicode font
#   * 256 colors support in your terminal
#   * __git_ps1
#
# Useful info:
#   * http://misc.flogisoft.com/bash/tip_colors_and_formatting
#   * https://github.com/morhetz/gruvbox
#   * https://gist.github.com/MicahElliott/719710
#
################################################################################

#######################
# Git config
#######################
# Need to get git-prompt:
# wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -O ~/.git-prompt.sh
if [ -f ~/.git-prompt.sh ]; then
  . ~/.git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=""
GIT_PS1_SHOWCOLORHINTS=""
GIT_PS1_SHOWUNTRACKEDFILES=""
GIT_PS1_SHOWUPSTREAM=""
GIT_PS1_SHOWSTASHSTATE=""

#######################
# Colors
#######################

# Color reset
PLAIN='\e[0m'

# Text colors
RED='\[\e[31m\]'
GREEN='\[\e[32m\]'
BLUE='\e[1;38;5;25m'
LIGHTGRAY='\e[1;38;5;252m'
GRAY='\e[1;38;5;242m'
WHITE='\e[1;38;5;251m'
ORANGE='\[\e[1;38;5;130m\]'
BOLDBLACK='\e[1;38;5;232m'

# Background colors
BGBLACK='\e[40m'
BGBLUE='\e[48;5;25m'
BGLIGHTGRAY='\e[48;5;252m'
BGGRAY='\e[48;5;242m'

#######################
# Icons (I_ICON_NAME)
#######################
I_ARROW="▶"
I_HOST=" 💻 "
I_GIT=" ⎇ "
I_OK="✔"
I_KO="✖️"

#######################
# Styles (S_STYLE_NAME)
#######################
S_HOST_BG=$BGLIGHTGRAY
S_HOST_TXT=$BOLDBLACK
S_HOST_ARROW=$GRAY
S_DIR_BG=$BGGRAY
S_DIR_TXT=$LIGHTGRAY
S_GIT_BG=$BGBLUE
S_GIT_TXT=$WHITE
S_GIT_ARROW=$GRAY
S_TASK_BG=$BGBLACK
S_TASK_TXT=$ORANGE
S_TASK_ARROW=$BLUE
S_RESULT_OK=$GREEN
S_RESULT_KO=$RED

#######################
# Prompt parts (P_*)
#######################
P_HOST=`printf "\[$S_HOST_BG\]\[$S_HOST_ARROW\]$I_ARROW\[$S_HOST_TXT\] $I_HOST\h  "`
P_DIR=`printf "\[$S_DIR_BG\]\[$S_DIR_TXT\]$I_ARROW  \W "`
P_GIT='
  P_GIT_BRANCH=\`type __git_ps1 >/dev/null 2>&1 && __git_ps1 %s\`
  if [ -z $P_GIT_BRANCH ]; then
    echo -en " \[${S_TASK_BG}\]\[$S_GIT_ARROW\]$I_ARROW\[$PLAIN\] ";
  else
    echo -en " \[${S_GIT_BG}\]\[$S_GIT_ARROW\]$I_ARROW\[$S_GIT_TXT\]$I_GIT $P_GIT_BRANCH  \[$S_TASK_BG\]\[$S_TASK_ARROW\]$I_ARROW\[$PLAIN\] ";
  fi
'
# Number of jobs running
P_JOBS=`printf "
  echo -n '${TASK_TXT}'
  case '\j' in
    0) echo -n '';;
    1) echo -n '𝍠 ' ;;
    2) echo -n '𝍡 ' ;;
    3) echo -n '𝍢 ' ;;
    4) echo -n '𝍣 ' ;;
    *) echo -n '𝍤 ' ;;
  esac
  echo -n '\[$PLAIN\]'
"`
# Result of the last command
P_CMD_RESULT="
  if [ \$LASTCMD -eq 0 ]; then
    echo -n ${RESULT_OK}${I_OK}\[$PLAIN\];
  else
    echo -n ${RESULT_KO}${I_KO}\[$PLAIN\];
  fi
  echo -n ' '
"

PROMPT_COMMAND='LASTCMD=$? PS1="${debian_chroot:+($debian_chroot)}${P_HOST}${P_DIR}\`${P_GIT}\`\`${P_JOBS}\`\`${P_CMD_RESULT}\` "'
