Add helpers script (currently useful for generating UUIDs for the plane database)

This commit is contained in:
Bernhard "bero" Rosenkränzer (Boggins) 2024-12-16 20:52:50 +01:00
parent 11441301b1
commit b12c68ddfb

61
lib/helpers.sh Normal file
View File

@ -0,0 +1,61 @@
# Helper functions that can be useful for multiple scripts
# random: Create a random string in a specified format
# Usage: random format
# Where format is a string to be transformed into a random sequence:
# 0 - transformed into a digit (0-9)
# x - transformed into a lower case hexadecimal digit (0-9, a-f)
# X - transformed into an upper case hexadecimal digit (0-9, A-F)
# a - transformed into a lower case letter (a-z)
# A - transformed into an upper case letter (A-Z)
# l - transformed into a letter (upper or lower case) (a-z, A-Z)
# L - transformed into a letter (upper or lower case) or number (a-z, A-Z, 0-9)
# \ - skipped; next character is not transformed
# anything else - kept as is
# e.g. to create a plane UUID, use
# random
random() {
local TEMPLATE="$1"
local RESULT=""
local KEEPNEXT=false
local ADD
for i in $(echo $TEMPLATE |fold -w1); do
if $KEEPNEXT; then
RESULT="$RESULT$i"
KEEPNEXT=false
continue
fi
case "$i" in
x)
ADD="$(echo $((RANDOM%16))|xargs printf '%x')"
;;
X)
ADD="$(echo $((RANDOM%16))|xargs printf '%X')"
;;
0)
ADD="${RANDOM:0:1}"
;;
a)
ADD="$(head -n1 /dev/urandom |tr -dc a-z |cut -b1)"
;;
A)
ADD="$(head -n1 /dev/urandom |tr -dc A-Z |cut -b1)"
;;
l)
ADD="$(head -n1 /dev/urandom |tr -dc a-zA-Z |cut -b1)"
;;
L)
ADD="$(head -n1 /dev/urandom |tr -dc a-zA-Z0-9 |cut -b1)"
;;
"\\")
KEEPNEXT=true
continue
;;
*)
ADD="$i"
;;
esac
RESULT="$RESULT$ADD"
done
echo -n $RESULT
}