Files

114 lines
3.1 KiB
Bash

#!/bin/sh
## COLOR DEFINITIONS
# Define colors for usage in prompts. Note that these are escaped for usage
# in the prompt and shouldn't be used elsewhere. Read the bash man page to
# see why this is necessary
export eBLACK='\[\e[0;30m\]'
export eBLUE='\[\e[0;34m\]'
export eGREEN='\[\e[0;32m\]'
export eCYAN='\[\e[0;36m\]'
export eRED='\[\e[0;31m\]'
export ePURPLE='\[\e[0;35m\]'
export eBROWN='\[\e[0;33m\]'
export eLIGHTGRAY='\[\e[0;37m\]'
export eDARKGRAY='\[\e[1;30m\]'
export eLIGHTBLUE='\[\e[1;34m\]'
export eLIGHTGREEN='\[\e[1;32m\]'
export eLIGHTCYAN='\[\e[1;36m\]'
export eLIGHTRED='\[\e[1;31m\]'
export eIGHTPURPLE='\[\e[1;35m\]'
export eYELLOW='\[\e[1;33m\]'
export eWHITE='\[\e[1;37m\]'
export eNC='\[\e[0m\]'
# Define colors for generic usage
export BLACK='\e[0;30m'
export BLUE='\e[0;34m'
export GREEN='\e[0;32m'
export CYAN='\e[0;36m'
export RED='\e[0;31m'
export PURPLE='\e[0;35m'
export BROWN='\e[0;33m'
export LIGHTGRAY='\e[0;37m'
export DARKGRAY='\e[1;30m'
export LIGHTBLUE='\e[1;34m'
export LIGHTGREEN='\e[1;32m'
export LIGHTCYAN='\e[1;36m'
export LIGHTRED='\e[1;31m'
export LIGHTPURPLE='\e[1;35m'
export YELLOW='\e[1;33m'
export WHITE='\e[1;37m'
export NC='\e[0m'
## END COLOR DEFINITIONS
function ErrorMsg() {
echo "$@" 1>&2
}
# Helper function to give informative messages to the user
# These are more-or-less based on the similar functions used in Gentoo's
# init scripts and portage.
# Print an informative message to the user on STDERR
function emsg() {
#echo -e " ${LIGHTGREEN}*$NC $@" 1>&2
printf "%b %s\n" " ${LIGHTGREEN}*$NC" "$@" 1>&2
}
# Print a warning message to the user on STDERR
function ewarn() {
printf "${YELLOW}*$NC %s\n" "${@}" 1>&2
}
# Print an error message to the user on STDERR
function eerror() {
# echo -e " ${LIGHTRED}*$NC $@" 1>&2
printf "${LIGHTRED}*$NC %s\n" "${@}" 1>&2
}
kspinner() {
local pid=$1
local delay=0.1
# Define frames as an array of colored characters
local spinstr=( $'\e[31m|\e[0m' $'\e[32m/\e[0m' $'\e[33m-\e[0m' $'\e[34m\\\e[0m' )
local i=0
while kill -0 "$pid" 2>/dev/null; do
# Access the array element at index i
# Use %s because the element contains multiple characters (escape codes)
printf "\r [%s] " "${spinstr[i]}"
# Increment index and wrap around using modulo
i=$(( (i + 1) % ${#spinstr[@]} ))
sleep "$delay"
done
# Clean up the line when done
printf "\r \r"
}
ispinner() {
# local pid=$1
local status="$1"
local delay=0.1
# Define frames as an array of colored characters
local spinstr=( $'\e[31m|\e[0m' $'\e[32m/\e[0m' $'\e[33m-\e[0m' $'\e[34m\\\e[0m' )
local i=0
while [ 1 = 1 ]; do
# Access the array element at index i
# Use %s because the element contains multiple characters (escape codes)
printf "\r%-60s [%s] " "${status}" "${spinstr[i]}"
# Increment index and wrap around using modulo
i=$(( (i + 1) % ${#spinstr[@]} ))
sleep "$delay"
done
# Clean up the line when done
printf "\r \r"
}
## END OUTPUT FUNCTIONS