diff --git a/functions-name.sh b/functions-name.sh index 229a1c7..cb6fa99 100644 --- a/functions-name.sh +++ b/functions-name.sh @@ -6,6 +6,23 @@ 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}} @@ -30,18 +47,31 @@ templateFlavorPrefix() { 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}" - # XXX: Temp hack to shorten name - if [ ${#dist_name} -ge 32 ]; then - if [ ${#template_name} -lt 32 ]; then - dist_name="${template_name}" - else - dist_name="${dist_name:0:31}" - fi - fi + # 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//+/-}" @@ -53,13 +83,13 @@ templateName() { retval=1 # Default is 1; mean no replace happened # Only apply options if $1 was not passed - if [ -n "${1}" ]; then + if [ -n "${1}" ] || [ "X${TEMPLATE_OPTIONS}" == "X" ]; then local template_options= else - local template_options="${TEMPLATE_OPTIONS// /+}" + local template_options=$(printf '%s' ${TEMPLATE_OPTIONS[@]/#/+}) fi - local template_name="$(templateFlavorPrefix ${template_flavor})${template_flavor}${template_options:++}${template_options}" + 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 @@ -74,13 +104,6 @@ templateName() { fi done - if [ ${#template_name} -ge 32 ]; then - error "Template name is greater than 31 characters: ${template_name}" - error "Please set an alias" - error "Exiting!!!" - exit 1 - fi - - echo ${template_name} + echo "$(templateNameFixLength ${template_name})" return $retval }