forked from QubesOS/qubes-linux-template-builder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunctions-name.sh
109 lines (87 loc) · 2.86 KB
/
functions-name.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash
# vim: set ts=4 sw=4 sts=4 et :
set -e
VERBOSE=${VERBOSE:-1}
DEBUG=${DEBUG:-0}
containsFlavor() {
flavor="${1}"
retval=1
# Check the template flavor first
if [ "${flavor}" == "${TEMPLATE_FLAVOR}" ]; then
retval=0
fi
# Check the template flavors next
elementIn "${flavor}" ${TEMPLATE_OPTIONS[@]} && {
retval=0
}
return ${retval}
}
templateFlavorPrefix() {
local template_flavor=${1-${TEMPLATE_FLAVOR}}
# If TEMPLATE_FLAVOR_PREFIX is not already an array, make it one
if ! [[ "$(declare -p TEMPLATE_FLAVOR_PREFIX 2>/dev/null)" =~ ^declare\ -a.* ]] ; then
TEMPLATE_FLAVOR_PREFIX=( ${TEMPLATE_FLAVOR_PREFIX} )
fi
for element in "${TEMPLATE_FLAVOR_PREFIX[@]}"
do
if [ "${element%:*}" == "${DIST}+${template_flavor}" ]; then
echo ${element#*:}
return
fi
done
# If template_flavor only contains a '+'; send back $DIST
if [ "${template_flavor}" == "+" ]; then
echo "${DIST}"
else
echo "${DIST}${template_flavor:++}"
fi
}
templateNameFixLength() {
local template_name="${1}"
local temp_name=(${template_name//+/ })
local index=$(( ${#temp_name[@]}-1 ))
while [ ${#template_name} -ge 32 ]; do
template_name=$(printf '%s' ${temp_name[0]})
if [ $index -gt 0 ]; then
template_name+=$(printf '+%s' ${temp_name[@]:1:index})
fi
(( index-- ))
if [ $index -lt 1 ]; then
template_name="${template_name:0:31}"
fi
done
echo "${template_name}"
}
templateNameDist() {
local dist_name="${1}"
template_name="$(templateName)" && dist_name="${template_name}"
# Automaticly correct name length if it's greater than 32 chars
dist_name="$(templateNameFixLength ${dist_name})"
# Remove and '+' characters from name since they are invalid for name
dist_name="${dist_name//+/-}"
echo ${dist_name}
}
templateName() {
local template_flavor=${1:-${TEMPLATE_FLAVOR}}
retval=1 # Default is 1; mean no replace happened
# Only apply options if $1 was not passed
if [ -n "${1}" ] || [ "X${TEMPLATE_OPTIONS}" == "X" ]; then
local template_options=
else
local template_options=$(printf '+%s' ${TEMPLATE_OPTIONS[@]})
fi
local template_name="$(templateFlavorPrefix ${template_flavor})${template_flavor}${template_options}"
# If TEMPLATE_LABEL is not already an array, make it one
if ! [[ "$(declare -p TEMPLATE_LABEL 2>/dev/null)" =~ ^declare\ -a.* ]] ; then
TEMPLATE_LABEL=( ${TEMPLATE_LABEL} )
fi
for element in "${TEMPLATE_LABEL[@]}"; do
if [ "${element%:*}" == "${template_name}" ]; then
template_name="${element#*:}"
retval=0
break
fi
done
echo "$(templateNameFixLength ${template_name})"
return $retval
}