qubes-linux-template-builder/functions-name.sh
Jason Mehring cbecd6e481
Fix renaming templates that have a flavor and options such as gnome
jessie+whonix-workstation+gnome+standard was not converting name using
TEMPLATE_LABEL since the options we getting mangled (+gnomestandard)
where thye should have returned (+gnome+standard)
2015-06-03 23:39:54 -04:00

110 lines
2.9 KiB
Bash

#!/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 ${template_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
}