Add helpers script (currently useful for generating UUIDs for the plane database)
This commit is contained in:
parent
11441301b1
commit
b12c68ddfb
61
lib/helpers.sh
Normal file
61
lib/helpers.sh
Normal 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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user