Blame Automation/Modules/Render/render_setRenderType.sh

Alain Reguera Delgado 2e37b0
#!/bin/bash
Alain Reguera Delgado 2e37b0
######################################################################
Alain Reguera Delgado 2e37b0
#
Alain Reguera Delgado 2e37b0
#   render_setRenderType.sh -- This file evaluates a configuration
Alain Reguera Delgado 2e37b0
#   file and determines what kind of rendition to do.
Alain Reguera Delgado 2e37b0
#
Alain Reguera Delgado 2e37b0
#   Written by:
Alain Reguera Delgado 809ecc
#   * Alain Reguera Delgado <al@centos.org.cu>, 2009-2013
Alain Reguera Delgado 2e37b0
#
Alain Reguera Delgado 809ecc
# Copyright (C) 2009-2013 The CentOS Artwork SIG
Alain Reguera Delgado 2e37b0
#
Alain Reguera Delgado 2e37b0
# This program is free software; you can redistribute it and/or modify
Alain Reguera Delgado 2e37b0
# it under the terms of the GNU General Public License as published by
Alain Reguera Delgado 809ecc
# the Free Software Foundation; either version 2 of the License, or (at
Alain Reguera Delgado 809ecc
# your option) any later version.
Alain Reguera Delgado 2e37b0
#
Alain Reguera Delgado 2e37b0
# This program is distributed in the hope that it will be useful, but
Alain Reguera Delgado 2e37b0
# WITHOUT ANY WARRANTY; without even the implied warranty of
Alain Reguera Delgado 2e37b0
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Alain Reguera Delgado 2e37b0
# General Public License for more details.
Alain Reguera Delgado 2e37b0
#
Alain Reguera Delgado 2e37b0
# You should have received a copy of the GNU General Public License
Alain Reguera Delgado 2e37b0
# along with this program; if not, write to the Free Software
Alain Reguera Delgado 2e37b0
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Alain Reguera Delgado 2e37b0
#
Alain Reguera Delgado 2e37b0
######################################################################
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
function render_setRenderType {
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 06ab0f
    local CONFIGURATION="${1}"
Alain Reguera Delgado 06ab0f
Alain Reguera Delgado 2e37b0
    local -a SECTIONS
Alain Reguera Delgado 06ab0f
    local SECTION=''
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
    # Define motif-specific environment variables, based on
Alain Reguera Delgado 2e37b0
    # configuration file path. These variables might save
Alain Reguera Delgado 2e37b0
    # configuration file writers from typing motif-specific
Alain Reguera Delgado 2e37b0
    # information when they produce motif-specific content. These
Alain Reguera Delgado 2e37b0
    # variables will be empty if the configuration file isn't inside
Alain Reguera Delgado 2e37b0
    # a motif-specific directory structure.
Alain Reguera Delgado 06ab0f
    local MOTIF=$(tcar_getPathComponent ${CONFIGURATION} --motif)
Alain Reguera Delgado 06ab0f
    local MOTIF_NAME=$(tcar_getPathComponent ${CONFIGURATION} --motif-name)
Alain Reguera Delgado 06ab0f
    local MOTIF_VERSION=$(tcar_getPathComponent ${CONFIGURATION} --motif-version)
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
    # Use arrays to store section names. This make possible to make
Alain Reguera Delgado 2e37b0
    # use of post-rendition and last-rendition concepts. Otherwise it
Alain Reguera Delgado 2e37b0
    # would be difficult to predict information about sections inside
Alain Reguera Delgado 2e37b0
    # deeper environments.
Alain Reguera Delgado 2e37b0
    for SECTION in $(tcar_getConfigSectionNames "${CONFIGURATION}" \
Alain Reguera Delgado 2e37b0
        | egrep ${TCAR_FLAG_FILTER});do
Alain Reguera Delgado 06ab0f
        SECTIONS[++${#SECTIONS[*]}]="${SECTION}"
Alain Reguera Delgado 2e37b0
    done
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
    local COUNTER=0
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
    while [[ ${COUNTER} -lt ${#SECTIONS[*]} ]];do
Alain Reguera Delgado 3853b9
Alain Reguera Delgado 2e37b0
        # Initialize array variables locally.
Alain Reguera Delgado 2e37b0
        local -a TRANSLATIONS
Alain Reguera Delgado 2e37b0
        local -a SOURCES
Alain Reguera Delgado 2e37b0
  
Alain Reguera Delgado 2e37b0
        SECTION=${SECTIONS[${COUNTER}]}
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        if [[ ${SECTION} =~ "^/" ]];then
Alain Reguera Delgado 2e37b0
            TARGET=${SECTION}
Alain Reguera Delgado 2e37b0
        else
Alain Reguera Delgado 2e37b0
            if [[ ${TCAR_SCRIPT_LANG_LC} =~ '^en' ]];then
Alain Reguera Delgado 2e37b0
                TARGET=$(dirname ${CONFIGURATION})/${SECTION}
Alain Reguera Delgado 2e37b0
            else
Alain Reguera Delgado 2e37b0
                TARGET=$(dirname ${CONFIGURATION})/${TCAR_SCRIPT_LANG_LC}/${SECTION}
Alain Reguera Delgado 2e37b0
            fi
Alain Reguera Delgado 2e37b0
        fi
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        RENDER_TYPE=$(tcar_getConfigValue "${CONFIGURATION}" "${SECTION}" "render-type")
Alain Reguera Delgado 25045c
        if [[ -z ${RENDER_TYPE} ]];then
Alain Reguera Delgado 25045c
            tcar_printMessage "${CONFIGURATION} `gettext "hasn't render-type set in."`" --as-error-line
Alain Reguera Delgado 25045c
        fi
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        RENDER_FROM=$(tcar_getConfigValue "${CONFIGURATION}" "${SECTION}" "render-from")
Alain Reguera Delgado 25045c
        if [[ -z ${RENDER_TYPE} ]];then
Alain Reguera Delgado 25045c
            tcar_printMessage "${CONFIGURATION} `gettext "hasn't render-from set in."`" --as-error-line
Alain Reguera Delgado 25045c
        fi
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        for SOURCE in ${RENDER_FROM};do
Alain Reguera Delgado 2e37b0
            if [[ ${SOURCE} =~ "^/" ]];then
Alain Reguera Delgado 2e37b0
                SOURCES[((++${#SOURCES[*]}))]=${SOURCE}
Alain Reguera Delgado 2e37b0
            else
Alain Reguera Delgado 2e37b0
                SOURCES[((++${#SOURCES[*]}))]=$(dirname ${CONFIGURATION})/${SOURCE}
Alain Reguera Delgado 2e37b0
            fi
Alain Reguera Delgado 2e37b0
        done
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        if [[ -z ${RENDER_TYPE} ]];then
Alain Reguera Delgado 2e37b0
           RENDER_TYPE=$(echo ${SOURCES[0]} | sed -r 's/.+\.([[:alpha:]]+)$/\1/') 
Alain Reguera Delgado 2e37b0
        fi
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        LOCALE_FROM=$(tcar_getConfigValue "${CONFIGURATION}" "${SECTION}" "locale-from")
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        # When the current locale information is not English, don't
Alain Reguera Delgado 2e37b0
        # process section blocks unless they have any related
Alain Reguera Delgado 2e37b0
        # translation file. There is no need to have untranslated
Alain Reguera Delgado 2e37b0
        # content inside language-specific directories.
Alain Reguera Delgado 2e37b0
        if [[ ! ${TCAR_SCRIPT_LANG_LC} =~ '^en' ]];then
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
            if [[ -z ${LOCALE_FROM}  ]];then
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
                # Increment array counter.
Alain Reguera Delgado 2e37b0
                COUNTER=$(( ${COUNTER} + 1 ))
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
                # Reset array variable to avoid undesired
Alain Reguera Delgado 2e37b0
                # concatenations between sections blocks.
Alain Reguera Delgado 2e37b0
                unset TRANSLATIONS
Alain Reguera Delgado 2e37b0
                unset SOURCES
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
                # Move to next section block.
Alain Reguera Delgado 2e37b0
                continue
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
            fi
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
            for TRANSLATION in ${LOCALE_FROM};do
Alain Reguera Delgado 2e37b0
                if [[ ${TRANSLATION} =~ "^/" ]];then
Alain Reguera Delgado 2e37b0
                    TRANSLATIONS[((++${#TRANSLATIONS[*]}))]=${TRANSLATION}
Alain Reguera Delgado 2e37b0
                else
Alain Reguera Delgado 2e37b0
                    TRANSLATIONS[((++${#TRANSLATIONS[*]}))]=$(dirname ${CONFIGURATION})/${TRANSLATION}
Alain Reguera Delgado 2e37b0
                fi
Alain Reguera Delgado 2e37b0
            done
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 786ac0
            tcar_checkFiles -ef ${TRANSLATIONS[*]}
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        fi
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        # Initialize render's modules.
Alain Reguera Delgado 2e37b0
        case ${RENDER_TYPE} in
Alain Reguera Delgado 2e37b0
            "svgz" | "svg" )
Alain Reguera Delgado 06ab0f
                tcar_setModuleEnvironment -m "svg" -t "sub-module"
Alain Reguera Delgado 2e37b0
                ;;
Alain Reguera Delgado 2e37b0
            * )
Alain Reguera Delgado 06ab0f
                tcar_setModuleEnvironment -m "${RENDER_TYPE}" -t "sub-module"
Alain Reguera Delgado 2e37b0
                ;;
Alain Reguera Delgado 2e37b0
        esac
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        # Increment section's counter.
Alain Reguera Delgado 2e37b0
        COUNTER=$(( ${COUNTER} + 1 ))
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
        # Reset array variable to avoid undesired concatenations
Alain Reguera Delgado 2e37b0
        # between sections blocks.
Alain Reguera Delgado 2e37b0
        unset TRANSLATIONS
Alain Reguera Delgado 2e37b0
        unset SOURCES
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
    done
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
    # Reset array variables and their counters to avoid undesired
Alain Reguera Delgado 2e37b0
    # concatenations between configuration files.
Alain Reguera Delgado 2e37b0
    unset COUNTER
Alain Reguera Delgado 2e37b0
    unset SECTIONS
Alain Reguera Delgado 2e37b0
Alain Reguera Delgado 2e37b0
}