#!/usr/bin/env zsh

# hide EOL sign ('%')
export PROMPT_EOL_MARK=""

# Color definition
GRAY="%F{237}"
RED="%F{196}"
ORANGE="%F{214}"
BLUE="%F{032}"
LBLUE="%F{075}"
PURPLE="%F{105}"
RESET="%f"

git_prompt() {
    ref=$(command git symbolic-ref HEAD 2> /dev/null) || ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0
    echo -n " $ORANGE${ref#refs/heads/}"

    if [ ! -z "$(git status --short)" ]; then
        echo "$RED+"
    fi
}


setopt promptsubst  # enable command substitution in prompt

# Primary Prompt
[ "$EUID" -eq 0 ] && PS1="$RED%n@%m$RESET" || PS1="$GRAY%n@%m$RESET" # user@machine
PS1+=" $BLUE%~" # Working directory
PS1+="\$(git_prompt)"
PS1+=" $PURPLE%(!.#.»)$RESET " # Final symbol (# or »)

# Next line prompt
PS2="$RED\ $RESET"

# Right side prompt (on error)
RPS1="%(?..$RED%? ↵$RESET)"