Files
godot-website/misc/scripts/utils.sh
2025-09-15 20:15:26 +00:00

147 lines
2.3 KiB
Bash

#!/usr/bin/env bash
color() {
local BLACK="0"
local RED="1"
local GREEN="2"
local YELLOW="3"
local BLUE="4"
local PURPLE="5"
local CYAN="6"
local WHITE="7"
local type="$1"
local color="$2"
local uppercase_color="${color^^}"
validate_color() {
case "$color" in
black | red | green | yellow | blue | purple | cyan | white) ;;
?)
echo_err "Invalid color: \"$color\""
return 1
;;
esac
return 0
}
case "$type" in
r | reg | regular)
if validate_color; then
echo -e "\e[0;3${!uppercase_color}m"
else
return 1
fi
;;
b | bold)
if validate_color; then
echo -e "\e[1;3${!uppercase_color}m"
else
return 1
fi
;;
u | underline)
if validate_color; then
echo -e "\e[4;3${!uppercase_color}m"
else
return 1
fi
;;
bg | background)
if validate_color; then
echo -e "\e[4${!uppercase_color}m"
else
return 1
fi
;;
hi | high)
if validate_color; then
echo -e "\e[0;9${!uppercase_color}m"
else
return 1
fi
;;
hi-b | hi-bold | high-b | high-bold)
if validate_color; then
echo -e "\e[1;9${!uppercase_color}m"
else
return 1
fi
;;
hi-bg | hi-background | high-bg | high-background)
if validate_color; then
echo -e "\e[0;10${!uppercase_color}m"
else
return 1
fi
;;
R | reset)
echo -e "\e[0m"
;;
Rfg | reset-foreground)
echo -e "\e[39m"
;;
Rbg | reset-background)
echo -e "\e[49m"
;;
?)
echo_err "Error: invalid color type: \"$type\""
return 1
;;
esac
}
echo_err() {
local IFS=" "
echo "$@" >&2
}
export -f echo_err
test_ffmpeg() {
local ffmpeg_path="${1:-ffmpeg}"
if ! command -v "$ffmpeg_path" >/dev/null 2>&1; then
echo_err "Error: did not find '$ffmpeg_path', ffmpeg is required"
show_help 1
fi
}
export -f test_ffmpeg
join_list() {
local IFS="$1"
shift
echo "$*"
}
export -f join_list
parse_int() {
if [[ "$#" -gt "1" ]]; then
echo_err "Too many arguments passed to \`${FUNCNAME[0]}\`"
return 1
fi
printf "%d" "$1" 2>/dev/null
}
export -f parse_int
to_lower() {
local IFS=" "
local arg=""
local -a results=()
for arg in "$@"; do
results+=("$(echo "$arg" | awk "{print tolower($1)}")")
shift
done
echo "${results[@]}"
}
export -f to_lower
to_upper() {
local IFS=" "
local arg=""
local -a results=()
for arg in "$@"; do
results+=("$(echo "$arg" | awk "{print toupper(\$1)}")")
done
echo "${results[@]}"
}
export -f to_upper