You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
laughing-hipster/src/.shell_extensions/shell_colors.sh

160 lines
4.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/bin/bash
# Prompt Customizations
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
RED="\033[0;31m"
YELLOW="\033[0;33m"
GREEN="\033[0;32m"
GRAY="\033[0;30m"
EMPTY="\033[0;37m"
LIGHTBLUE="\033[38;5;111m"
LIGHTORANGE="\033[38;5;172m"
LIGHTGREEN="\033[38;5;70m"
LIGHTRED="\033[38;5;161m"
LIGHTYELLOW="\033[38;5;229m"
CONTINUE="\033[38;5;242m"
DARKGRAY="\033[38;5;247m"
# Glyph table for airline fonts
# U+E0A0  Version control branch
# U+E0A1  LN (line) symbol
# U+E0A2  Closed padlock
# U+E0B0  Rightwards black arrowhead
# U+E0B1  Rightwards arrowhead
# U+E0B2  Leftwards black arrowhead
# U+E0B3  Leftwards arrowhead
# U+1D77A 𝝺 Lambda
LAR=""
RAR=""
LARS=""
RARS=""
LN=""
VC=""
LK=""
LA="𝝺"
#╭─ ~/src/v8/v8 master
#╰─$
START_LINE_1="╭─"
START_LINE_2="╰─"
colorize() {
# $1 is foreground
# $2 is background
# $3 is content
if [ $OSTYPE = 'msys' ]; then
echo -e "\033[48;3;$2;38;3;$1m$3\\033[0m"
else
echo -e "\033[48;5;$2;38;5;$1m$3\\033[0m"
fi
}
parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
parse_git_tag () {
git describe --tags 2> /dev/null
}
parse_git_branch_or_tag() {
local OUT="$VC$(parse_git_branch)"
if [ "$OUT" == " ((no branch))" ]; then
echo "$VC ($(parse_git_tag)) "
elif [ "$OUT" == "$VC" ]; then
echo "x $VC"
else
echo "$OUT"
fi
}
build_prompt_win(){
local TIME="$(colorize 39 46 ' [$(date +%H:%M)] ')$(colorize 36 42 $RARS)";
local USER="$(colorize 39 42 ' \u@\h ')$(colorize 32 41 $RARS)"
local GIT="$(colorize 39 41 ' $(parse_git_branch_or_tag) ')$(colorize 31 49 $RARS)"
local DIR="$(colorize 33 49 ' \w ')"
local LEFT="$TIME$USER$GIT$DIR\033[0;0m "
echo "$LEFT"
}
build_prompt_unix(){
local TIME="$(colorize 15 33 ' [$(date +%H:%M)] ')$(colorize 33 34 $RARS)";
local USER="$(colorize 15 34 ' \u@\h ')$(colorize 34 124 $RARS)"
local GIT="$(colorize 252 124 ' $(parse_git_branch_or_tag) ')$(colorize 124 240 '$RARS')"
local DIR="$(colorize 11 240 ' \w ')$(colorize 240 0 $RARS)"
local DEPLOYMENT_NOTIF=""
if [ ! -z "${NODE_ENV}" ]; then
DEPLOYMENT_NOTIF=" (\$NODE_ENV='${NODE_ENV}')"
fi
local LEFT="$TIME$USER$GIT$DIR\033[0;0m$DEPLOYMENT_NOTIF"
echo "$LEFT"
}
build_prompt_unix_2(){
echo -e "${START_LINE_1} \u@\h \w <$(parse_git_branch)>\n${START_LINE_2}${LA} "
}
print_prompt(){
local TIME="$(colorize 15 33)[$(date +%H:%M)] $(colorize 33 34)$RARS";
local USER="$(colorize 15 34)\u@\h $(colorize 34 124)$RARS"
local GIT="$(colorize 252 124) $(parse_git_branch_or_tag) $(colorize 124 240)$RARS"
local DIR=" $(colorize 11 240)\w $(colorize 240 0)$RARS"
local LEFT="$TIME$USER$GIT$DIR "
local RIGHT="$DIR"
local COMPENSATE=11
PS1=$(printf "%*s\r%s\n$EMPTY\$$GRAY" "$(($(tput cols) - ${compensate}))" "$RIGHT" "$LEFT")
}
# looks like the following:
# [hh:mm] username@host (git branch || svn revision) ~/working/directory
# $
if [ $OSTYPE = 'msys' ]; then
PROMPT_COMMAND='PS1="$(build_prompt_win)\n\$LA "'
else
PROMPT_COMMAND='PS1="$(build_prompt_unix)\n\$LA "'
fi
print_map(){
if [ $OSTYPE = 'msys' ]; then
#Background
for clbg in {40..47} {100..107} 49 ; do
#Foreground
for clfg in {30..37} {90..97} 39 ; do
#Formatting
for attr in 0 1 2 4 5 7 ; do
#Print the result
echo -en "\e[${attr};${clbg};${clfg}m ^[${attr};${clbg};${clfg}m \e[0m"
done
echo #Newline
done
done
else
for fgbg in 38 48 ; do #Foreground/Background
for color in {0..256} ; do #Colors
#Display the color
echo -en "\033[${fgbg};5;${color}m ${color}\t\e[0m"
#Display 10 colors per lines
if [ $((($color + 1) % 10)) == 0 ] ; then
echo #New line
fi
done
echo #New line
done
fi
}
banner() {
for i in {16..21} {23..27} {27..23} {21..16} ; do echo -en "\033[38;5;${i}m#" ; done ; echo
echo -e "$LIGHTBLUE $1"
for i in {16..21} {23..27} {27..23} {21..16} ; do echo -en "\033[38;5;${i}m#" ; done ; echo
}