diff --git a/Scripts/Locales/es_ES/centos-art.sh.po b/Scripts/Locales/es_ES/centos-art.sh.po deleted file mode 100644 index afac9a6..0000000 --- a/Scripts/Locales/es_ES/centos-art.sh.po +++ /dev/null @@ -1,202 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: centos-art.sh 0.6\n" -"Report-Msgid-Bugs-To: centos-l10n-es@centos.org.cu\n" -"POT-Creation-Date: 2013-10-07 14:11-0400\n" -"PO-Revision-Date: 2013-10-07 14:11-0400\n" -"Last-Translator: Localization SIG \n" -"Language-Team: Spanish\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: Automation/centos-art.sh:65 -msgid "has not execution rights." -msgstr "no tiene permiso de ejecución." - -#: Automation/Scripts/tcar_checkFiles.sh:56 -msgid "isn't a directory." -msgstr "no es un directorio." - -#: Automation/Scripts/tcar_checkFiles.sh:62 -msgid "doesn't exist." -msgstr "no existe." - -#: Automation/Scripts/tcar_checkFiles.sh:68 -msgid "isn't a regular file." -msgstr "no es un fichero regular." - -#: Automation/Scripts/tcar_checkFiles.sh:74 -msgid "isn't a symbolic link." -msgstr "no es un enlace simbólico." - -#: Automation/Scripts/tcar_checkFiles.sh:80 -msgid "isn't an executable file." -msgstr "no es un fichero ejecutable." - -#: Automation/Scripts/tcar_checkFiles.sh:87 -#, sh-format -msgid "isn't a \"$MIME\" file." -msgstr "no es un fichero \"$MIME\"." - -#: Automation/Scripts/tcar_checkFiles.sh:93 -msgid "doesn't match its pattern." -msgstr "no coincide con su patrón." - -#: Automation/Scripts/tcar_checkFiles.sh:99 -msgid "isn't installed in the system." -msgstr "no está instalado en el sistema." - -#: Automation/Scripts/tcar_checkFiles.sh:119 -msgid "No file for processing found." -msgstr "Ningún fichero encontrado para procesar." - -#: Automation/Scripts/tcar_checkFiles.sh:146 -msgid "The condition command provided isn't supported." -msgstr "El comando condición suministrado no está soportado." - -#: Automation/Scripts/tcar_getTemporalFile.sh:46 -msgid "The first argument cannot be empty." -msgstr "El primer argumento no puede estar vacío." - -#: Automation/Scripts/tcar_printCopyrightInfo.sh:52 -msgid "Creative Common Attribution-ShareAlike 3.0 License" -msgstr "Licencia Creativa Común de Atribución-Compartida 3.0." - -#: Automation/Scripts/tcar_printCopyrightInfo.sh:125 -msgid "All rights reserved." -msgstr "Todos los derechos reservados." - -#: Automation/Scripts/tcar_printMessage.sh:40 -msgid "The message cannot be empty." -msgstr "El mensaje no puede estar vacío." - -#: Automation/Scripts/tcar_printMessage.sh:126 -msgid "To know more, run" -msgstr "Para conocer más, ejecuta" - -#: Automation/Scripts/tcar_printMessage.sh:132 -msgid "yes" -msgstr "sí" - -#: Automation/Scripts/tcar_printMessage.sh:135 -msgid "no" -msgstr "no" - -#: Automation/Scripts/tcar_printMessage.sh:222 -msgid "Processing" -msgstr "Procesando" - -#: Automation/Scripts/tcar_printMessage.sh:226 -msgid "Cropping from" -msgstr "Recortando desde" - -#: Automation/Scripts/tcar_printMessage.sh:230 -msgid "Tuning-up" -msgstr "Ajustando" - -#: Automation/Scripts/tcar_printMessage.sh:234 -msgid "Checking" -msgstr "Comprobando" - -#: Automation/Scripts/tcar_printMessage.sh:238 -msgid "Combining" -msgstr "Combinando" - -#: Automation/Scripts/tcar_printMessage.sh:242 -msgid "Editing" -msgstr "Editando" - -#: Automation/Scripts/tcar_printMessage.sh:247 -msgid "Updating" -msgstr "Actualizando" - -#: Automation/Scripts/tcar_printMessage.sh:249 -msgid "Creating" -msgstr "Creando" - -#: Automation/Scripts/tcar_printMessage.sh:254 -msgid "Deleting" -msgstr "Borrando" - -#: Automation/Scripts/tcar_printMessage.sh:258 -msgid "Reading" -msgstr "Leyendo" - -#: Automation/Scripts/tcar_printMessage.sh:262 -msgid "Saved as" -msgstr "Salvado como" - -#: Automation/Scripts/tcar_printMessage.sh:266 -msgid "Linked to" -msgstr "Enlazado como" - -#: Automation/Scripts/tcar_printMessage.sh:270 -msgid "Moved to" -msgstr "Movido a" - -#: Automation/Scripts/tcar_printMessage.sh:274 -msgid "Translation" -msgstr "Traducción" - -#: Automation/Scripts/tcar_printMessage.sh:278 -msgid "Translating" -msgstr "Traduciendo" - -#: Automation/Scripts/tcar_printMessage.sh:282 -msgid "Validating" -msgstr "Validando" - -#: Automation/Scripts/tcar_printMessage.sh:286 -msgid "Template" -msgstr "Plantilla" - -#: Automation/Scripts/tcar_printMessage.sh:290 -msgid "Configuration" -msgstr "Configuración" - -#: Automation/Scripts/tcar_printMessage.sh:294 -msgid "Palette" -msgstr "Paleta" - -#: Automation/Scripts/tcar_printVersion.sh:45 -#, sh-format -msgid "" -"$PROGRAM_NAME comes with NO WARRANTY, to the extent permitted by law. You " -"may redistribute copies of $PROGRAM_NAME under the terms of the GNU General " -"Public License. For more information about these matters, see the files " -"named COPYING." -msgstr "" -"$PROGRAM_NAME viene SIN GARANTÍAS, a todo el alcance permitido por la ley. " -"Usted puede distribuir copias de $PROGRAM_NAME bajo los términos de la " -"Licencia Pública General de GNU. Para más información sobre estos asuntos, " -"vea el fichero COPYING." - -#: Automation/Scripts/tcar_setModuleArguments.sh:95 -msgid "The argument verification failed." -msgstr "La verificación de argumento falló." - -#: Automation/Scripts/tcar_setModuleEnvironmentScripts.sh:53 -msgid "No function file was found." -msgstr "Ningún fichero de función fue encontrado." - -#: Automation/Scripts/tcar_setModuleEnvironment.sh:56 -msgid "Unknown" -msgstr "Desconocido" - -#: Automation/Scripts/tcar_setModuleEnvironment.sh:145 -msgid "Opening module" -msgstr "Abriendo módulo" - -#: Automation/Scripts/tcar_setModuleEnvironment.sh:149 -msgid "Closing module" -msgstr "Cerrando módulo" - -#: Automation/Scripts/tcar_setModuleEnvironment.sh:159 -msgid "Closing variables" -msgstr "Cerrando variables" - -#: Automation/Scripts/tcar_unsetModuleEnvironment.sh:37 -msgid "The export id was not provided." -msgstr "El identificador de exportación no fue suministrado." diff --git a/Scripts/tcar.sh b/Scripts/tcar.sh deleted file mode 100755 index 39e6f58..0000000 --- a/Scripts/tcar.sh +++ /dev/null @@ -1,261 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar.sh -- The CentOS Artwork Repository automation tool. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -###################################################################### -# Identity -###################################################################### - -declare -xr TCAR_SCRIPT_NAME="tcar.sh" -declare -xr TCAR_SCRIPT_VERSION='0.8' -declare -xr TCAR_SCRIPT_COMMAND="tcar" - -###################################################################### -# Paths -###################################################################### - -# Base directory where repository files are installed in. -declare -xr TCAR_BASEDIR=/usr/share/tcar - -# Base directory where final content is produced. This value should be -# customized later by the user. -declare -xr TCAR_WORKDIR=/tmp - -# Base directory where automation script modules are installed in. -declare -xr TCAR_SCRIPT_MODULES_BASEDIR=${TCAR_BASEDIR}/modules - -# Directory to store temporal files. -declare -xr TCAR_SCRIPT_TEMPDIR=$(mktemp -p /tmp -d ${TCAR_SCRIPT_NAME}-XXXXXX) - -# Configuration files in order of reading preference. The last file in -# the list overlaps options set in previous files in the list. Use -# colon character to separate files in the list. -declare -xr TCAR_SCRIPT_CONFIG=${HOME}/.tcar.conf - -# Base directory where man pages are searched at. -declare -x TCAR_SCRIPT_MANUALS=/usr/share/man - -# Default text editor. -declare -x TCAR_SCRIPT_EDITOR=/usr/bin/vim - -###################################################################### -# Internationalization -###################################################################### - -# Set the script language information using the LC format. This format -# shows both language and country information (e.g., `es_ES'). -declare -xr TCAR_SCRIPT_LANG_LC=$(echo ${LANG} | cut -d'.' -f1) - -# Set the script language information using the LL format. This format -# shows only the language information (e.g., `es'). -declare -xr TCAR_SCRIPT_LANG_LL=$(echo ${TCAR_SCRIPT_LANG_LC} | cut -d'_' -f1) - -# Set the script language information using the CC format. This format -# shows only the country information (e.g., `ES'). -declare -xr TCAR_SCRIPT_LANG_CC=$(echo ${TCAR_SCRIPT_LANG_LC} | cut -d'_' -f2) - -# Set function environments required by GNU gettext system. -. gettext.sh - -# Set the script text domain. This information is used by gettext -# system to retrieve translated strings from machine object (MO) files -# with this name. This variable is reset each time a new module is -# loaded, so the correct files can be used. -declare -x TEXTDOMAIN="${TCAR_SCRIPT_NAME}" - -# Set the script text domain directory. This information is used by -# gettext system to know where the machine objects are stored in. This -# variable is reset each time a new module is loaded, so the correct -# files can be used. -declare -x TEXTDOMAINDIR=/usr/share/locale - -###################################################################### -# Global Flags -###################################################################### - -# Set filter flag (-f|--filter). This flag is mainly used to reduce -# the number of files to process and is interpreted as egrep-posix -# regular expression. By default, when this flag is not provided, all -# paths in the working copy will match, except files inside hidden -# directories like `.svn' and `.git' that will be omitted. -declare -x TCAR_FLAG_FILTER='[[:alnum:]_/-]+' - -# Set verbosity flag (-q|--quiet). This flag controls whether -# tcar.sh script prints messages or not. By default, all -# messages are suppressed except those directed to standard error. -declare -x TCAR_FLAG_QUIET='false' - -# Set affirmative flag (-y|--yes). This flag controls whether -# tcar.sh script does or does not pass confirmation request -# points. By default, it doesn't. -declare -x TCAR_FLAG_YES='false' - -# Set debugger flag (-d|--debug). This flag controls whether -# tcar.sh script does or does not print debugging information. -# The tcar.sh script prints debug information to standard -# output. -declare -x TCAR_FLAG_DEBUG='false' - -###################################################################### -# Global Functions -###################################################################### - -# Export script's environment functions. -for SCRIPT_FILE in $(ls ${TCAR_BASEDIR}/tcar_*.sh);do - if [[ -x ${SCRIPT_FILE} ]];then - . ${SCRIPT_FILE} - export -f $(grep '^function ' ${SCRIPT_FILE} | cut -d' ' -f2) - else - echo "${SCRIPT_FILE} `gettext "has not execution rights."`" - exit 1 - fi -done - -###################################################################### -# Signals -###################################################################### - -# Trap signals in order to terminate the script execution correctly -# (e.g., removing all temporal files before leaving). Trapping the -# exit signal seems to be enough by now, since it is always present as -# part of the script execution flow. Each time the tcar.sh -# script is executed it will inevitably end with an EXIT signal at -# some point of its execution, even if it is interrupted in the middle -# of its execution (e.g., through `Ctrl+C'). -trap tcar_terminateScriptExecution 0 - -###################################################################### -# Parse Command-line Arguments -###################################################################### - -declare -x TCAR_MODULE_NAME='' -declare -x TCAR_MODULE_ARGUMENT='' -declare -x TCAR_SCRIPT_ARGUMENT='' - -# Retrieve module's name using the first argument of tcar.sh -# script as reference. -if [[ ! ${1} =~ '^-' ]];then - TCAR_MODULE_NAME="${1}"; shift 1 -else - TCAR_MODULE_NAME="" -fi - -# Initialize tcar.sh script specific options. The way tcar.sh script -# retrieves its options isn't as sophisticated (e.g., it doesn't -# provide valid-option verifications) as it is provided by getopt -# command. I cannot use getopt here because it is already used when -# loading module-specific options. Using more than one invocation of -# getopt in the same script is not possible (e.g., one of the -# invocations may enter in conflict with the other one when different -# option definitions are expected in the command-line.) -while true; do - - # Store non-option arguments passed to tcar.sh script. - if [[ ! ${1} =~ '^-' ]];then - TCAR_SCRIPT_ARGUMENT="${1} ${TCAR_SCRIPT_ARGUMENT}" - shift 1 - if [[ $# -gt 0 ]];then - continue - else - break - fi - fi - - case "${1}" in - - --help* ) - - if [[ -z ${TCAR_MODULE_NAME} ]];then - # Print tcar.sh script's help. Consider that the - # --help option can receive an argument by using the - # equal sign (e.g., - # --help=tcar_setModuleEnvironment.sh). However, it - # is not possible to use spaces instead of equal sign - # because that would confuse other options from being - # parsed. - tcar_printHelp "${1}" - exit 0 - else - # Store the argument for further processing inside the - # module environment that will be executed later. - TCAR_MODULE_ARGUMENT="-g ${1} ${TCAR_MODULE_ARGUMENT}" - shift 1 - fi - ;; - - --version ) - - # Print tcar.sh script's version. - if [[ -z ${TCAR_MODULE_NAME} ]];then - tcar_printVersion - exit 0 - else - TCAR_MODULE_ARGUMENT="-g ${1} ${TCAR_MODULE_ARGUMENT}" - shift 1 - fi - ;; - - --quiet ) - - TCAR_FLAG_QUIET='true' - shift 1 - ;; - - --yes ) - - TCAR_FLAG_YES='true' - shift 1 - ;; - - --debug ) - - TCAR_FLAG_DEBUG='true' - shift 1 - ;; - - * ) - - # Store module-specific option arguments. This is, all - # arguments not considered part of tcar.sh script - # itself. The module-specific option arguments are passed, - # later, to getopt for option processing, inside the - # module-specific environments. - TCAR_MODULE_ARGUMENT="-g ${1} ${TCAR_MODULE_ARGUMENT}" - shift 1 - if [[ $# -gt 0 ]];then - continue - else - break - fi - ;; - esac -done - -# Initiate module-specific environment. -tcar_setModuleEnvironment -m "${TCAR_MODULE_NAME}" ${TCAR_MODULE_ARGUMENT} ${TCAR_SCRIPT_ARGUMENT} - -# At this point everything has been done without errors. So, exit -# tcar.sh script successfully. -exit 0 diff --git a/Scripts/tcar_checkFiles.sh b/Scripts/tcar_checkFiles.sh deleted file mode 100755 index 97aa0f0..0000000 --- a/Scripts/tcar_checkFiles.sh +++ /dev/null @@ -1,157 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_checkFiles.sh -- This function standardizes the way file -# conditional expressions are applied to files. Here is where -# centos-art.sh script answers questions like: is the file a regular -# file or a directory? Or, is it a symbolic link? Or even, does it -# have execution rights, etc. If the verification fails somehow at -# any point, an error message is output and centos-art.sh script -# finishes its execution. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_checkFiles { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - # Initialize local array variables. - local -a CONDITION_COMMAND - local -a CONDITION_PATTERN - local -a CONDITION_MESSAGE - - # Initialize local counter. - local COUNTER=0 - - OPTIND=1 - while getopts "i:,r,m:,n,d,e,f,h,x" OPTION "${@}"; do - - case "${OPTION}" in - - d ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-d' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a directory."`" - ;; - - e ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-e' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "doesn't exist."`" - ;; - - f ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-f' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a regular file."`" - ;; - - h ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-h' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a symbolic link."`" - ;; - - x ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-x' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't an executable file."`" - ;; - - i ) - local MIME=${OPTARG} - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/file' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-bi' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`eval_gettext "isn't a \\\"\\\$MIME\\\" file."`" - ;; - - m ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='match' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="${OPTARG}" - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "doesn't match its pattern."`" - ;; - - n ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]="/bin/rpm" - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="-q --quiet" - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't installed in the system."`" - ;; - - esac - done - - # Clean up positional parameters to reflect the fact that options - # have been processed already. - shift $(( ${OPTIND} - 1 )) - - # Define list of files we want to apply verifications to, now that - # all option-like arguments have been removed from positional - # parameters list so we are free to go with the verifications. - local FILE='' - local FILES=${@} - - # Verify existence of files to prevent centos-art.sh script from - # using the current location in cases when it shouldn't (e.g., - # here it is expecting a list of files to process.). - if [[ -z ${FILES} ]];then - tcar_printMessage "`gettext "No file for processing found."`" --as-error-line - fi - - for FILE in ${FILES};do - - until [[ ${COUNTER} -eq ${#CONDITION_PATTERN[*]} ]];do - - case ${CONDITION_COMMAND[${COUNTER}]} in - - "/usr/bin/test" | "/bin/rpm" ) - ${CONDITION_COMMAND[${COUNTER}]} ${CONDITION_PATTERN[${COUNTER}]} ${FILE} \ - || tcar_printMessage "${FILE} ${CONDITION_MESSAGE[${COUNTER}]}" --as-error-line - ;; - - "/usr/bin/file" ) - if [[ ! $(${CONDITION_COMMAND[${COUNTER}]} ${CONDITION_PATTERN[${COUNTER}]} ${FILE}) =~ "^${MIME}" ]];then - tcar_printMessage "${FILE} ${CONDITION_MESSAGE[${COUNTER}]}" --as-error-line - fi - ;; - - "match" ) - if [[ ! ${FILE} =~ "${CONDITION_PATTERN[${COUNTER}]}" ]];then - tcar_printMessage "${FILE} ${CONDITION_MESSAGE[${COUNTER}]}" --as-error-line - fi - ;; - - * ) - tcar_printMessage "`gettext "The condition command provided isn't supported."`" --as-error-line - ;; - - esac - - COUNTER=$((${COUNTER} + 1)) - - done - - done - -} diff --git a/Scripts/tcar_checkModuleName.sh b/Scripts/tcar_checkModuleName.sh deleted file mode 100755 index c93a7d3..0000000 --- a/Scripts/tcar_checkModuleName.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_checkModuleName.sh -- This function uses the module's based -# directory to verify whether child and sibling modules do exist or -# not. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_checkModuleName { - - local TCAR_MODULE_LIST=$(ls ${TCAR_MODULE_BASEDIR} | tr '\n' '|' \ - | sed -r 's/\|$//' | tr '[[:upper:]]' '[[:lower:]]') - - tcar_checkFiles -m "^(${TCAR_MODULE_LIST})$" "${TCAR_MODULE_NAME}" - - tcar_printMessage "TCAR_MODULE_LIST : ${TCAR_MODULE_LIST}" --as-debugger-line - -} diff --git a/Scripts/tcar_checkRepoDirSource.sh b/Scripts/tcar_checkRepoDirSource.sh deleted file mode 100755 index 05febd7..0000000 --- a/Scripts/tcar_checkRepoDirSource.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_checkRepoDirSource.sh -- This function standardizes the path -# construction of directories inside the working copy, using -# absolute paths. This function transforms relative paths passed as -# non-option arguments to centos-art.sh script command-line into -# absolute paths inside the working copy, based on whether you are -# using Subversion or Git as version control system. Further -# verifications, (e.g., whether they really exist as directories -# inside the working copy or not) should be realized outside this -# function. -# -# Use this function whenever you want to be sure non-option -# arguments passed to centos-art.sh script command-line do always -# point to directories inside the working copy. Transforming -# relative paths into absolute paths, before processing them, is -# very useful when you need to execute the centos-art.sh script as -# command (e.g., `centos-art') anywhere on your workstation. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_checkRepoDirSource { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - local LOCATION=${1} - - # Remove any dot from arguments passed to centos-art.sh script. - # This way it is possible to use a single dot to reflect the - # current location from which centos-art.sh was executed. Notice - # that using a dot as argument is optional (e.g.: when you pass no - # argument to centos-art command-line, the current location is - # used as default location). However, it might be useful to use a - # dot as argument when you want to include the current location in - # a list of arguments to process. Don't forget that dot slash can - # be used to refer locations relatively. - LOCATION=$(echo "${LOCATION}" | sed -r "s,^\.(/([[:alnum:]_/.-]+)?)?$,$(pwd)\1,g") - - # Remove the path to repository's base directory from location in - # order to avoid path duplications here. - LOCATION=$(echo "${LOCATION}" | sed "s,${TCAR_BASEDIR}/,,g") - - # When we use Git as version control system, there isn't a need of - # using the `trunk', `branches', `tags' convention we were using - # for Subversion. The working copy begins directly with the - # content of our repository (e.g., Documentation, Scripts, - # Identity and Locales). - # - # When we use Subversion as version control system, we follow the - # `trunk', `branches', `tags' convention to organize files inside - # the repository and need to redefine the source path in order to - # build the repository absolute path from the repository top level - # on. As convention, when you prepare your working copy through - # centos-art.sh script, the absolute path to the `trunk/' - # directory is used as working copy. This is, path arguments - # provided to centos-art.sh script will be interpreted from trunk/ - # directory level on. For example, the following command should - # work correctly in both Subversion and Git repositories: - # - # centos-art render Documentation/Manuals/Docbook/Tcar-ug - # - # There isn't a need of verifying the paths built here. This is - # something we do later, using the tcar_checkFiles function. We - # don't do the file verification here to avoid malformed error - # messages when we reassign variable values using this function as - # reference (e.g., in order to prevent error messages from being - # stored inside variables.). - LOCATION=${TCAR_BASEDIR}/${LOCATION} - - # Remove trailing slashes passed as argument. The single slash - # form is used to refer the repository's root directory. The - # single slash form passed as argument of centos-art.sh script is - # useful to execute commands over the - # entire repository tree. - echo "${LOCATION}" | sed -r -e 's,/+,/,g' -e 's,/+$,,g' - -} diff --git a/Scripts/tcar_getConfigLines.sh b/Scripts/tcar_getConfigLines.sh deleted file mode 100755 index 6c52553..0000000 --- a/Scripts/tcar_getConfigLines.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getConfigLines.sh -- This function standardizes the way -# configuration lines are retrieved form configuration files. As -# arguments, the configuration file absolute path, the configuration -# section name, and the configuration option name must be provided. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getConfigLines { - - # Initialize absolute path to configuration file. - local CONFIGURATION_FILE="${1}" - - # Initialize configuration section name where the variable value - # we want to to retrieve is set in. - local CONFIGURATION_SECTION="${2}" - - # Initialize variable name we want to retrieve value from. - local CONFIGURATION_OPTION="${3}" - - # Verify configuration variable name. When no variable name is - # provided print all configuration lines that can be considered as - # well-formed paths. Be sure configuration variable name starts - # just at the beginning of the line. - if [[ ! ${CONFIGURATION_OPTION} =~ '^[[:alnum:]_./-]+$' ]];then - CONFIGURATION_OPTION='[[:alnum:]_./-]+[[:space:]]*=' - fi - - # Retrieve configuration lines from configuration file. Don't sort - # the value of this value so as to preserve the order given in the - # configuration file. This is important because configuration - # files are being used for setting render-from priorities. - local CONFIGURATION_LINES=$(cat ${CONFIGURATION_FILE} \ - | egrep -v '^#' \ - | egrep -v '^[[:space:]]*$' \ - | sed -r -n "/^\[${CONFIGURATION_SECTION}\][[:space:]]*$/,/^\[/p" \ - | egrep -v '^\[' \ - | egrep "^${CONFIGURATION_OPTION}") - - # Output value related to variable name. - echo "${CONFIGURATION_LINES}" - -} diff --git a/Scripts/tcar_getConfigSectionNames.sh b/Scripts/tcar_getConfigSectionNames.sh deleted file mode 100755 index 8da1206..0000000 --- a/Scripts/tcar_getConfigSectionNames.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getConfigSectionNames.sh -- This function standardizes the way -# section names are retrieved from configuration files. Once section -# names are retrieved they are printed to standard output for -# further processing. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getConfigSectionNames { - - # Define absolute path to configuration file we want to retrieve - # section names from. - local CONFIGURATION_FILE=${1} - - # Verify existence of configuration file. - tcar_checkFiles -ef ${CONFIGURATION_FILE} - - # Define regular expression pattern used to retrieve section names - # from configuration files. Don't permit any regular expression - # meta-character either. - local CONFIGURATION_SECTION_REGEX='^\[[[:alnum:]_.-]+\][[:space:]]*$' - - # Output all section names without brackets, one per line. Don't - # permit any kind of expansion here. Section names are used as - # reference to retrieve information from configuration file, - # expanding them would create different points of verifications. - egrep ${CONFIGURATION_SECTION_REGEX} ${CONFIGURATION_FILE} \ - | sed -r 's,\[(.+)\],\1,' - -} diff --git a/Scripts/tcar_getConfigValue.sh b/Scripts/tcar_getConfigValue.sh deleted file mode 100755 index 9b2f32f..0000000 --- a/Scripts/tcar_getConfigValue.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getConfigValue.sh -- This function standardizes the way -# configuration values are retrieved from configuration files. As -# arguments, the configuration file absolute path, the configuration -# section name, and the configuration option name must be provided. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getConfigValue { - - local CONFIGURATION_FILE="${1}" - - local CONFIGURATION_SECTION="${2}" - - local CONFIGURATION_OPTION="${3}" - - local CONFIGURATION_LINES=$(tcar_getConfigLines \ - "${CONFIGURATION_FILE}" "${CONFIGURATION_SECTION}" "${CONFIGURATION_OPTION}") - - for CONFIGURATION_LINE in "${CONFIGURATION_LINES}";do - - local CONFIGURATION_VALUE=$(echo "${CONFIGURATION_LINE}" \ - | cut -d= -f2- | sed -r -e 's/"//g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - - eval echo ${CONFIGURATION_VALUE} - - done - - -} diff --git a/Scripts/tcar_getFileExtension.sh b/Scripts/tcar_getFileExtension.sh deleted file mode 100755 index b00cb26..0000000 --- a/Scripts/tcar_getFileExtension.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getFileExtension.sh -- This function retrieves the extension -# of a file. -# -# Written by: -# * Alain Reguera Delgado , 2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getFileExtension { - - basename ${1} | sed -r 's/.+\.([[:alnum:]]+)$/\1/' - -} diff --git a/Scripts/tcar_getFileName.sh b/Scripts/tcar_getFileName.sh deleted file mode 100755 index 99bfb76..0000000 --- a/Scripts/tcar_getFileName.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getFileName.sh -- This function retrieves the name of a file. -# -# Written by: -# * Alain Reguera Delgado , 2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getFileName { - - basename ${1} | sed -r 's/\.([[:alnum:]]+)$//' - -} diff --git a/Scripts/tcar_getFilesList.sh b/Scripts/tcar_getFilesList.sh deleted file mode 100755 index 6bd611a..0000000 --- a/Scripts/tcar_getFilesList.sh +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getFilesList.sh -- This function standardizes the way list of -# files are built inside centos-art.sh script. This function outputs -# a sorted and unique list of files based on the options and -# locations passed as argument. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getFilesList { - - # Define short options. - local ARGSS='' - - # Define long options. - local ARGSL='pattern:,mindepth:,maxdepth:,type:,uid:' - - # Initialize pattern used to reduce the find output. - local PATTERN="${TCAR_FLAG_FILTER}" - - # Initialize options used with find command. - local OPTIONS='' - - # Initialize arguments with an empty value and set it as local - # variable to this function scope. Doing this is very important to - # avoid any clash with higher execution environments. - local TCAR_MODULE_ARGUMENT='' - - # Process all arguments currently available in this function - # environment. If either ARGSS or ARGSL local variables have been - # defined, argument processing goes through getopt for validation. - tcar_setModuleArguments "${@}" - - # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. - eval set -- "${TCAR_MODULE_ARGUMENT}" - - while true;do - case "${1}" in - - --pattern ) - PATTERN="${2}" - shift 2 - ;; - - --maxdepth ) - OPTIONS="${OPTIONS} -maxdepth ${2}" - shift 2 - ;; - - --mindepth ) - OPTIONS="${OPTIONS} -mindepth ${2}" - shift 2 - ;; - - --type ) - OPTIONS="${OPTIONS} -type ${2}" - shift 2 - ;; - - --uid ) - OPTIONS="${OPTIONS} -uid ${2}" - shift 2 - ;; - - -- ) - shift 1 - break - ;; - esac - done - - # At this point all options arguments have been processed and - # removed from positional parameters. Only non-option arguments - # remain so we use them as source location for find command to - # look files for. - - # Verify that locations does exist. - tcar_checkFiles -e ${@} - - # Redefine pattern as regular expression. When we use regular - # expressions with find, regular expressions are evaluated against - # the whole file path. This way, when the regular expression is - # specified, we need to build it in a way that matches the whole - # path we are using. Doing so, every time we pass the `--filter' - # option in the command-line could be a tedious task. Instead, in - # the sake of reducing some typing, we prepare the regular - # expression here to match the whole path using the regular - # expression provided by the user as pattern. Do not use locations - # as part of regular expression so it could be possible to use - # path expansion. Using path expansion reduce the amount of - # places to find out things and so the time required to finish the - # task. - # - # Don't do such path expansion here. Instead, do it when you call - # this function. Otherwise you would be prohibiting the - # application of exact patterns. - #PATTERN="^/.*${PATTERN}$" - - # Define list of files to process. At this point we cannot verify - # whether the location is a directory or a file since path - # expansion could be introduced to it. The best we can do is - # verifying exit status and go on. - find ${@} -regextype posix-egrep ${OPTIONS} -regex "${PATTERN}" | sort | uniq - -} diff --git a/Scripts/tcar_getPathComponent.sh b/Scripts/tcar_getPathComponent.sh deleted file mode 100755 index d006768..0000000 --- a/Scripts/tcar_getPathComponent.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getPathComponent.sh -- This function standardizes the way -# directory structures are organized inside the working copy of -# CentOS Artwork Repository. You can use this function to retrieve -# information from paths (e.g., releases, architectures and theme -# artistic motifs) or the patterns used to build the paths. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getPathComponent { - - # Define short options. - local ARGSS='' - - # Define long options. - local ARGSL='release,release-major,release-minor,release-pattern,architecture,architecture-pattern,motif,motif-name,motif-version,motif-pattern,repo-dir' - - # Define release pattern. - local VERSION="(([[:digit:]]+)(\.([[:digit:]]+))?)" - - # Define architecture pattern. Make it match the architectures the - # CentOS distribution is able to be installed on. - local ARCHITECTURE="(i386|x86_64)" - - # Define regular expression pattern that match the theme artistic - # motif component inside the path strings. - local THEME_MOTIF="Themes/Motifs/(([[:alnum:]]+)/(${VERSION}))" - - # Initialize arguments with an empty value and set it as local - # variable to this function scope. Doing this is very important to - # avoid any clash with higher execution environments. - local TCAR_MODULE_ARGUMENT='' - - # Process all arguments currently available in this function - # environment. If either ARGSS or ARGSL local variables have been - # defined, argument processing goes through getopt for validation. - tcar_setModuleArguments "${@}" - - # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. - eval set -- "${TCAR_MODULE_ARGUMENT}" - - # Define location we want to apply verifications to. - local LOCATION=$(echo ${@} | sed -r 's!^.*--[[:space:]](.+)$!\1!') - - # Look for options passed through positional parameters. - while true;do - - case "${1}" in - - --release ) - echo "${LOCATION}" | egrep "${VERSION}" | sed -r "s!.*/${VERSION}/.*!\1!" - shift 1 - break - ;; - - --release-major ) - echo "${LOCATION}" | egrep "${VERSION}" | sed -r "s!.*/${VERSION}/.*!\2!" - shift 1 - break - ;; - - --release-minor ) - echo "${LOCATION}" | egrep "${VERSION}" | sed -r "s!.*/${VERSION}/.*!\4!" - shift 1 - break - ;; - - --release-pattern ) - echo "${VERSION}" - shift 1 - break - ;; - - --architecture ) - echo "${LOCATION}" | egrep "${ARCHITECTURE}" | sed -r "s!${ARCHITECTURE}!\1!" - shift 1 - break - ;; - - --architecture-pattern ) - echo "${ARCHITECTURE}" - shift 1 - break - ;; - - --motif ) - echo "${LOCATION}" | egrep "${THEME_MOTIF}" | sed -r "s!.*${THEME_MOTIF}.*!\1!" - shift 1 - break - ;; - - --motif-name ) - echo "${LOCATION}" | egrep "${THEME_MOTIF}" | sed -r "s!.*${THEME_MOTIF}.*!\2!" - shift 1 - break - ;; - - --motif-version ) - echo "${LOCATION}" | egrep "${THEME_MOTIF}" | sed -r "s!.*${THEME_MOTIF}.*!\3!" - shift 1 - break - ;; - - --motif-pattern ) - echo "${THEME_MOTIF}" - shift 1 - break - ;; - - --repo-dir ) - echo "${LOCATION}" | sed "s,${TCAR_USER_WRKDIR}/,," - shift 1 - break - ;; - - esac - - done - -} diff --git a/Scripts/tcar_getRepoName.sh b/Scripts/tcar_getRepoName.sh deleted file mode 100755 index b572bf0..0000000 --- a/Scripts/tcar_getRepoName.sh +++ /dev/null @@ -1,135 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getRepoName.sh -- This function standardizes files and -# directories name convection inside the working copy of CentOS -# Artowrk Repository. As convection, regular files are written in -# lower-case and directories are written capitalized. Use this -# function to sanitate the name of regular files and directories on -# paths you work with. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getRepoName { - - # Define the name we want to apply verifications to. - local NAME="${1}" - - # Avoid using options as it were names. When name value is empty - # but an option is provided, the option becomes the first - # positional argument and is evaluated as it were a name which is - # something we need to prevent from happening. - if [[ ${NAME} =~ '^-' ]];then - return - fi - - # Look for options passed through positional parameters. - case "${2}" in - - -f|--basename ) - - # Reduce the path passed to use just the non-directory - # part of it (i.e., the last component in the path; _not_ - # the last "real" directory in the path). - NAME=$(basename ${NAME}) - - # Clean value. - NAME=$(echo ${NAME} \ - | tr -s ' ' '_' \ - | tr '[:upper:]' '[:lower:]') - ;; - - -d|--dirname ) - - local DIR='' - local DIRS='' - local CLEANDIRS='' - local PREFIXDIR='' - - # In order to sanitate each directory in a path, it is - # required to break off the path string so each component - # can be worked out individually and later combine them - # back to create a clean path string. - - # Reduce path information passed to use the directory part - # of it only. Of course, this is applied if there is a - # directory part in the path. Assuming there is no - # directory part but a non-empty value in the path, use - # that value as directory part and clean it up. - if [[ ${NAME} =~ '.+/.+' ]];then - - # When path information is reduced, we need to - # consider that absolute paths contain some - # directories outside the working copy directory - # structure that shouldn't be sanitized (e.g., /home, - # /home/centos, /home/centos/artwork, - # /home/centos/artwork/turnk, trunk, etc.) So, we keep - # them unchanged for later use. - PREFIXDIR=$(echo ${NAME} \ - | sed -r "s,^((${TCAR_USER_WRKDIR}/)?(trunk|branches|tags)/)?.+$,\1,") - - # ... and remove them from the path information we do - # want to sanitate. - DIRS=$(dirname "${NAME}" \ - | sed -r "s!^${PREFIXDIR}!!" \ - | tr '/' ' ') - - else - - # At this point, there is not directory part in the - # information passed, so use the value passed as - # directory part as such. - DIRS=${NAME} - - fi - - for DIR in ${DIRS};do - - # Sanitate directory component. - if [[ ${DIR} =~ '^[a-z]' ]];then - DIR=$(echo ${DIR} \ - | tr -s ' ' '_' \ - | tr '[:upper:]' '[:lower:]' \ - | sed -r 's/^([[:alpha:]])/\u\1/') - fi - - # Rebuild path using sanitized values. - CLEANDIRS="${CLEANDIRS}/${DIR}" - - done - - # Redefine path using sanitized values. - NAME=$(echo ${CLEANDIRS} | sed -r "s!^/!!") - - # Add prefix directory information to sanitate path - # information. - if [[ "${PREFIXDIR}" != '' ]];then - NAME=${PREFIXDIR}${NAME} - fi - ;; - - esac - - # Print out the clean path string. - echo ${NAME} - -} diff --git a/Scripts/tcar_getTemporalFile.sh b/Scripts/tcar_getTemporalFile.sh deleted file mode 100755 index b182513..0000000 --- a/Scripts/tcar_getTemporalFile.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_getTemporalFile.sh -- This function returns the absolute path -# you need to use to create temporal files. Use this function -# whenever you need to create temporal files inside centos-art.sh -# script. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_getTemporalFile { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - # Define base name for temporal file. This is required when svg - # instances are created previous to be parsed by inkscape in order - # to be exported as png. In such cases .svg file extension is - # required in order to avoid complains from inkscape. - local FILENAME="${RANDOM}${RANDOM}-$(tcar_getRepoName ${1} -f)" - - # Check default base name for temporal file, it can't be an empty - # value. - if [[ -z "${FILENAME}" ]];then - tcar_printMessage "`gettext "The first argument cannot be empty."`" --as-error-line - fi - - # Define absolute path for temporal file and send it out to - # standard output. - echo "${TCAR_SCRIPT_TEMPDIR}/${FILENAME}" - -} diff --git a/Scripts/tcar_printCaller.sh b/Scripts/tcar_printCaller.sh deleted file mode 100755 index 1ceab89..0000000 --- a/Scripts/tcar_printCaller.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printCaller.sh -- This function standardizes the way caller -# information is retrieved. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printCaller { - - local EXPR=${1} - local OPTS=${2} - - case ${OPTS} in - - --line ) - caller ${EXPR} | gawk '{ print $1 }' - ;; - - --name ) - caller ${EXPR} | gawk '{ print $2 }' - ;; - - --path ) - caller ${EXPR} | gawk '{ print $3 }' - ;; - - * ) - # Define where the error was originated inside the - # centos-art.sh script. Print out the function name and - # line from the caller. - caller ${EXPR} | gawk '{ print $2 " L." $1 }' - ;; - - esac - -} diff --git a/Scripts/tcar_printCopyrightInfo.sh b/Scripts/tcar_printCopyrightInfo.sh deleted file mode 100755 index f50c4cd..0000000 --- a/Scripts/tcar_printCopyrightInfo.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printCopyrightInfo.sh -- This function standardizes the -# copyright information printed on content produced by centos-art.sh -# script. -# -# As far as I understand, the copyright exists to make people create -# more. The copyright gives creators the legal power over their -# creations and so the freedom to distribute them under the ethical -# terms the creator considers better. At this moment I don't feel -# very confident about this legal affairs and their legal -# implications, but I need to decide what copyright information the -# centos-art.sh script will print out when someone request -# information about it. So, in that sake, I am using The CentOS -# Artwork SIG as copyright holder and the GNU Public License, -# version 2 or any later, for software distribution. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printCopyrightInfo { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - case "${1}" in - - --license ) - - # Print the license name. - echo "`gettext "Creative Common Attribution-ShareAlike 3.0 License"`" - ;; - - --license-url ) - - # Print the url related to license name. - tcar_printUrl --cc-sharealike - ;; - - --first-year ) - - # The former year when I (as collaborator of The CentOS - # Project) started to consolidate The CentOS Project - # Corporate Visual Identity through the CentOS Artwork - # Repository. - echo '2009' - ;; - - --year|--last-year) - - # The last year when The CentOS Project stopped working in - # its Corporate Visual Identity through the CentOS Artwork - # Repository. That is something that I hope never happens, - # so assume the current year as last working year. - date +%Y - ;; - - --years-range ) - - local FIRST_YEAR=$(tcar_printCopyrightInfo --first-year) - local LAST_YEAR=$(tcar_printCopyrightInfo --last-year) - echo "${FIRST_YEAR}-${LAST_YEAR}" - ;; - - --years-list ) - - local FIRST_YEAR=$(tcar_printCopyrightInfo --first-year) - local LAST_YEAR=$(tcar_printCopyrightInfo --last-year) - - # Define full copyright year string based on first and - # last year. - local FULL_YEAR=$(\ - while [[ ${FIRST_YEAR} -le ${LAST_YEAR} ]];do - echo -n "${FIRST_YEAR}, " - FIRST_YEAR=$((${FIRST_YEAR} + 1)) - done) - - # Prepare full copyright year string and print it out. - echo "${FULL_YEAR}" | sed 's!, *$!!' - ;; - - --holder ) - - # Print centos-art.sh script default copyright holder. Be - # pragmatic about this information, please. The CentOS - # Project exists to produce The CentOS Distribution, not - # centos-art.sh script. Nevertheless, The CentOS Artwork - # SIG is an organizational unit of The CentOS Project - # which is focused on producing The CentOS Project - # corporate visual identity, by means of The CentOS - # Artwork Repository. The centos-art.sh script automates - # frequent tasks inside The CentOS Artwork Repository so, - # based on these considerations, the copyright holder of - # the centos-art.sh script is "closer" to be The CentOS - # Artwork SIG than it would be The CentOS Project. These - # are the logical choosing ideas behind the copyright - # holder of centos-art.sh script. - echo "The CentOS Artwork SIG" - ;; - - --holder-predicate ) - - local HOLDER=$(tcar_printCopyrightInfo --holder) - echo "${HOLDER}. `gettext "All rights reserved."`" - ;; - - * ) - - local YEAR=$(tcar_printCopyrightInfo --last-year) - local HOLDER=$(tcar_printCopyrightInfo --holder) - echo "Copyright © ${YEAR} ${HOLDER}" - ;; - - esac - -} diff --git a/Scripts/tcar_printFile.sh b/Scripts/tcar_printFile.sh deleted file mode 100755 index 303133e..0000000 --- a/Scripts/tcar_printFile.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printFile.sh -- This function standardizes the way files are -# concatenated inside centos-art.sh script. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printFile { - - # Define absolute path to file you want to print. Take into - # consideration that this file might be out of the repository - # (e.g., it would be a temporal file stored under - # /tmp/centos-art-XXXXXX/ directory). - local FILE="${1}" - - tcar_checkFiles -ef ${FILE} - - if [[ $(/usr/bin/file -b -i ${FILE}) =~ '^application/x-gzip$' ]];then - /bin/zcat ${FILE} - elif [[ $(/usr/bin/file -b -i ${FILE}) =~ '^application/x-bzip2$' ]];then - /bin/bzcat ${FILE} - else - /bin/cat ${FILE} - fi - -} diff --git a/Scripts/tcar_printHelp.sh b/Scripts/tcar_printHelp.sh deleted file mode 100755 index f585eb7..0000000 --- a/Scripts/tcar_printHelp.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printHelp.sh -- This function standardizes the way -# centos-art.sh script prints help about itself. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printHelp { - - # Retrieve the man page name. This is the file name you want to retrieve - # documentation for. This value is optional. When it is not passed, the - # module name is used. - local TCAR_MANPAGE_NAME="${1:-${TCAR_MODULE_NAME}}" - - # When the module name has not been set and the tcar_printHelp - # function is called from centos-art.sh file, the page name come - # with with --help as opening string and probably as - # --help=filename.sh. In the first case it prints the script - # documentation. In the second case it prints documentation for - # the file specified. - if [[ -z ${TCAR_MODULE_NAME} ]];then - if [[ ${TCAR_MANPAGE_NAME} =~ '^--help=[[:alnum:]_-.]+' ]];then - TCAR_MANPAGE_NAME=$(echo ${TCAR_MANPAGE_NAME} | cut -d'=' -f2) - else - TCAR_MANPAGE_NAME=${TCAR_SCRIPT_NAME} - fi - fi - - # Print requested documentation. - /usr/bin/man -M ${TCAR_SCRIPT_DIR_MANUALS}:${TCAR_MODULE_DIR_MANUALS}/Final "${TCAR_MANPAGE_NAME}" - - # Finish script execution successfully. - exit 0 - -} diff --git a/Scripts/tcar_printMailingList.sh b/Scripts/tcar_printMailingList.sh deleted file mode 100755 index 3bac5a4..0000000 --- a/Scripts/tcar_printMailingList.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printMailingList.sh -- This function standardizes the way -# mailing list addresses are printed on content produced by -# centos-art.sh script. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printMailingList { - - local MAILADDRS='' - - # Define short options. - local ARGSS='' - - # Define long options. - local ARGSL='as-html-link:,docs' - - # Initialize arguments with an empty value and set it as local - # variable to this function scope. Doing this is very important to - # avoid any clash with higher execution environments. - local TCAR_MODULE_ARGUMENT='' - - # Process all arguments currently available in this function - # environment. If either ARGSS or ARGSL local variables have been - # defined, argument processing goes through getopt for validation. - tcar_setModuleArguments "${@}" - - # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. - eval set -- "${TCAR_MODULE_ARGUMENT}" - - # Look for options passed through command-line. - while true; do - case "${1}" in - - --docs ) - MAILADDRS="${TCAR_BRAND}-docs@$(tcar_printUrl --domain)" - shift 1 - ;; - - --as-html-link ) - MAILADDRS="${2}" - shift 2 - ;; - - -- ) - - shift 1 - break - ;; - esac - done - - # Print mail address. - echo "${MAILADDRS}" - -} diff --git a/Scripts/tcar_printMessage.sh b/Scripts/tcar_printMessage.sh deleted file mode 100755 index 6e9914a..0000000 --- a/Scripts/tcar_printMessage.sh +++ /dev/null @@ -1,304 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printMessage.sh -- This function standardizes the way messages -# are printed by centos-art.sh script. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printMessage { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - local MESSAGE="${1}" - local FORMAT="${2}" - - # Verify message variable, it cannot have an empty value. - if [[ -z ${MESSAGE} ]];then - tcar_printMessage "`gettext "The message cannot be empty."`" --as-error-line - fi - - # Define message horizontal width. This is the max number of - # horizontal characters the message will use to be displayed on - # the screen. - local MESSAGE_WIDTH=66 - - # Remove empty spaces from message. - MESSAGE=$(printf %s "${MESSAGE}" | sed -r -e 's!^[[:space:]]+!!') - - # Print messages that will always be printed no matter what value - # the TCAR_FLAG_QUIET variable has. - case "${FORMAT}" in - - --as-stdout-line* ) - - local MARGIN_LEFT=15 - if [[ ${FORMAT} =~ '--as-stdout-line=[[:digit:]]+' ]];then - MARGIN_LEFT=$(echo ${FORMAT} | cut -d'=' -f2) - fi - - # Default printing format. This is the format used when no - # other specification is passed to this function. As - # convenience, we transform absolute paths into relative - # paths in order to free horizontal space on final output - # messages. - printf %s "${MESSAGE}" | sed -r \ - -e "s!${TCAR_BASEDIR}/!!g" \ - -e "s!> /!> !g" \ - -e "s!/{2,}!/!g" \ - | gawk 'BEGIN { FS=": " } - { - if ( $0 ~ /^-+$/ ) - print $0 - else - printf "%-'${MARGIN_LEFT}'s\t%s\n", $1, $2 - } - END {}' - ;; - - --as-error-line ) - - # Build the error trail. This is very useful for tracking - # the error down. - tcar_printMessage '-' --as-separator-line - tcar_printMessage "${FUNCNAME[*]}" --as-tree-line - - # Build the error message. - tcar_printMessage '-' --as-separator-line - tcar_printMessage "$(tcar_printCaller 1) ${MESSAGE}" --as-stderr-line - tcar_printMessage '-' --as-separator-line - - # Finish script execution with exit status 1 (SIGHUP) to - # imply the script finished because an error. We are - # using this as convention to finish the script execution. - # So, don't remove the following line, please. - exit 1 - ;; - - --as-debugger-line ) - if [[ ${TCAR_FLAG_DEBUG} == 'true' ]];then - tcar_printMessage "$(date +"%c") ${MESSAGE}" --as-stdout-line=60 - else - return - fi - ;; - - --as-tree-line ) - local NAME - local -a FN - for NAME in ${MESSAGE};do - FN[++((${#FN[*]}))]=${NAME} - done - local COUNT=$(( ${#FN[*]} - 2 )) - local SEPARATOR='`--' - local SPACES=0 - echo "${TCAR_SCRIPT_BASEDIR}/${TCAR_SCRIPT_NAME}" 1>&2 - while [[ ${COUNT} -gt 0 ]];do - if [[ ${COUNT} -eq $(( ${#FN[*]} - 2 )) ]];then - echo ${SEPARATOR} ${FN[${COUNT}]} 1>&2 - else - echo ${FN[${COUNT}]} \ - | gawk '{ printf "%'${SPACES}'s%s %s\n", "", "'${SEPARATOR}'", $1 }' 1>&2 - fi - COUNT=$((${COUNT} - 1)) - SPACES=$((${SPACES} + 4)) - done - ;; - - --as-toknowmore-line ) - tcar_printMessage "`gettext "To know more, run"` ${TCAR_SCRIPT_COMMAND} ${MESSAGE} --help" --as-stderr-line - ;; - - --as-yesornorequest-line ) - - # Define positive answer. - local Y="`gettext "yes"`" - - # Define negative answer. - local N="`gettext "no"`" - - # Define default answer. - local ANSWER=${N} - - if [[ ${TCAR_FLAG_YES} == 'true' ]];then - - ANSWER=${Y} - - else - - # Print the question to standard error. - tcar_printMessage "${MESSAGE} [${Y}/${N}]" --as-request-line - - # Redefine default answer based on user's input. - read ANSWER - - fi - - # Verify user's answer. Only positive answer let the - # script flow to continue. Otherwise, if something - # different from positive answer is passed, the script - # terminates its execution immediately. - if [[ ! ${ANSWER} =~ "^${Y}" ]];then - exit - fi - ;; - - --as-selection-line ) - # Create selection based on message. - local NAME='' - select NAME in ${MESSAGE};do - echo ${NAME} - break - done - ;; - - --as-response-line ) - tcar_printMessage "--> ${MESSAGE}" --as-stderr-line - ;; - - --as-request-line ) - tcar_printMessage "${MESSAGE}:\040" --as-notrailingnew-line - ;; - - --as-notrailingnew-line ) - echo -e -n "${MESSAGE}" | sed -r \ - -e "s!${TCAR_BASEDIR}/!!g" 1>&2 - ;; - - --as-stderr-line ) - echo "${MESSAGE}" | sed -r \ - -e "s!${TCAR_BASEDIR}/!!g" 1>&2 - ;; - - esac - - # Verify quiet option. The quiet option controls whether messages - # are printed or not. - if [[ "${TCAR_FLAG_QUIET}" == 'true' ]];then - return - fi - - # Print messages that will be printed only when the TCAR_FLAG_QUIET - # variable is provided to centos-art.sh script. - case "${FORMAT}" in - - --as-separator-line ) - - # Build the separator line. - MESSAGE=$(\ - until [[ ${MESSAGE_WIDTH} -eq 0 ]];do - echo -n "$(echo ${MESSAGE} | sed -r 's!(.).*!\1!')" - MESSAGE_WIDTH=$((${MESSAGE_WIDTH} - 1)) - done) - - # Draw the separator line. - echo "${MESSAGE}" 1>&2 - ;; - - --as-banner-line ) - tcar_printMessage '-' --as-separator-line - tcar_printMessage "${MESSAGE}" --as-stdout-line - tcar_printMessage '-' --as-separator-line - ;; - - --as-processing-line ) - tcar_printMessage "`gettext "Processing"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-cropping-line ) - tcar_printMessage "`gettext "Cropping from"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-tuningup-line ) - tcar_printMessage "`gettext "Tuning-up"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-checking-line ) - tcar_printMessage "`gettext "Checking"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-combining-line ) - tcar_printMessage "`gettext "Combining"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-editing-line ) - tcar_printMessage "`gettext "Editing"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-creating-line | --as-updating-line ) - if [[ -a "${MESSAGE}" ]];then - tcar_printMessage "`gettext "Updating"`: ${MESSAGE}" --as-stdout-line - else - tcar_printMessage "`gettext "Creating"`: ${MESSAGE}" --as-stdout-line - fi - ;; - - --as-deleting-line ) - tcar_printMessage "`gettext "Deleting"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-reading-line ) - tcar_printMessage "`gettext "Reading"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-savedas-line ) - tcar_printMessage "`gettext "Saved as"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-linkto-line ) - tcar_printMessage "`gettext "Linked to"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-movedto-line ) - tcar_printMessage "`gettext "Moved to"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-translation-line ) - tcar_printMessage "`gettext "Translation"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-translating-line ) - tcar_printMessage "`gettext "Translating"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-validating-line ) - tcar_printMessage "`gettext "Validating"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-template-line ) - tcar_printMessage "`gettext "Template"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-configuration-line ) - tcar_printMessage "`gettext "Configuration"`: ${MESSAGE}" --as-stdout-line - ;; - - --as-palette-line ) - tcar_printMessage "`gettext "Palette"`: ${MESSAGE}" --as-stdout-line - ;; - - esac - -} diff --git a/Scripts/tcar_printUrl.sh b/Scripts/tcar_printUrl.sh deleted file mode 100755 index ec9c7a2..0000000 --- a/Scripts/tcar_printUrl.sh +++ /dev/null @@ -1,150 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printUrl.sh -- This function standardizes the way URLs are -# printed by centos-art.sh script. This function describes the -# domain organization of The CentOS Project through its URLs and -# provides a way to print them out when needed. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printUrl { - - local URL='' - - # Define short options. - local ARGSS='' - - # Define long options. - local ARGSL='domain,home,lists,wiki,forums,bugs,planet,docs,mirrors,projects,svn,trac,irc,cc-sharealike,with-locale,as-html-link' - - # Initialize arguments with an empty value and set it as local - # variable to this function scope. Doing this is very important to - # avoid any clash with higher execution environments. - local TCAR_MODULE_ARGUMENT='' - - # Process all arguments currently available in this function - # environment. If either ARGSS or ARGSL local variables have been - # defined, argument processing goes through getopt for validation. - tcar_setModuleArguments "${@}" - - # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. - eval set -- "${TCAR_MODULE_ARGUMENT}" - - # Look for options passed through command-line. - while true; do - case "${1}" in - - --domain ) - URL="centos.org" - shift 1 - ;; - - --home ) - URL="http://www.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --lists ) - URL="http://lists.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --wiki ) - URL="http://wiki.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --forums ) - URL="http://forums.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --bugs ) - URL="http://bugs.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --projects ) - URL="https://projects.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --svn ) - URL="$(tcar_printUrl --projects)svn/" - shift 1 - ;; - - --trac ) - URL="$(tcar_printUrl --projects)trac/" - shift 1 - ;; - - --planet ) - URL="http://planet.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --docs ) - URL="http://docs.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --mirrors ) - URL="http://mirrors.$(tcar_printUrl --domain)/" - shift 1 - ;; - - --irc ) - URL="http://$(tcar_printUrl --home)modules/tinycontent/index.php?id=8" - shift 1 - ;; - - --cc-sharealike ) - URL="http://creativecommons.org/licenses/by-sa/3.0/" - shift 1 - ;; - - --with-locale ) - if [[ ! ${LANG} =~ '^en' ]];then - URL="${URL}${TCAR_SCRIPT_LANG_LL}/" - fi - shift 1 - ;; - - --as-html-link ) - URL="${URL}" - shift 1 - ;; - - -- ) - - shift 1 - break - ;; - esac - done - - # Print Url. - echo "${URL}" - -} diff --git a/Scripts/tcar_printVersion.sh b/Scripts/tcar_printVersion.sh deleted file mode 100755 index d9c1cda..0000000 --- a/Scripts/tcar_printVersion.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_printVersion.sh -- This function standardizes the way -# centos-art.sh script prints version about itself. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_printVersion { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - local PROGRAM_NAME=${1:-${TCAR_SCRIPT_NAME}} - local YEAR=$(tcar_printCopyrightInfo --year) - local HOLDER=$(tcar_printCopyrightInfo --holder) - - if [[ ${PROGRAM_NAME} == ${TCAR_SCRIPT_NAME} ]];then - tcar_printMessage "${TCAR_SCRIPT_NAME} ${TCAR_SCRIPT_VERSION}" --as-stdout-line - else - tcar_printMessage "${PROGRAM_NAME} (${TCAR_SCRIPT_NAME}) ${TCAR_SCRIPT_VERSION}" --as-stdout-line - fi - tcar_printMessage "Copyright (C) ${YEAR} ${HOLDER}" --as-stdout-line - tcar_printMessage "`eval_gettext "\\\$PROGRAM_NAME comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of \\\$PROGRAM_NAME under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING."`" --as-stdout-line | fold --width=66 --spaces - - exit 0 - -} diff --git a/Scripts/tcar_setModuleArguments.sh b/Scripts/tcar_setModuleArguments.sh deleted file mode 100755 index 8926cd4..0000000 --- a/Scripts/tcar_setModuleArguments.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_setModuleArguments.sh -- This function uses getopt to process -# arguments passed to centos-art.sh script. -# -# This function works with the following three variables: -# -# ARGSS -# Stores getopt short arguments definition. -# -# ARGSL -# Stores getopt long arguments definition. -# -# TCAR_MODULE_ARGUMENT -# Stores arguments passed to functions or command-line -# interface depending the context it is defined. -# -# These three variables are not defined in this function but the -# function environment you want to provide option parsing for, -# through getopt command. Using local definition for these three -# variables let you to nest option parsing inside different -# function-environment levels. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_setModuleArguments { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - local ARGUMENT='' - - # Fill up arguments global variable with current positional - # parameter information. To avoid interpretation problems, use - # single quotes to enclose each argument (TCAR_MODULE_ARGUMENT) from - # command-line individually. - for ARGUMENT in "${@}"; do - - # Remove any single quote from arguments passed to - # centos-art.sh script. We will use single quotes for grouping - # option values so white space can be passed through them. - ARGUMENT=$(printf %s "${ARGUMENT}" | tr -d "'") - - # Concatenate arguments and enclose them to let getopt to - # process them when they have spaces inside. - TCAR_MODULE_ARGUMENT="${TCAR_MODULE_ARGUMENT} '${ARGUMENT}'" - - done - - # Verify non-option arguments passed to command-line. If there - # isn't any or dot is provided, redefine the TCAR_MODULE_ARGUMENT - # variable to use the current location the centos-art.sh script - # was called from. - if [[ -z "${TCAR_MODULE_ARGUMENT}" ]];then - TCAR_MODULE_ARGUMENT=${PWD} - fi - - # Verify presence of either short or long options in the - # environment. If they are present apply option validation through - # getopt. - if [[ ! -z ${ARGSS} ]] || [[ ! -z ${ARGSL} ]];then - - # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. - eval set -- "${TCAR_MODULE_ARGUMENT}" - - # Process positional parameters using getopt's option validation. - TCAR_MODULE_ARGUMENT=$(getopt -o "${ARGSS}" -l "${ARGSL}" \ - -n "${TCAR_SCRIPT_COMMAND} (${TCAR_MODULE_NAME})" -- "${@}") - - # Verify getopt's exit status and finish the script execution - # with an error message, if it failed. - if [[ $? -ne 0 ]];then - tcar_printMessage "`gettext "The argument verification failed."`" --as-error-line - fi - - fi - -} diff --git a/Scripts/tcar_setModuleEnvironment.sh b/Scripts/tcar_setModuleEnvironment.sh deleted file mode 100755 index eedc142..0000000 --- a/Scripts/tcar_setModuleEnvironment.sh +++ /dev/null @@ -1,192 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_setModuleEnvironment.sh -- This function initiates module -# environments inside the centos-art.sh script. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_setModuleEnvironment { - - local ARG_MODULE_NAME='' - local ARG_MODULE_TYPE='' - local ARG_MODULE_ARGS='' - - # Retrieve module's name and module's type from arguments passed - # through this function positional parameters. - OPTIND=1 - while getopts "m:,t:,g:" OPTION "${@}"; do - case "${OPTION}" in - m ) ARG_MODULE_NAME="${OPTARG}" ;; - t ) ARG_MODULE_TYPE="${OPTARG}" ;; - g ) ARG_MODULE_ARGS="${OPTARG} ${ARG_MODULE_ARGS}" ;; - esac - done - - # Clean up positional parameters to reflect the fact that options - # have been processed already. - shift $(( ${OPTIND} - 1 )) - - # Initialize module's global counter. - TCAR_MODULE_COUNT=${TCAR_MODULE_COUNT:-0} - - # When the last module in the chain of executed modules is the - # same module being currently executed, don't create a new - # position for it in the chain of modules. Instead, use the - # information it already has from its previous execution. In order - # for this to work, the current module must be executed as sibling - # module of other module or itself. - if [[ ${TCAR_MODULE_COUNT} -gt 0 ]];then - if [[ ${TCAR_MODULE_NAMES[((${TCAR_MODULE_COUNT} - 1))]} == ${ARG_MODULE_NAME} ]];then - if [[ ${ARG_MODULE_TYPE} == 'sibling' ]];then - tcar_printMessage '~~~~~~~~~~~~~~~~~~~~~~~~~> : '"${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT}" --as-debugger-line - ${ARG_MODULE_NAME} ${ARG_MODULE_ARGS} ${@} - return - fi - fi - fi - - tcar_printMessage '=========================>: ['${TCAR_MODULE_COUNT}'] | '${FUNCNAME[1]} --as-debugger-line - - # Define module's base directory. This is the directory where the - # initialization script is stored in. - local TCAR_MODULE_BASEDIR=${TCAR_SCRIPT_MODULES_BASEDIR} - if [[ ${#TCAR_MODULE_BASEDIRS[*]} -gt 0 ]];then - if [[ ${ARG_MODULE_TYPE} == "parent" ]];then - TCAR_MODULE_BASEDIR=${TCAR_SCRIPT_MODULES_BASEDIR} - elif [[ ${ARG_MODULE_TYPE} == "sibling" ]];then - if [[ ${TCAR_MODULE_TYPES[((${TCAR_MODULE_COUNT} - 1 ))]} == 'sibling' ]];then - TCAR_MODULE_BASEDIR=${TCAR_MODULE_BASEDIRS[((${TCAR_MODULE_COUNT}-2))]} - else - TCAR_MODULE_BASEDIR=${TCAR_MODULE_BASEDIRS[((${TCAR_MODULE_COUNT}-1))]} - fi - else - TCAR_MODULE_BASEDIR=${TCAR_MODULE_BASEDIRS[${TCAR_MODULE_COUNT}]} - fi - fi - tcar_printMessage "TCAR_MODULE_BASEDIR : ${TCAR_MODULE_BASEDIR}" --as-debugger-line - - # Define module's name. - TCAR_MODULE_NAMES[${TCAR_MODULE_COUNT}]=$(tcar_getRepoName "${ARG_MODULE_NAME:-unknown}" "-f" | cut -d '-' -f1) - local TCAR_MODULE_NAME=${TCAR_MODULE_NAMES[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_NAME : [${TCAR_MODULE_COUNT}]=${TCAR_MODULE_NAME}" --as-debugger-line - - # Define module's type. - TCAR_MODULE_TYPES[${TCAR_MODULE_COUNT}]="${ARG_MODULE_TYPE:-parent}" - local TCAR_MODULE_TYPE=${TCAR_MODULE_TYPES[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_TYPE : ${TCAR_MODULE_TYPE}" --as-debugger-line - - # Define module's arguments. This variable is used in different - # module environments to pass positional parameters from one - # environment to another using local definitions. - TCAR_MODULE_ARGUMENTS[${TCAR_MODULE_COUNT}]="${ARG_MODULE_ARGS:-} ${@}" - local TCAR_MODULE_ARGUMENT=${TCAR_MODULE_ARGUMENTS[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_ARGUMENT : ${TCAR_MODULE_ARGUMENT}" --as-debugger-line - - # Check module's name possible values. - tcar_checkModuleName - - # Define module's directory. - TCAR_MODULE_DIRS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_BASEDIR}/$(tcar_getRepoName "${TCAR_MODULE_NAME}" "-d") - local TCAR_MODULE_DIR=${TCAR_MODULE_DIRS[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_DIR : ${TCAR_MODULE_DIR}" --as-debugger-line - - # Define module's directories not reused from module's parent - # directory structure. - TCAR_MODULE_DIRS_MODULES[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR}/Modules - local TCAR_MODULE_DIR_MODULES=${TCAR_MODULE_DIRS_MODULES[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_DIR_MODULES : ${TCAR_MODULE_DIR_MODULES}" --as-debugger-line - - TCAR_MODULE_DIRS_CONFIGS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR}/Configs - local TCAR_MODULE_DIR_CONFIGS=${TCAR_MODULE_DIRS_CONFIGS[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_DIR_CONFIGS : ${TCAR_MODULE_DIR_CONFIGS}" --as-debugger-line - - # Define module's directories reused from module's parent - # directory structure. - TCAR_MODULE_DIRS_MANUALS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIRS[0]}/Manuals - local TCAR_MODULE_DIR_MANUALS=${TCAR_MODULE_DIRS_MANUALS[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_DIR_MANUALS : ${TCAR_MODULE_DIR_MANUALS}" --as-debugger-line - - TCAR_MODULE_DIRS_LOCALES[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIRS[0]}/Locales - local TCAR_MODULE_DIR_LOCALES=${TCAR_MODULE_DIRS_LOCALES[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_DIR_LOCALES : ${TCAR_MODULE_DIR_LOCALES}" --as-debugger-line - - # Define module's initialization file. - TCAR_MODULE_INIT_FILES[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR}/${TCAR_MODULE_NAME}.sh - local TCAR_MODULE_INIT_FILE=${TCAR_MODULE_INIT_FILES[${TCAR_MODULE_COUNT}]} - tcar_printMessage "TCAR_MODULE_INIT_FILE : ${TCAR_MODULE_INIT_FILE}" --as-debugger-line - - # Define module's connection with their localization files. It is - # required that gettext-specific variables be defined locally, in - # order to implement per-module localization. - local TEXTDOMAIN=$(basename ${TCAR_MODULE_INIT_FILE}) - tcar_printMessage "TEXTDOMAIN: ${TEXTDOMAIN}" --as-debugger-line - local TEXTDOMAINDIR=${TCAR_MODULE_DIR_LOCALES} - tcar_printMessage "TEXTDOMAINDIR: ${TEXTDOMAINDIR}" --as-debugger-line - - # Increment module's counter just before creating next module's - # base directory. - TCAR_MODULE_COUNT=$(( ${TCAR_MODULE_COUNT} + 1 )) - - # Define next module's base directory. - TCAR_MODULE_BASEDIRS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR_MODULES} - - # Check function script execution rights. - tcar_checkFiles -ex ${TCAR_MODULE_INIT_FILE} - - # Load module-specific (function) scripts into current execution - # environment. Keep the tcar_setModuleEnvironmentScripts function - # call after all variables and arguments definitions. - tcar_setModuleEnvironmentScripts - - # Execute module's initialization script with its arguments. - tcar_printMessage '-------------------------> : '"${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT}" --as-debugger-line - ${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT} - - # Unset module-specific environment. - tcar_printMessage '<------------------------- : '"${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT}" --as-debugger-line - tcar_unsetModuleEnvironment - - # Decrement module counter just after unset unused module - # environments. - TCAR_MODULE_COUNT=$(( ${TCAR_MODULE_COUNT} - 1 )) - - # Unset array and non-array variables used in this function. - if [[ ${TCAR_MODULE_COUNT} -eq 0 ]];then - unset TCAR_MODULE_NAMES - unset TCAR_MODULE_BASEDIRS - unset TCAR_MODULE_DIRS - unset TCAR_MODULE_DIRS_MODULES - unset TCAR_MODULE_DIRS_MANUALS - unset TCAR_MODULE_DIRS_LOCALES - unset TCAR_MODULE_DIRS_CONFIGS - unset TCAR_MODULE_NAME - unset TCAR_MODULE_DIR - unset TCAR_MODULE_DIR_MODULES - unset TCAR_MODULE_DIR_MANUALS - unset TCAR_MODULE_DIR_LOCALES - unset TCAR_MODULE_DIR_CONFIGS - fi - - tcar_printMessage '<=========================: ['${TCAR_MODULE_COUNT}'] | '${FUNCNAME[1]} --as-debugger-line - -} diff --git a/Scripts/tcar_setModuleEnvironmentScripts.sh b/Scripts/tcar_setModuleEnvironmentScripts.sh deleted file mode 100755 index 270d246..0000000 --- a/Scripts/tcar_setModuleEnvironmentScripts.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_setModuleEnvironmentScripts.sh -- This function standardizes -# the way specific functionalities are exported to centos-art.sh -# script environment. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_setModuleEnvironmentScripts { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - # Define the pattern used to retrieve function names from function - # files. - local FUNCTION_PATTERN="^function[[:space:]]+${TCAR_MODULE_NAME}(_[[:alnum:]]+)?[[:space:]]+{[[:space:]]*$" - - # Define the list of files. - local TCAR_MODULE_SCRIPT='' - local TCAR_MODULE_SCRIPTS="${TCAR_MODULE_INIT_FILE}" - if [[ -d ${TCAR_MODULE_DIR} ]];then - TCAR_MODULE_SCRIPTS="${TCAR_MODULE_SCRIPTS} - $(tcar_getFilesList ${TCAR_MODULE_DIR} \ - --pattern="${TCAR_MODULE_DIR}/${TCAR_MODULE_NAME}_[[:alnum:]]+\.sh$" --type='f')" - fi - - # Verify the list of files. If no function file exists for the - # location specified stop the script execution. Otherwise the - # script will surely try to execute a function that haven't been - # exported yet and report an error about it. - if [[ -z ${TCAR_MODULE_SCRIPTS} ]];then - tcar_printMessage "${FUNCNAME}: `gettext "No function file was found."`" --as-error-line - fi - - # Process the list of files. - for TCAR_MODULE_SCRIPT in ${TCAR_MODULE_SCRIPTS};do - - # Verify the execution rights for function file. - tcar_checkFiles -ex ${TCAR_MODULE_SCRIPT} - - # Retrieve the function's name from function's file. - local TCAR_MODULE_SCRIPT_FN=$(egrep "${FUNCTION_PATTERN}" ${TCAR_MODULE_SCRIPT} \ - | gawk '{ print $2 }') - - # Verify function's name. It cannot be an empty value. - if [[ -z "${TCAR_MODULE_SCRIPT_FN}" ]];then - tcar_printMessage "`gettext "No function definition found."`" --as-error-line - fi - - # Verify that function files have not been already exported. - # If they have been already exported don't export them again. - # Instead, continue with the next function file in the list. - declare -F | gawk '{ print $3 }' | egrep "^${TCAR_MODULE_SCRIPT}$" > /dev/null - if [[ $? -eq 0 ]];then - continue - fi - - # Initialize the function file. - . ${TCAR_MODULE_SCRIPT} - - # Export the function names inside the file to current shell - # script environment. - export -f ${TCAR_MODULE_SCRIPT_FN} - - tcar_printMessage "export -f : ${TCAR_MODULE_SCRIPT_FN}" --as-debugger-line - - done - -} diff --git a/Scripts/tcar_setTranslationMarkers.sh b/Scripts/tcar_setTranslationMarkers.sh deleted file mode 100755 index 1ec018e..0000000 --- a/Scripts/tcar_setTranslationMarkers.sh +++ /dev/null @@ -1,185 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_setTranslationMarkers.sh -- This function standardizes construction -# of translation markers and their related expansion. As convention, -# translation markers must be set inside source files (e.g., -# Docbook, Svg, etc.) and expanded inside temporal instances used to -# produce final contents. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_setTranslationMarkers { - - # Initialize variables. - local -a SRC - local -a DST - local COUNT=0 - local COUNTSRC=0 - local COUNTDST=0 - - # Define source location on which sed replacements take place. - local LOCATION="${1}" - - # Verify that source location does exist. - tcar_checkFiles -ef ${LOCATION} - - # Define copyright translation markers. - SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR_FIRST=' - DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --first-year)" - SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(_LAST)?=' - DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --year)" - SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(S)?_LIST=' - DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --years-list)" - SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER=' - DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --holder)" - SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER_PREDICATE=' - DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --holder-predicate)" - - # Define license translation markers. - SRC[((++${#SRC[*]}))]='=LICENSE=' - DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --license)" - SRC[((++${#SRC[*]}))]='=LICENSE_URL=' - DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --license-url)" - - # Define theme translation markers. - SRC[((++${#SRC[*]}))]='=THEME=' - DST[((++${#DST[*]}))]="$(tcar_getPathComponent ${RENDER_TARGET} --motif)" - SRC[((++${#SRC[*]}))]='=THEMENAME=' - DST[((++${#DST[*]}))]="$(tcar_getPathComponent ${RENDER_TARGET} --motif-name)" - SRC[((++${#SRC[*]}))]='=THEMERELEASE=' - DST[((++${#DST[*]}))]="$(tcar_getPathComponent ${RENDER_TARGET} --motif-version)" - - # Define url translation markers. - SRC[((++${#SRC[*]}))]='=URL=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--home' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_WIKI=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--wiki' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_LISTS=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--lists' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_FORUMS=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--forums' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_MIRRORS=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--mirrors' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_DOCS=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--docs' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_PROJECTS=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--projects' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_BUGS=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--bugs' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_SVN=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--svn' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_TRAC=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--trac' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_PLANET=' - DST[((++${#DST[*]}))]=$(tcar_printUrl '--planet' '--with-locale') - - # Define release translation markers. - SRC[((++${#SRC[*]}))]='=RELEASE=' - DST[((++${#DST[*]}))]=${RELEASE} - SRC[((++${#SRC[*]}))]='=MAJOR_RELEASE=' - DST[((++${#DST[*]}))]=${MAJOR_RELEASE} - - # Define emails translation markers. - SRC[((++${#SRC[*]}))]='=MAIL_DOCS=' - DST[((++${#DST[*]}))]="$(tcar_printMailingList --docs)" - - # Define locale translation markers. - SRC[((++${#SRC[*]}))]='=LOCALE=' - DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_LC}" - SRC[((++${#SRC[*]}))]='=LOCALE_LL=' - DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_LL}" - SRC[((++${#SRC[*]}))]='=LOCALE_CC=' - DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_CC}" - - # Define domain translation markers for domains. - SRC[((++${#SRC[*]}))]='=DOMAIN_LL=' - if [[ ! ${TCAR_SCRIPT_LANG_LL} =~ '^en' ]];then - DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_LL}" - else - DST[((++${#DST[*]}))]="" - fi - - # Define repository translation markers. - SRC[((++${#SRC[*]}))]='=(REPO_TLDIR|REPO_HOME|TCAR_BASEDIR|TCAR_WORKDIR)=' - DST[((++${#DST[*]}))]="${TCAR_BASEDIR}" - - # Do replacement of nested translation markers. - while [[ ${COUNTDST} -lt ${#DST[@]} ]];do - - # Verify existence of translation markers. If there is no - # translation marker on replacement, continue with the next - # one in the list. - if [[ ! ${DST[${COUNTDST}]} =~ '=[A-Z_]+=' ]];then - # Increment destination counter. - COUNTDST=$((${COUNTDST} + 1)) - # The current replacement value doesn't have translation - # marker inside, so skip it and evaluate the next - # replacement value in the list. - continue - fi - - while [[ ${COUNTSRC} -lt ${#SRC[*]} ]];do - - # Update replacements. - DST[${COUNTDST}]=$(echo ${DST[${COUNTDST}]} \ - | sed -r "s!${SRC[${COUNTSRC}]}!${DST[${COUNTSRC}]}!g") - - # Increment source counter. - COUNTSRC=$((${COUNTSRC} + 1)) - - done - - # Reset source counter - COUNTSRC=0 - - # Increment destination counter. - COUNTDST=$((${COUNTDST} + 1)) - - done - - # Apply replacements for translation markers. - while [[ ${COUNT} -lt ${#SRC[*]} ]];do - - # Use sed to replace translation markers inside the design - # model instance. - sed -r -i "s!${SRC[${COUNT}]}!${DST[${COUNT}]}!g" ${LOCATION} - - # Increment counter. - COUNT=$((${COUNT} + 1)) - - done - - # Remove escaped character from translation markers. This is one - # of the reasons why translation marker should be expanded in - # source files instances not the source files themselves. - # Escaping translation markers provides a way of talking about - # them without expanding them. - sed -r -i 's/(=)\\([A-Z_]+=)/\1\2/g' ${LOCATION} - - # Unset specific translation markers and specific replacement - # variables in order to clean them up. Otherwise, undesired values - # may remain from one file to another. - unset SRC - unset DST - -} diff --git a/Scripts/tcar_terminateScriptExecution.sh b/Scripts/tcar_terminateScriptExecution.sh deleted file mode 100755 index 0f95ace..0000000 --- a/Scripts/tcar_terminateScriptExecution.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_terminateScriptExecution.sh -- This function standardizes the -# actions that must be realized just before leaving the script -# execution (e.g., cleaning temporal files). This function is the -# one called when interruption signals like EXIT, SIGHUP, SIGINT and -# SIGTERM are detected. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_terminateScriptExecution { - - # Remove temporal directory. - rm -r ${TCAR_SCRIPT_TEMPDIR} - - # NOTE: Don't specify an exit status here. As convenction we do - # this when error messages are triggerd. See `--as-error-line' - # option from `tcar_printMessage' functionality. - -} diff --git a/Scripts/tcar_unsetModuleEnvironment.sh b/Scripts/tcar_unsetModuleEnvironment.sh deleted file mode 100755 index 69d3ae3..0000000 --- a/Scripts/tcar_unsetModuleEnvironment.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -###################################################################### -# -# tcar_unsetModuleEnvironment.sh -- This function unsets -# functionalities from centos-art.sh script execution environment. -# -# Written by: -# * Alain Reguera Delgado , 2009-2013 -# -# Copyright (C) 2009-2013 The CentOS Artwork SIG -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -###################################################################### - -function tcar_unsetModuleEnvironment { - - # Define gettext-specific variables locally, to provide - # per-function localization. - local TEXTDOMAIN="${FUNCNAME}.sh" - local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" - - # Verify suffix value used to retrieve function files. - if [[ -z ${TCAR_MODULE_NAME} ]];then - tcar_printMessage "`gettext "The export id was not provided."`" --as-error-line - fi - - # Define list of format-specific functionalities. This is the list - # of function definitions previously exported by - # `tcar_setModuleEnvironmentScripts'. Be sure to limit the list - # to function names that start with the suffix specified only. - local TCAR_MODULE_SCRIPT_FN='' - local TCAR_MODULE_SCRIPT_FNS=$(declare -F | gawk '{ print $3 }' | egrep "^${TCAR_MODULE_NAME}") - - # Unset function names from current execution environment. - for TCAR_MODULE_SCRIPT_FN in ${TCAR_MODULE_SCRIPT_FNS};do - unset -f ${TCAR_MODULE_SCRIPT_FN} - tcar_printMessage "unset -f : ${TCAR_MODULE_SCRIPT_FN}" --as-debugger-line - done - -} diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/centos-art.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/centos-art.sh.po new file mode 100644 index 0000000..4daf2be --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/centos-art.sh.po @@ -0,0 +1,296 @@ +msgid "" +msgstr "" +"Project-Id-Version: centos-art.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "centos-art.sh" +msgstr "centos-art.sh" + +msgid "1" +msgstr "1" + +msgid "The CentOS artwork repository automation tool." +msgstr "The CentOS artwork repository automation tool." + +msgid "" +"centos-art.sh [--help|--version]" +msgstr "" +"centos-art.sh [--help|--version]" + +msgid "" +"Print information about centos-art.sh " +"script itself." +msgstr "" +"Print information about centos-art.sh " +"script itself." + +msgid "" +"centos-art.shMODULE [--help|--version]" +msgstr "" +"centos-art.shMODULE [--help|--version]" + +msgid "" +"Print information about the specified module. See below to see which modules centos-art.sh script supports." +msgstr "" +"Print information about the specified module. See below to see which modules centos-art.sh script supports." + +msgid "Description" +msgstr "Description" + +msgid "" +"centos-art.sh exists to standardize " +"frequent tasks inside the CentOS artwork repository. Inside centos-art.sh script, frequent tasks are organized " +"inside modules." +msgstr "" +"centos-art.sh exists to standardize " +"frequent tasks inside the CentOS artwork repository. Inside centos-art.sh script, frequent tasks are organized " +"inside modules." + +msgid "" +"When you execute the centos-art.sh " +"script in a terminal, it requests you to enter the absolute path of CentOS " +"artwork repository in your workstation. This information is required in " +"order for centos-art.sh to know where " +"the repository directory structure you want to work with is stored in. " +"Later, once centos-art.sh knows where " +"your copy of CentOS artwork repository is stored in, it initializes " +"configuration variables and global functions. At this point, it continues " +"reading the command-line arguments to retrieve the module's name, process " +"common options next to it, store module-specific options and initiates the " +"module's environment by executing the module's initialization script, based " +"on the module's name retrieved from the command-line." +msgstr "" +"When you execute the centos-art.sh " +"script in a terminal, it requests you to enter the absolute path of CentOS " +"artwork repository in your workstation. This information is required in " +"order for centos-art.sh to know where " +"the repository directory structure you want to work with is stored in. " +"Later, once centos-art.sh knows where " +"your copy of CentOS artwork repository is stored in, it initializes " +"configuration variables and global functions. At this point, it continues " +"reading the command-line arguments to retrieve the module's name, process " +"common options next to it, store module-specific options and initiates the " +"module's environment by executing the module's initialization script, based " +"on the module's name retrieved from the command-line." + +msgid "Modules" +msgstr "Modules" + +msgid "" +"The centos-art.sh script supports the " +"following modules:" +msgstr "" +"The centos-art.sh script supports the " +"following modules:" + +msgid "prepare" +msgstr "prepare" + +msgid "" +"Standardize configuration tasks needed by your working copy (e.g., verify " +"whether required packages are installed or not in your workstation, calls " +"render module to produce images and manuals in the correct order). This is " +"the first task you should run in your workstation, just after downloading a " +"fresh working copy of CentOS artwork repository." +msgstr "" +"Standardize configuration tasks needed by your working copy (e.g., verify " +"whether required packages are installed or not in your workstation, calls " +"render module to produce images and manuals in the correct order). This is " +"the first task you should run in your workstation, just after downloading a " +"fresh working copy of CentOS artwork repository." + +msgid "render" +msgstr "render" + +msgid "" +"Standardize the way content is produced inside the repository. This function " +"relies on configuration files to do its work. Whenever you need to produce " +"images, documentation or localized content this is the module you'll need to " +"use." +msgstr "" +"Standardize the way content is produced inside the repository. This function " +"relies on configuration files to do its work. Whenever you need to produce " +"images, documentation or localized content this is the module you'll need to " +"use." + +msgid "locale" +msgstr "locale" + +msgid "" +"Standardize the way translatable strings are retrieved from source files and " +"put into portable objects for you to edit. Portable objects produced by this " +"module are used by render module to " +"produce localized content. Whenever you need to produce the intermediate " +"files holding the translatable strings required to produce localized " +"content, use this module." +msgstr "" +"Standardize the way translatable strings are retrieved from source files and " +"put into portable objects for you to edit. Portable objects produced by this " +"module are used by render module to " +"produce localized content. Whenever you need to produce the intermediate " +"files holding the translatable strings required to produce localized " +"content, use this module." + +msgid "tuneup" +msgstr "tuneup" + +msgid "" +"Standardize maintenance tasks frequently run inside the repository (e.g., " +"reset written by, copyright and license information inside shell script's " +"top-comments; transform probably malformed HTML documents into valid " +"documents, and remove unused tags inside SVG documents.)." +msgstr "" +"Standardize maintenance tasks frequently run inside the repository (e.g., " +"reset written by, copyright and license information inside shell script's " +"top-comments; transform probably malformed HTML documents into valid " +"documents, and remove unused tags inside SVG documents.)." + +msgid "Options" +msgstr "Options" + +msgid "" +"The centos-art.sh script supports the " +"following options:" +msgstr "" +"The centos-art.sh script supports the " +"following options:" + +msgid "--help" +msgstr "--help" + +msgid "Print script documentation." +msgstr "Print script documentation." + +msgid "--version" +msgstr "--version" + +msgid "Print script version." +msgstr "Print script version." + +msgid "--debug" +msgstr "--debug" + +msgid "" +"Run the script in debugging mode. This option is very useful if you want to " +"get a closer look to the way modules are opened and closed inside centos-art.sh script." +msgstr "" +"Run the script in debugging mode. This option is very useful if you want to " +"get a closer look to the way modules are opened and closed inside centos-art.sh script." + +msgid "--quiet" +msgstr "--quiet" + +msgid "" +"Run the script quietly. This option reduces the amount of information the " +"centos-art.sh script prints out when " +"processing source files." +msgstr "" +"Run the script quietly. This option reduces the amount of information the " +"centos-art.sh script prints out when " +"processing source files." + +msgid "--yes" +msgstr "--yes" + +msgid "" +"Run the script in affirmative mode. This is answering “yes” to all “yes or " +"no” questions. This option is useful when you run centos-art.sh with the --quiet option." +msgstr "" +"Run the script in affirmative mode. This is answering “yes” to all “yes or " +"no” questions. This option is useful when you run centos-art.sh with the --quiet option." + +msgid "Exit Status" +msgstr "Exit Status" + +msgid "0 — Exit successfully without errors." +msgstr "0 — Exit successfully without errors." + +msgid "1 — Exit with errors." +msgstr "1 — Exit with errors." + +msgid "Bugs" +msgstr "Bugs" + +msgid "https://centos.org.cu/bugs/" +msgstr "https://centos.org.cu/bugs/" + +msgid "Author" +msgstr "Author" + +msgid "" +"The centos-art.sh script has received " +"contribution from the following people:" +msgstr "" +"The centos-art.sh script has received " +"contribution from the following people:" + +msgid "" +"Alain Reguera Delgado <al@centos." +"org.cu>, 2009-2013" +msgstr "" +"Alain Reguera Delgado <al@centos." +"org.cu>, 2009-2013" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Copyright © 2009-2013 The CentOS Artwork SIG" +msgstr "Copyright © 2009-2013 The CentOS Artwork SIG" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/tcar_checkFiles.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_checkFiles.sh.po new file mode 100644 index 0000000..585629d --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_checkFiles.sh.po @@ -0,0 +1,296 @@ +msgid "" +msgstr "" +"Project-Id-Version: tcar_checkFiles.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "tcar_checkfiles" +msgstr "tcar_checkfiles" + +msgid "1" +msgstr "1" + +msgid "tcar_checkFiles" +msgstr "tcar_checkFiles" + +msgid "Standardize constructions for file verifications." +msgstr "Standardize constructions for file verifications." + +msgid "cli_checkFiles [-d|-e|-f|-h|-x] LOCATION" +msgstr "cli_checkFiles [-d|-e|-f|-h|-x] LOCATION" + +msgid "Description" +msgstr "Description" + +msgid "" +"The cli_checkFiles exists to answer " +"basic questions like “Is LOCATION is a regular file?” and " +"“Is LOCATION a directory?”. The answer to such questions " +"affects the script execution flow in the following way: when the answer " +"positive (e.g., LOCATION is a regular file), the script " +"passes the test silently and continues its execution. When the answer is " +"negative(e.g., LOCATION is not a regular file), the " +"script finishes its execution immediately with an error message." +msgstr "" +"The cli_checkFiles exists to answer " +"basic questions like “Is LOCATION is a regular file?” and " +"“Is LOCATION a directory?”. The answer to such questions " +"affects the script execution flow in the following way: when the answer " +"positive (e.g., LOCATION is a regular file), the script " +"passes the test silently and continues its execution. When the answer is " +"negative(e.g., LOCATION is not a regular file), the " +"script finishes its execution immediately with an error message." + +msgid "" +"The cli_checkFiles function is exported " +"to centos-art.sh script environment in " +"the very beginning of its execution and will be available all along its " +"execution lifetime. You can use this function inside common and specific " +"functions whenever you need to verify files inside the The CentOS Artwork " +"Repository." +msgstr "" +"The cli_checkFiles function is exported " +"to centos-art.sh script environment in " +"the very beginning of its execution and will be available all along its " +"execution lifetime. You can use this function inside common and specific " +"functions whenever you need to verify files inside the The CentOS Artwork " +"Repository." + +msgid "" +"The cli_checkFiles function is " +"available inside the centos-art.sh " +"script only as part of its execution environment. This function is exported " +"to centos-art.sh script just after " +"executing the script from the command-line and will be available all along " +"the script lifetime. So, you can use this function both in common and " +"specific functionalities of centos-art.sh script." +msgstr "" +"The cli_checkFiles function is " +"available inside the centos-art.sh " +"script only as part of its execution environment. This function is exported " +"to centos-art.sh script just after " +"executing the script from the command-line and will be available all along " +"the script lifetime. So, you can use this function both in common and " +"specific functionalities of centos-art.sh script." + +msgid "" +"The cli_checkFiles function doesn't " +"create subsequent execution environments." +msgstr "" +"The cli_checkFiles function doesn't " +"create subsequent execution environments." + +msgid "Usage" +msgstr "Usage" + +msgid "" +"Use the cli_checkFiles function inside " +"centos-art.sh script whenever you need " +"to control the script execution flow based on file type (e.g., regular " +"files, directories, links, etc.) verifications." +msgstr "" +"Use the cli_checkFiles function inside " +"centos-art.sh script whenever you need " +"to control the script execution flow based on file type (e.g., regular " +"files, directories, links, etc.) verifications." + +msgid "Options" +msgstr "Options" + +msgid "" +"The cli_checkFiles function accepts the " +"following options:" +msgstr "" +"The cli_checkFiles function accepts the " +"following options:" + +msgid "-d" +msgstr "-d" + +msgid "" +"Verifies whether LOCATION exists and is a directory. If " +"it doesn't exists or isn't a directory, an error message is printed and the " +"script finishes its execution. Otherwise, if it exists and is a directory, " +"the script continues its execution normally." +msgstr "" +"Verifies whether LOCATION exists and is a directory. If " +"it doesn't exists or isn't a directory, an error message is printed and the " +"script finishes its execution. Otherwise, if it exists and is a directory, " +"the script continues its execution normally." + +msgid "-e" +msgstr "-e" + +msgid "" +"Verifies whether LOCATION exists or not. If it doesn't " +"exist, an error message is printed and the script finishes its execution. " +"Otherwise, if it does exists, the script continues its execution normally." +msgstr "" +"Verifies whether LOCATION exists or not. If it doesn't " +"exist, an error message is printed and the script finishes its execution. " +"Otherwise, if it does exists, the script continues its execution normally." + +msgid "-f" +msgstr "-f" + +msgid "" +"Verifies whether LOCATION exists and is a regular file. " +"If it doesn't exists or isn't a regular file, an error message is printed " +"and the script finishes its execution. Otherwise, if it exists and is a " +"regular file, the script continues its execution normally." +msgstr "" +"Verifies whether LOCATION exists and is a regular file. " +"If it doesn't exists or isn't a regular file, an error message is printed " +"and the script finishes its execution. Otherwise, if it exists and is a " +"regular file, the script continues its execution normally." + +msgid "-h" +msgstr "-h" + +msgid "" +"Verifies whether LOCATION exists and is a symbolic link. " +"If it doesn't exists or isn't a symbolic link, an error message is printed " +"and the script finishes its execution immediately. Otherwise, if it does " +"exist and is a symbolic link, the script continue its execution normally." +msgstr "" +"Verifies whether LOCATION exists and is a symbolic link. " +"If it doesn't exists or isn't a symbolic link, an error message is printed " +"and the script finishes its execution immediately. Otherwise, if it does " +"exist and is a symbolic link, the script continue its execution normally." + +msgid "-x" +msgstr "-x" + +msgid "" +"Verifies whether LOCATION exists and execution permission " +"is granted. If it doesn't exist or hasn't execution permission, the script " +"finishes its execution immediately. Otherwise, if it exists and has " +"execution permissions, the script continues its execution normally." +msgstr "" +"Verifies whether LOCATION exists and execution permission " +"is granted. If it doesn't exist or hasn't execution permission, the script " +"finishes its execution immediately. Otherwise, if it exists and has " +"execution permissions, the script continues its execution normally." + +msgid "" +"The value of the LOCATION argument must be an absolute " +"path to the file you want to verify. If such file doesn't exists in any " +"supported form, the script finishes its execution with an error message." +msgstr "" +"The value of the LOCATION argument must be an absolute " +"path to the file you want to verify. If such file doesn't exists in any " +"supported form, the script finishes its execution with an error message." + +msgid "Examples" +msgstr "Examples" + +msgid "" +"The following example was taken from centos-art." +"sh script initialization phase. Notice the position of cli_checkFiles function inside the loop. If some " +"of the function files we need to export doesn't have execution rights, " +"cli_checkFiles will finish the script " +"execution immediately with an error message." +msgstr "" +"The following example was taken from centos-art." +"sh script initialization phase. Notice the position of cli_checkFiles function inside the loop. If some " +"of the function files we need to export doesn't have execution rights, " +"cli_checkFiles will finish the script " +"execution immediately with an error message." + +#, no-wrap +msgid "" +"for FUNCFILE in ${FUNCFILES};do\n" +"\n" +" # Verify the execution rights for function file.\n" +" cli_checkFiles -x ${FUNCFILE}\n" +"\n" +" # Initialize the function file.\n" +" . ${FUNCFILE}\n" +"\n" +" # Export the function names inside the file to current shell\n" +" # script environment.\n" +" export -f $(egrep \"${PATTERN}\" ${FUNCFILE} | gawk '{ print $2 }')\n" +"\n" +"done" +msgstr "" +"for FUNCFILE in ${FUNCFILES};do\n" +"\n" +" # Verify the execution rights for function file.\n" +" cli_checkFiles -x ${FUNCFILE}\n" +"\n" +" # Initialize the function file.\n" +" . ${FUNCFILE}\n" +"\n" +" # Export the function names inside the file to current shell\n" +" # script environment.\n" +" export -f $(egrep \"${PATTERN}\" ${FUNCFILE} | gawk '{ print $2 }')\n" +"\n" +"done" + +msgid "Bugs" +msgstr "Bugs" + +msgid "See https://centos.org.cu/bugs/" +msgstr "See https://centos.org.cu/bugs/" + +msgid "Authors" +msgstr "Authors" + +msgid "" +"The tcar_checkFiles function has " +"received contributions from the following people:" +msgstr "" +"The tcar_checkFiles function has " +"received contributions from the following people:" + +msgid "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" +msgstr "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" + +msgid "License" +msgstr "License" + +msgid "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" +msgstr "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/tcar_checkRepoDirSource.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_checkRepoDirSource.sh.po new file mode 100644 index 0000000..3e3f609 --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_checkRepoDirSource.sh.po @@ -0,0 +1,125 @@ +msgid "" +msgstr "" +"Project-Id-Version: tcar_checkRepoDirSource.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "tcar_checkrepodirsource.sh" +msgstr "tcar_checkrepodirsource.sh" + +msgid "1" +msgstr "1" + +msgid "tcar_checkRepoDirSource" +msgstr "tcar_checkRepoDirSource" + +msgid "Standardize the working copy's absolute path construction." +msgstr "Standardize the working copy's absolute path construction." + +msgid "tcar_checkRepoDirSource \"LOCATION\"" +msgstr "tcar_checkRepoDirSource \"LOCATION\"" + +msgid "Description" +msgstr "Description" + +msgid "" +"The tcar_checkRepoDirSource function " +"standardizes the path construction to directories inside it the working " +"copy, using absolute paths. This function transforms relative paths passed " +"as non-option arguments to centos-art.sh script command-line into absolute paths inside the working copy " +"and verifies whether they really exist as directories inside the working " +"copy or not. If the path provided doesn't exist as directory inside the " +"working copy, the script will finish its execution immediately with an error " +"message. Otherwise, if the directory exists, the variable " +"TCAR_ARGUMENTS is redefined with the related absolute " +"path for further use." +msgstr "" +"The tcar_checkRepoDirSource function " +"standardizes the path construction to directories inside it the working " +"copy, using absolute paths. This function transforms relative paths passed " +"as non-option arguments to centos-art.sh script command-line into absolute paths inside the working copy " +"and verifies whether they really exist as directories inside the working " +"copy or not. If the path provided doesn't exist as directory inside the " +"working copy, the script will finish its execution immediately with an error " +"message. Otherwise, if the directory exists, the variable " +"TCAR_ARGUMENTS is redefined with the related absolute " +"path for further use." + +msgid "" +"Use the tcar_checkRepoDirSource " +"function whenever you need to be sure that non-option arguments passed to " +"centos-art.sh script command-line will " +"always point to directories inside the working copy." +msgstr "" +"Use the tcar_checkRepoDirSource " +"function whenever you need to be sure that non-option arguments passed to " +"centos-art.sh script command-line will " +"always point to directories inside the working copy." + +msgid "Bugs" +msgstr "Bugs" + +msgid "See https://centos.org.cu/bugs/" +msgstr "See https://centos.org.cu/bugs/" + +msgid "Authors" +msgstr "Authors" + +msgid "" +"The tcar_checkRepoDirSource function " +"has received contributions from the following people:" +msgstr "" +"The tcar_checkRepoDirSource function " +"has received contributions from the following people:" + +msgid "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" +msgstr "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" + +msgid "License" +msgstr "License" + +msgid "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" +msgstr "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/tcar_getConfigValue.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_getConfigValue.sh.po new file mode 100644 index 0000000..442eca5 --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_getConfigValue.sh.po @@ -0,0 +1,156 @@ +msgid "" +msgstr "" +"Project-Id-Version: tcar_getConfigValue.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "tcar_getconfigvalue.sh" +msgstr "tcar_getconfigvalue.sh" + +msgid "1" +msgstr "1" + +msgid "tcar_getConfigValue" +msgstr "tcar_getConfigValue" + +msgid "Standardize options retrieval from configuration files." +msgstr "Standardize options retrieval from configuration files." + +msgid "tcar_getConfigValue FILE SECTION OPTION" +msgstr "tcar_getConfigValue FILE SECTION OPTION" + +msgid "Description" +msgstr "Description" + +msgid "" +"The tcar_getConfigValue function " +"standardizes the way option values are retrieved from configuration files. " +"As convention, tcar_getConfigValue uses " +"the output produced by tcar_getConfigLines as input to retrieve the option values. As convention, in " +"option = \"value\" lines, the values retrieved are always " +"on the right side. The values retrieved are also output without quotation " +"and translation markers already expanded." +msgstr "" +"The tcar_getConfigValue function " +"standardizes the way option values are retrieved from configuration files. " +"As convention, tcar_getConfigValue uses " +"the output produced by tcar_getConfigLines as input to retrieve the option values. As convention, in " +"option = \"value\" lines, the values retrieved are always " +"on the right side. The values retrieved are also output without quotation " +"and translation markers already expanded." + +msgid "" +"The tcar_getConfigValue function " +"accepts the following arguments:" +msgstr "" +"The tcar_getConfigValue function " +"accepts the following arguments:" + +msgid "FILE" +msgstr "FILE" + +msgid "" +"This argument specifies the absolute path to the configuration file you want " +"to retrieve the value from. For example," +msgstr "" +"This argument specifies the absolute path to the configuration file you want " +"to retrieve the value from. For example," + +msgid "SECTION" +msgstr "SECTION" + +msgid "" +"This argument specifies the name of the section related to the configuration " +"line you want to retrieve the value from. For example, “symbols” without " +"brackets." +msgstr "" +"This argument specifies the name of the section related to the configuration " +"line you want to retrieve the value from. For example, “symbols” without " +"brackets." + +msgid "OPTION" +msgstr "OPTION" + +msgid "" +"This argument specifies the name of the option you want to retrieve the " +"value from." +msgstr "" +"This argument specifies the name of the option you want to retrieve the " +"value from." + +msgid "" +"Use the tcar_getConfigValue function " +"whenever you want to retrieve values from configuration files in a " +"controlled way." +msgstr "" +"Use the tcar_getConfigValue function " +"whenever you want to retrieve values from configuration files in a " +"controlled way." + +msgid "Bugs" +msgstr "Bugs" + +msgid "See https://centos.org.cu/bugs/" +msgstr "See https://centos.org.cu/bugs/" + +msgid "Authors" +msgstr "Authors" + +msgid "" +"The tcar_checkFiles function has " +"received contributions from the following people:" +msgstr "" +"The tcar_checkFiles function has " +"received contributions from the following people:" + +msgid "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" +msgstr "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" + +msgid "License" +msgstr "License" + +msgid "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" +msgstr "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/tcar_getFilesList.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_getFilesList.sh.po new file mode 100644 index 0000000..ba5bdfc --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_getFilesList.sh.po @@ -0,0 +1,236 @@ +msgid "" +msgstr "" +"Project-Id-Version: tcar_getFilesList.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "tcar_getfileslist.sh" +msgstr "tcar_getfileslist.sh" + +msgid "1" +msgstr "1" + +msgid "tcar_getFilesList" +msgstr "tcar_getFilesList" + +msgid "Create customized list of files for further processing." +msgstr "Create customized list of files for further processing." + +msgid "" +"tcar_getFilesList [--pattern|--mindepth|--maxdepth|--type|--uid] LOCATION" +msgstr "" +"tcar_getFilesList [--pattern|--mindepth|--maxdepth|--type|--uid] LOCATION" + +msgid "Description" +msgstr "Description" + +msgid "" +"The tcar_getFilesList standardizes the " +"way list of files are built inside the centos-art." +"sh script. This function outputs a sorted and unique list of " +"files based on the options and location provided as argument. This function " +"is an interface to the find command. " +"Don't use find command directly inside " +"the centos-art.sh script. Instead, use the tcar_getFilesList function." +msgstr "" +"The tcar_getFilesList standardizes the " +"way list of files are built inside the centos-art." +"sh script. This function outputs a sorted and unique list of " +"files based on the options and location provided as argument. This function " +"is an interface to the find command. " +"Don't use find command directly inside " +"the centos-art.sh script. Instead, use the tcar_getFilesList function." + +msgid "" +"The LOCATION arguments must be the absolute path to a " +"directory and specifies where the search of files in any form (e.g., " +"directories, links, etc.) will take place in. If LOCATION " +"isn't a directory, the script finishes its execution with an error message." +msgstr "" +"The LOCATION arguments must be the absolute path to a " +"directory and specifies where the search of files in any form (e.g., " +"directories, links, etc.) will take place in. If LOCATION " +"isn't a directory, the script finishes its execution with an error message." + +msgid "" +"The tcar_getFilesList accepts the " +"following options:" +msgstr "" +"The tcar_getFilesList accepts the " +"following options:" + +msgid "--pattern=\"REGEX\"" +msgstr "--pattern=\"REGEX\"" + +msgid "" +"This option specifies a posix-egrep type regular expression as value. This " +"regular expression is applied to path specified in LOCATION argument. Only file paths that match this regular expression inside " +"LOCATION directory will be included in the final list of " +"files. By default, if this option is not provided, the “^/.*[[:" +"alnum:]_/-]$+” regular expression is used." +msgstr "" +"This option specifies a posix-egrep type regular expression as value. This " +"regular expression is applied to path specified in LOCATION argument. Only file paths that match this regular expression inside " +"LOCATION directory will be included in the final list of " +"files. By default, if this option is not provided, the “^/.*[[:" +"alnum:]_/-]$+” regular expression is used." + +msgid "" +"When you use the tcar_getFilesList you " +"don't need to specified the absolute path of files you want to look for. " +"This is something tcar_getFilesList " +"already does for you. When you use this function, the value you pass as " +"regular expression isn't the final regular expression used. Instead, the " +"regular expression you pass is used to build the final regular expression " +"passed to find command. The REGEX." +msgstr "" +"When you use the tcar_getFilesList you " +"don't need to specified the absolute path of files you want to look for. " +"This is something tcar_getFilesList " +"already does for you. When you use this function, the value you pass as " +"regular expression isn't the final regular expression used. Instead, the " +"regular expression you pass is used to build the final regular expression " +"passed to find command. The REGEX." + +msgid "--mindepth=\"NUMBER\"" +msgstr "--mindepth=\"NUMBER\"" + +msgid "" +"This option specifies the minimal NUMBER of levels deep " +"the search should go under the directory LOCATION " +"specified. For example, if you specify --mindepth=" +"\"2\" the search will start two levels deep considering the path " +"provided as section." +msgstr "" +"This option specifies the minimal NUMBER of levels deep " +"the search should go under the directory LOCATION " +"specified. For example, if you specify --mindepth=" +"\"2\" the search will start two levels deep considering the path " +"provided as section." + +msgid "--maxdepth=\"NUMBER\"" +msgstr "--maxdepth=\"NUMBER\"" + +msgid "" +"This option specifies the maximum NUMBER of levels deep " +"the search should go under the directory LOCATION " +"specified. For example, if you specify --maxdepth=" +"\"2\" the search will begin in the very same directory path you " +"provided as LOCATION and stop two levels deep using it as " +"section." +msgstr "" +"This option specifies the maximum NUMBER of levels deep " +"the search should go under the directory LOCATION " +"specified. For example, if you specify --maxdepth=" +"\"2\" the search will begin in the very same directory path you " +"provided as LOCATION and stop two levels deep using it as " +"section." + +msgid "--type=\"STRING\"" +msgstr "--type=\"STRING\"" + +msgid "" +"This option specifies the type of files being searched. This option accepts " +"the same values the find-type option does. However, the following " +"STRING values are the most used inside the script so far:" +msgstr "" +"This option specifies the type of files being searched. This option accepts " +"the same values the find-type option does. However, the following " +"STRING values are the most used inside the script so far:" + +msgid "d &mdash; directory." +msgstr "d &mdash; directory." + +msgid "f &mdash; regular file." +msgstr "f &mdash; regular file." + +msgid "--uid=\"NUMBER\"" +msgstr "--uid=\"NUMBER\"" + +msgid "" +"This option specifies the numeric user id of the files you want to search. " +"Only files that match this numeric user id will be added to the final list " +"of files." +msgstr "" +"This option specifies the numeric user id of the files you want to search. " +"Only files that match this numeric user id will be added to the final list " +"of files." + +msgid "" +"Use the tcar_getFilesList whenever you " +"need to build list of files for further processing." +msgstr "" +"Use the tcar_getFilesList whenever you " +"need to build list of files for further processing." + +msgid "Bugs" +msgstr "Bugs" + +msgid "See https://centos.org.cu/bugs/" +msgstr "See https://centos.org.cu/bugs/" + +msgid "Authors" +msgstr "Authors" + +msgid "" +"The tcar_checkFiles function has " +"received contributions from the following people:" +msgstr "" +"The tcar_checkFiles function has " +"received contributions from the following people:" + +msgid "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" +msgstr "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" + +msgid "License" +msgstr "License" + +msgid "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" +msgstr "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/tcar_printMessage.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_printMessage.sh.po new file mode 100644 index 0000000..4ee9f19 --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_printMessage.sh.po @@ -0,0 +1,437 @@ +msgid "" +msgstr "" +"Project-Id-Version: tcar_printMessage.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "tcar_printmessage.sh" +msgstr "tcar_printmessage.sh" + +msgid "1" +msgstr "1" + +msgid "tcar_printMessage.sh" +msgstr "tcar_printMessage.sh" + +msgid "Print customized messages in standard ways." +msgstr "Print customized messages in standard ways." + +msgid "" +"tcar_printMessage \"MESSAGE\" [--as-separator-line|--as-banner-line|--as-" +"cropping-line|--as-tuningup-line|--as-checking-line|--as-combining-line|--as-" +"creating-line|--as-reading-line|--as-savedas-line|--as-linkto-line|--as-" +"movedto-line|--as-validating-line|--as-template-line|--as-configuration-" +"line|--as-palette-line|--as-reponse-line|--as-request-line|--as-selection-" +"line|--as-error-line|--as-toknowmore-line|--as-yesornorequest-line|--as-" +"notrailingnew-line|--as-stdout-line|--as-stderr-line]" +msgstr "" +"tcar_printMessage \"MESSAGE\" [--as-separator-line|--as-banner-line|--as-" +"cropping-line|--as-tuningup-line|--as-checking-line|--as-combining-line|--as-" +"creating-line|--as-reading-line|--as-savedas-line|--as-linkto-line|--as-" +"movedto-line|--as-validating-line|--as-template-line|--as-configuration-" +"line|--as-palette-line|--as-reponse-line|--as-request-line|--as-selection-" +"line|--as-error-line|--as-toknowmore-line|--as-yesornorequest-line|--as-" +"notrailingnew-line|--as-stdout-line|--as-stderr-line]" + +msgid "Description" +msgstr "Description" + +msgid "" +"The tcar_printMessage function " +"standardizes the way centos-art.sh scirpt prints messages. By default, " +"centos-art.sh script prints all messages to the standard output with the " +"exception of those messages printed with the --as-" +"stderr-line option, which are printed to standard error output " +"instead." +msgstr "" +"The tcar_printMessage function " +"standardizes the way centos-art.sh scirpt prints messages. By default, " +"centos-art.sh script prints all messages to the standard output with the " +"exception of those messages printed with the --as-" +"stderr-line option, which are printed to standard error output " +"instead." + +msgid "" +"The tcar_printMessage function requires " +"two arguments. The first argument specifies the message you want to print " +"and the second argument specifies the format you'll use to print that " +"message. Because this function is so used inside the centos-art.sh script, " +"it is convenient to provide localization to strings passed as " +"MESSAGE using gettext constructions when they aren't paths." +msgstr "" +"The tcar_printMessage function requires " +"two arguments. The first argument specifies the message you want to print " +"and the second argument specifies the format you'll use to print that " +"message. Because this function is so used inside the centos-art.sh script, " +"it is convenient to provide localization to strings passed as " +"MESSAGE using gettext constructions when they aren't paths." + +msgid "Options" +msgstr "Options" + +msgid "" +"The tcar_printMessage function accepts " +"the following format options as second argument:" +msgstr "" +"The tcar_printMessage function accepts " +"the following format options as second argument:" + +msgid "--as-separator-line" +msgstr "--as-separator-line" + +msgid "" +"This format takes the first character passed as MESSAGE " +"and repeats it horizontally to build a separator line. Use this format " +"whenever you need to create a logical separation between different actions." +msgstr "" +"This format takes the first character passed as MESSAGE " +"and repeats it horizontally to build a separator line. Use this format " +"whenever you need to create a logical separation between different actions." + +msgid "--as-banner-line" +msgstr "--as-banner-line" + +msgid "" +"This format takes the string passed as MESSAGE and puts " +"it inside two horizontal separator lines. Use this format whenever you need " +"to print header information for following lines." +msgstr "" +"This format takes the string passed as MESSAGE and puts " +"it inside two horizontal separator lines. Use this format whenever you need " +"to print header information for following lines." + +msgid "--as-cropping-line" +msgstr "--as-cropping-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been cropped." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been cropped." + +msgid "--as-tuningup-line" +msgstr "--as-tuningup-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been tuned-up." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been tuned-up." + +msgid "--as-checking-line" +msgstr "--as-checking-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been checked or verified (e." +"g., through tcar_checkFiles " +"functionality)." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been checked or verified (e." +"g., through tcar_checkFiles " +"functionality)." + +msgid "--as-combining-line" +msgstr "--as-combining-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been combined." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been combined." + +msgid "--as-creating-line" +msgstr "--as-creating-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been created." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been created." + +msgid "--as-reading-line" +msgstr "--as-reading-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been read." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been read." + +msgid "--as-savedas-line" +msgstr "--as-savedas-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been saved." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been saved." + +msgid "--as-linkto-line" +msgstr "--as-linkto-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been linked." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been linked." + +msgid "--as-movedto-line" +msgstr "--as-movedto-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been moved." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been moved." + +msgid "--as-validating-line" +msgstr "--as-validating-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been validated." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file has been validated." + +msgid "--as-template-line" +msgstr "--as-template-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file is a template or design model." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file is a template or design model." + +msgid "--as-configuration-line" +msgstr "--as-configuration-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file is a configuration file." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file is a configuration file." + +msgid "--as-palette-line" +msgstr "--as-palette-line" + +msgid "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file is a palette of colors." +msgstr "" +"This format is for two columns messages where MESSAGE " +"generally refers to a file inside the repository. Use this format whenever " +"you need to imply the fact that certain file is a palette of colors." + +msgid "--as-response-line" +msgstr "--as-response-line" + +msgid "" +"This format adds --> at the beginning of the string " +"passed as MESSAGE. Use this format whenever you need to " +"imply the fact that certain file is considered part of a response. For " +"example, when you need to express that a group of files will take certain " +"action, you can use this option to doing so." +msgstr "" +"This format adds --> at the beginning of the string " +"passed as MESSAGE. Use this format whenever you need to " +"imply the fact that certain file is considered part of a response. For " +"example, when you need to express that a group of files will take certain " +"action, you can use this option to doing so." + +msgid "--as-request-line" +msgstr "--as-request-line" + +msgid "" +"This format prints MESSAGE without trailing new line. Use " +"this format whenever you need to imply a question or yes or no request." +msgstr "" +"This format prints MESSAGE without trailing new line. Use " +"this format whenever you need to imply a question or yes or no request." + +msgid "--as-selection-line" +msgstr "--as-selection-line" + +msgid "" +"This format uses each word in MESSAGE as item of a " +"selection list. Use this format whenever you need to select one of the items " +"provided as MESSAGE." +msgstr "" +"This format uses each word in MESSAGE as item of a " +"selection list. Use this format whenever you need to select one of the items " +"provided as MESSAGE." + +msgid "--as-error-line" +msgstr "--as-error-line" + +msgid "" +"This format prints error messages produced by centos-art.sh script. It uses " +"the caller built-in command to display " +"the line number and the filename where such error was triggered. Later, it " +"prints where to find more information by using the --as-toknowmore-line option." +msgstr "" +"This format prints error messages produced by centos-art.sh script. It uses " +"the caller built-in command to display " +"the line number and the filename where such error was triggered. Later, it " +"prints where to find more information by using the --as-toknowmore-line option." + +msgid "--as-toknowmore-line" +msgstr "--as-toknowmore-line" + +msgid "" +"This format takes a function name as MESSAGE and prints " +"the command you can use to find more information about it. When this option " +"is passed the script finishes its execution immediately. This option is used " +"in combination with --as-error-line to " +"finish the script execution after an error." +msgstr "" +"This format takes a function name as MESSAGE and prints " +"the command you can use to find more information about it. When this option " +"is passed the script finishes its execution immediately. This option is used " +"in combination with --as-error-line to " +"finish the script execution after an error." + +msgid "--as-yesornorequest-line" +msgstr "--as-yesornorequest-line" + +msgid "" +"This format takes a question as MESSAGE and reads a yes " +"or no answer. When answer is negative, the script finishes its execution " +"immediately. When answer is affirmative, the script continues its execution " +"normally." +msgstr "" +"This format takes a question as MESSAGE and reads a yes " +"or no answer. When answer is negative, the script finishes its execution " +"immediately. When answer is affirmative, the script continues its execution " +"normally." + +msgid "--as-notrailingnew-line" +msgstr "--as-notrailingnew-line" + +msgid "Print MESSAGE without any trailing newline." +msgstr "Print MESSAGE without any trailing newline." + +msgid "--as-stdout-line" +msgstr "--as-stdout-line" + +msgid "Print MESSAGE to standard output." +msgstr "Print MESSAGE to standard output." + +msgid "--as-stderr-line" +msgstr "--as-stderr-line" + +msgid "Print MESSAGE to standard error output." +msgstr "Print MESSAGE to standard error output." + +msgid "Examples" +msgstr "Examples" + +msgid "Bugs" +msgstr "Bugs" + +msgid ".." +msgstr ".." + +msgid "See https://centos.org.cu/bugs/" +msgstr "See https://centos.org.cu/bugs/" + +msgid "Authors" +msgstr "Authors" + +msgid "" +"The tcar_printMessage function has " +"received contributions from the following people:" +msgstr "" +"The tcar_printMessage function has " +"received contributions from the following people:" + +msgid "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" +msgstr "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" + +msgid "License" +msgstr "License" + +msgid "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" +msgstr "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/tcar_setModuleEnvironment.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_setModuleEnvironment.sh.po new file mode 100644 index 0000000..286f0dc --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_setModuleEnvironment.sh.po @@ -0,0 +1,216 @@ +msgid "" +msgstr "" +"Project-Id-Version: tcar_setModuleEnvironment.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "tcar_setmoduleenvironment.sh" +msgstr "tcar_setmoduleenvironment.sh" + +msgid "1" +msgstr "1" + +msgid "tcar_setModuleEnvironment.sh" +msgstr "tcar_setModuleEnvironment.sh" + +msgid "Initiate module environments." +msgstr "Initiate module environments." + +msgid "" +"tcar_setModuleEnvironment [-m \"MODULE_NAME\"] [-t \"MODULE_TYPE\"] [-g " +"MODULE_ARGUMENT] …" +msgstr "" +"tcar_setModuleEnvironment [-m \"MODULE_NAME\"] [-t \"MODULE_TYPE\"] [-g " +"MODULE_ARGUMENT] …" + +msgid "Description" +msgstr "Description" + +msgid "Options" +msgstr "Options" + +msgid "" +"The tcar_setModuleEnvironment function " +"accepts the following options:" +msgstr "" +"The tcar_setModuleEnvironment function " +"accepts the following options:" + +msgid "-m" +msgstr "-m" + +msgid "This option specifies the name of the module you want to load." +msgstr "This option specifies the name of the module you want to load." + +msgid "-t" +msgstr "-t" + +msgid "" +"This option specifies the type of the module you want to load. Modules can " +"be one of the following types:" +msgstr "" +"This option specifies the type of the module you want to load. Modules can " +"be one of the following types:" + +msgid "top-module" +msgstr "top-module" + +msgid "" +"This modules are stored in the first level of Modules directory. This type " +"of modules initiate module environments for specific tasks so it can be " +"called from anywhere inside centos-art.sh script." +msgstr "" +"This modules are stored in the first level of Modules directory. This type " +"of modules initiate module environments for specific tasks so it can be " +"called from anywhere inside centos-art.sh script." + +msgid "sub-module" +msgstr "sub-module" + +msgid "" +"This modules are stored from the second-level of Modules directory on. This " +"type of modules can be executed from top-modules, sub-modules, or sib-" +"modules but never the centos-art.sh " +"file itself." +msgstr "" +"This modules are stored from the second-level of Modules directory on. This " +"type of modules can be executed from top-modules, sub-modules, or sib-" +"modules but never the centos-art.sh " +"file itself." + +msgid "sib-module" +msgstr "sib-module" + +msgid "" +"This modules are stored from the second-level of Modules directory on. This " +"type of modules can be executed from sub-modules or sib-modules, but never " +"top-modules or the centos-art.sh file " +"itself." +msgstr "" +"This modules are stored from the second-level of Modules directory on. This " +"type of modules can be executed from sub-modules or sib-modules, but never " +"top-modules or the centos-art.sh file " +"itself." + +msgid "-g" +msgstr "-g" + +msgid "" +"This option specifies the module-specific option you want to pass for " +"processing in the module environment you are about to execute. Generally, " +"module-specific options are passed through centos-" +"art.sh command-line but you may need to pass them internally in " +"some cases (e.g., you are executing a top-module from a sub-module). If you " +"need to pass more than one option, then you need to put the -g option before " +"each option you want to pass." +msgstr "" +"This option specifies the module-specific option you want to pass for " +"processing in the module environment you are about to execute. Generally, " +"module-specific options are passed through centos-" +"art.sh command-line but you may need to pass them internally in " +"some cases (e.g., you are executing a top-module from a sub-module). If you " +"need to pass more than one option, then you need to put the -g option before " +"each option you want to pass." + +msgid "Bugs" +msgstr "Bugs" + +msgid "" +"In the very beginning of tcar_setModuleEnvironment function, it used just non-array " +"variables and it worked fine for top-module and sub-module processing, " +"however when it was needed to do sibling processing, it didn't work as " +"expected. The failure was produced because a wrong variable assignment when " +"tried to set the path of the next module to load. There was not a clean way " +"to “remember” what was the base directory of the parent directory, so it " +"ended up using the last loaded module base directory which made impossible " +"to load a sibling module. The tcar_setModuleEnvironment function as implemented in version " +"0.5 of The CentOS Artwork Repository, fixes this issue replacing non-array " +"variables by array variables which can remember module information." +msgstr "" +"In the very beginning of tcar_setModuleEnvironment function, it used just non-array " +"variables and it worked fine for top-module and sub-module processing, " +"however when it was needed to do sibling processing, it didn't work as " +"expected. The failure was produced because a wrong variable assignment when " +"tried to set the path of the next module to load. There was not a clean way " +"to “remember” what was the base directory of the parent directory, so it " +"ended up using the last loaded module base directory which made impossible " +"to load a sibling module. The tcar_setModuleEnvironment function as implemented in version " +"0.5 of The CentOS Artwork Repository, fixes this issue replacing non-array " +"variables by array variables which can remember module information." + +msgid "" +"See also: https://centos.org.cu/" +"bugs/" +msgstr "" +"See also: https://centos.org.cu/" +"bugs/" + +msgid "Author" +msgstr "Author" + +msgid "" +"The centos-art.sh script has received " +"contribution from the following people:" +msgstr "" +"The centos-art.sh script has received " +"contribution from the following people:" + +msgid "" +"Alain Reguera Delgado <al@centos." +"org.cu>, 2009-2013" +msgstr "" +"Alain Reguera Delgado <al@centos." +"org.cu>, 2009-2013" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Copyright © 2009-2013 The CentOS Artwork SIG" +msgstr "Copyright © 2009-2013 The CentOS Artwork SIG" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/Locales/en_US/tcar_setTranslationMarkers.sh.po b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_setTranslationMarkers.sh.po new file mode 100644 index 0000000..adddc15 --- /dev/null +++ b/tcar-scripts-docs/Manpages/Locales/en_US/tcar_setTranslationMarkers.sh.po @@ -0,0 +1,445 @@ +msgid "" +msgstr "" +"Project-Id-Version: tcar_setTranslationMarkers.sh.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-26 10:20-0500\n" +"PO-Revision-Date: 2013-11-26 10:20-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "tcar_settranslationmarkers" +msgstr "tcar_settranslationmarkers" + +msgid "1" +msgstr "1" + +msgid "tcar_setTranslationMarkers" +msgstr "tcar_setTranslationMarkers" + +msgid "Expands translation markers." +msgstr "Expands translation markers." + +msgid "tcar_setTranslationMarkers \"FILE\"" +msgstr "tcar_setTranslationMarkers \"FILE\"" + +msgid "Description" +msgstr "Description" + +msgid "" +"The cli_setTranslationMarkers " +"standardizes construction of translation markers and their related " +"expansion. As convention, translation markers are set inside source files (e." +"g., DocBook, SVG) and expanded inside temporal instances used to produce " +"final contents. The FILE argument should point to the " +"temporal file where translation markers expansion takes place in." +msgstr "" +"The cli_setTranslationMarkers " +"standardizes construction of translation markers and their related " +"expansion. As convention, translation markers are set inside source files (e." +"g., DocBook, SVG) and expanded inside temporal instances used to produce " +"final contents. The FILE argument should point to the " +"temporal file where translation markers expansion takes place in." + +msgid "" +"Translation markers written in source files must comply the " +"== regular expression pattern. For example, =UNKNOWN_MARKER= is a valid translation marker without any " +"replacement. To prevent centos-art.sh " +"script from expanding translation markers, add a backslash (+) " +"between the first equal sign and the following letter. For example, +=...=+ " +"won't be expanded." +msgstr "" +"Translation markers written in source files must comply the " +"== regular expression pattern. For example, =UNKNOWN_MARKER= is a valid translation marker without any " +"replacement. To prevent centos-art.sh " +"script from expanding translation markers, add a backslash (+) " +"between the first equal sign and the following letter. For example, +=...=+ " +"won't be expanded." + +msgid "" +"The cli_setTranslationMarkers supports " +"the following translation markers:" +msgstr "" +"The cli_setTranslationMarkers supports " +"the following translation markers:" + +msgid "" +"=\\COPYRIGHT_YEAR_LAST=, =\\COPYRIGHT_YEAR=" +msgstr "" +"=\\COPYRIGHT_YEAR_LAST=, =\\COPYRIGHT_YEAR=" + +msgid "" +"These translation markers expand to the last year used in copyright notes. " +"For example, =COPYRIGHT_YEAR_LAST=." +msgstr "" +"These translation markers expand to the last year used in copyright notes. " +"For example, =COPYRIGHT_YEAR_LAST=." + +msgid "" +"=\\COPYRIGHT_YEAR_LIST=, =" +"\\COPYRIGHT_YEARS_LIST=" +msgstr "" +"=\\COPYRIGHT_YEAR_LIST=, =" +"\\COPYRIGHT_YEARS_LIST=" + +msgid "" +"This translation markers expand to the list of years used in copyright " +"notes. For example, =COPYRIGHT_YEARS_LIST=. The first " +"year represents the time we began to work on The CentOS Artwork Repository." +msgstr "" +"This translation markers expand to the list of years used in copyright " +"notes. For example, =COPYRIGHT_YEARS_LIST=. The first " +"year represents the time we began to work on The CentOS Artwork Repository." + +msgid "=\\COPYRIGHT_HOLDER=" +msgstr "=\\COPYRIGHT_HOLDER=" + +msgid "" +"This translation marker expands to the holder used in copyright notes. For " +"example, =COPYRIGHT_HOLDER=." +msgstr "" +"This translation marker expands to the holder used in copyright notes. For " +"example, =COPYRIGHT_HOLDER=." + +msgid "=\\COPYRIGHT_HOLDER_PREDICATE=" +msgstr "=\\COPYRIGHT_HOLDER_PREDICATE=" + +msgid "" +"This translation marker expands both the holder and the predicate used in " +"copyright notes. For example, =COPYRIGHT_HOLDER_PREDICATE=." +msgstr "" +"This translation marker expands both the holder and the predicate used in " +"copyright notes. For example, =COPYRIGHT_HOLDER_PREDICATE=." + +msgid "=\\BRAND=" +msgstr "=\\BRAND=" + +msgid "" +"This translation marker expands to the brand name used on files names and " +"URLs inside The CentOS Artwork Repository. For example, =BRAND=." +msgstr "" +"This translation marker expands to the brand name used on files names and " +"URLs inside The CentOS Artwork Repository. For example, =BRAND=." + +msgid "=\\LICENSE=" +msgstr "=\\LICENSE=" + +msgid "" +"This translation marker expands to the license information used in files " +"created by centos-art.sh script. For " +"example, =LICENSE=." +msgstr "" +"This translation marker expands to the license information used in files " +"created by centos-art.sh script. For " +"example, =LICENSE=." + +msgid "=\\LICENSE_URL=" +msgstr "=\\LICENSE_URL=" + +msgid "" +"This translation marker expands to the license URL used in files created by " +"centos-art.sh script. For example, " +"=LICENSE_URL=." +msgstr "" +"This translation marker expands to the license URL used in files created by " +"centos-art.sh script. For example, " +"=LICENSE_URL=." + +msgid "=\\THEME=" +msgstr "=\\THEME=" + +msgid "" +"This translation marker expands to the theme portion of path you are " +"producing through centos-art.sh script. As consequence, this translation " +"marker should be used in situations where you are producing theme components " +"only. This translation marker expands its value by retrieving the theme part " +"of the path you provide as non-option argument to centos-art.sh script. For example, if you provide the path " +"Identity/Images/Themes/Modern/2/Distro/5, this " +"translation will expand to the Modern/2/ value." +msgstr "" +"This translation marker expands to the theme portion of path you are " +"producing through centos-art.sh script. As consequence, this translation " +"marker should be used in situations where you are producing theme components " +"only. This translation marker expands its value by retrieving the theme part " +"of the path you provide as non-option argument to centos-art.sh script. For example, if you provide the path " +"Identity/Images/Themes/Modern/2/Distro/5, this " +"translation will expand to the Modern/2/ value." + +msgid "" +"In case you need to retrieve the theme name or version separately one " +"another, then you can use the =\\THEMENAME= and =" +"\\THEMERELEASE= translation markers, respectively. When you use " +"these translation markers, forward slashes are removed from result. So, if " +"you provide the path Identity/Images/Themes/Modern/2/Distro/5, =\\THEMENAME= will expand to Modern and =THEMERELEASE= will expand to 2." +msgstr "" +"In case you need to retrieve the theme name or version separately one " +"another, then you can use the =\\THEMENAME= and =" +"\\THEMERELEASE= translation markers, respectively. When you use " +"these translation markers, forward slashes are removed from result. So, if " +"you provide the path Identity/Images/Themes/Modern/2/Distro/5, =\\THEMENAME= will expand to Modern and =THEMERELEASE= will expand to 2." + +msgid "=\\RELEASE=" +msgstr "=\\RELEASE=" + +msgid "" +"This translation marker expands to the current release information of your " +"CentOS distribution. By default this information is retrieved from /" +"etc/redhat-release. In case the option --" +"release be passed, the value specified with it will overwrite the " +"default value and will be this the one used as section for this translation " +"marker to retrieve the release information. So, for example, if you are " +"running a CentOS-5.8 distribution and no --" +"release option is passed to centos-art." +"sh script, this translation marker expands to 5.8. On the other hand, if you are still running a CentOS-5.8 " +"distribution but provide the --release=6.3 option to centos-art.sh " +"script, this translation marker expands to 6.3 instead." +msgstr "" +"This translation marker expands to the current release information of your " +"CentOS distribution. By default this information is retrieved from /" +"etc/redhat-release. In case the option --" +"release be passed, the value specified with it will overwrite the " +"default value and will be this the one used as section for this translation " +"marker to retrieve the release information. So, for example, if you are " +"running a CentOS-5.8 distribution and no --" +"release option is passed to centos-art." +"sh script, this translation marker expands to 5.8. On the other hand, if you are still running a CentOS-5.8 " +"distribution but provide the --release=6.3 option to centos-art.sh " +"script, this translation marker expands to 6.3 instead." + +msgid "" +"In case you need to retrieve minor and major release numbers separately one " +"another, then you can use the =\\MINOR_RELEASE= and " +"=\\MAJOR_RELEASE= translation makers, respectively." +msgstr "" +"In case you need to retrieve minor and major release numbers separately one " +"another, then you can use the =\\MINOR_RELEASE= and " +"=\\MAJOR_RELEASE= translation makers, respectively." + +msgid "=\\ARCH=" +msgstr "=\\ARCH=" + +msgid "" +"This translation marker expands to the current architecture of your CentOS " +"Distribution. By default this information is retrieved from uname -i. In case the option --arch be passed, the value specified with it will overwrite " +"the default value and will be the one used as section. For example, if the " +"uname -i outputs the line <" +"computeroutput>i386</computeroutput>, this translation marker will " +"expand to i386. On the other hand, if you pass the " +"--arch=x86_64 option to centos-art.sh script, this translation marker will " +"expand to x86_64 instead." +msgstr "" +"This translation marker expands to the current architecture of your CentOS " +"Distribution. By default this information is retrieved from uname -i. In case the option --arch be passed, the value specified with it will overwrite " +"the default value and will be the one used as section. For example, if the " +"uname -i outputs the line <" +"computeroutput>i386</computeroutput>, this translation marker will " +"expand to i386. On the other hand, if you pass the " +"--arch=x86_64 option to centos-art.sh script, this translation marker will " +"expand to x86_64 instead." + +msgid "=\\URL=" +msgstr "=\\URL=" + +msgid "" +"This translation marker expands to the URL which points to The CentOS " +"Project home page. For example, =URL=. In case you are " +"using the centos-art.sh script in a different locale but English " +"(en_US.UTF-8), this translation marker expands as usual " +"but with the language information appended to the end of the string. For " +"example, if you are executing the centos-art.shscript for Spanish locale (e." +"g., es_ES.UTF-8), this translation marker expands to " +"=URL=es/." +msgstr "" +"This translation marker expands to the URL which points to The CentOS " +"Project home page. For example, =URL=. In case you are " +"using the centos-art.sh script in a different locale but English " +"(en_US.UTF-8), this translation marker expands as usual " +"but with the language information appended to the end of the string. For " +"example, if you are executing the centos-art.shscript for Spanish locale (e." +"g., es_ES.UTF-8), this translation marker expands to " +"=URL=es/." + +msgid "" +"In case you need to expand other URL related to The CentOS Project domain, " +"use translation markers described in . Likewise =\\URL=, translation markers described in does append the current " +"language information to the end of the URL string based on the locale " +"information you are currently executing the centos-" +"art.sh script." +msgstr "" +"In case you need to expand other URL related to The CentOS Project domain, " +"use translation markers described in . Likewise =\\URL=, translation markers described in does append the current " +"language information to the end of the URL string based on the locale " +"information you are currently executing the centos-" +"art.sh script." + +msgid "URL-related translation markers" +msgstr "URL-related translation markers" + +msgid "-------------------`----------------- Translation Marker Expands To" +msgstr "-------------------`----------------- Translation Marker Expands To" + +#, no-wrap +msgid "" +"=\\URL_WIKI= =URL_WIKI=\n" +"=\\URL_LISTS= =URL_LISTS=\n" +"=\\URL_FORUMS= =URL_FORUMS=\n" +"=\\URL_MIRRORS= =URL_MIRRORS=\n" +"=\\URL_DOCS= =URL_DOCS=\n" +"=\\URL_PROJECTS= =URL_PROJECTS=\n" +"=\\URL_SVN= =URL_SVN=\n" +"=\\URL_TRAC= =URL_TRAC=\n" +"=\\URL_PLANET= =URL_PLANET=" +msgstr "" +"=\\URL_WIKI= =URL_WIKI=\n" +"=\\URL_LISTS= =URL_LISTS=\n" +"=\\URL_FORUMS= =URL_FORUMS=\n" +"=\\URL_MIRRORS= =URL_MIRRORS=\n" +"=\\URL_DOCS= =URL_DOCS=\n" +"=\\URL_PROJECTS= =URL_PROJECTS=\n" +"=\\URL_SVN= =URL_SVN=\n" +"=\\URL_TRAC= =URL_TRAC=\n" +"=\\URL_PLANET= =URL_PLANET=" + +msgid "=\\MAIL_DOCS=" +msgstr "=\\MAIL_DOCS=" + +msgid "" +"This translation marker expands to CentOS documentation mailing list " +"address. For example, =MAIL_DOCS=." +msgstr "" +"This translation marker expands to CentOS documentation mailing list " +"address. For example, =MAIL_DOCS=." + +msgid "=\\LOCALE=" +msgstr "=\\LOCALE=" + +msgid "" +"This translation marker expands to the current locale information used by " +"centos-art.sh script. This value is " +"retrieved from the <envar>LANG</envar> environment variable and " +"should look like =LOCALE=. In case you need to retrieve " +"the language and country part separately one another, you can use the " +"=\\LOCALE_LL= and =\\LOCALE_CC=, " +"respectively." +msgstr "" +"This translation marker expands to the current locale information used by " +"centos-art.sh script. This value is " +"retrieved from the <envar>LANG</envar> environment variable and " +"should look like =LOCALE=. In case you need to retrieve " +"the language and country part separately one another, you can use the " +"=\\LOCALE_LL= and =\\LOCALE_CC=, " +"respectively." + +msgid "=\\REPO_TLDIR=" +msgstr "=\\REPO_TLDIR=" + +msgid "" +"This translation marker expands to the absolute path to <filename class=" +"\"directory\"> directory inside your workstation. For example, /home/al/Projects/CentOS/artwork/trunk+." +msgstr "" +"This translation marker expands to the absolute path to <filename class=" +"\"directory\"> directory inside your workstation. For example, /home/al/Projects/CentOS/artwork/trunk+." + +msgid "=\\REPO_HOME=, =\\TCAR_WORKDIR=" +msgstr "=\\REPO_HOME=, =\\TCAR_WORKDIR=" + +msgid "" +"This translation marker expands to the absolute path of your working copy. " +"For example, /home/al/Projects/CentOS/artwork." +msgstr "" +"This translation marker expands to the absolute path of your working copy. " +"For example, /home/al/Projects/CentOS/artwork." + +msgid "Bugs" +msgstr "Bugs" + +msgid "See https://centos.org.cu/bugs/" +msgstr "See https://centos.org.cu/bugs/" + +msgid "Authors" +msgstr "Authors" + +msgid "" +"The tcar_setTranslationMarkers function " +"has received contributions from the following people:" +msgstr "" +"The tcar_setTranslationMarkers function " +"has received contributions from the following people:" + +msgid "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" +msgstr "Alain Reguera Delgado <al@centos.org.cu>, =COPYRIGHT_YEAR_LIST=" + +msgid "License" +msgstr "License" + +msgid "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" +msgstr "Copyright © =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER=" + +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." +msgstr "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 2 of the License, or (at your option) " +"any later version." + +msgid "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." +msgstr "" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details." + +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." +msgstr "" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 675 Mass " +"Ave, Cambridge, MA 02139, USA." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Manpages/centos-art.sh.asciidoc b/tcar-scripts-docs/Manpages/centos-art.sh.asciidoc new file mode 100644 index 0000000..482bde1 --- /dev/null +++ b/tcar-scripts-docs/Manpages/centos-art.sh.asciidoc @@ -0,0 +1,140 @@ +centos-art.sh(1) +================ + +Name +---- + +centos-art.sh - The CentOS artwork repository automation tool. + +Synopsis +-------- + +*centos-art.sh* [*--help*|*--version*]:: + Print information about *centos-art.sh* script itself. + +*centos-art.sh* *MODULE* [*--help|--version*]:: + Print information about the specified module. See <> + below to see which modules *centos-art.sh* script supports. + +Description +----------- + +*centos-art.sh* exists to standardize frequent tasks inside the CentOS +artwork repository. Inside *centos-art.sh* script, frequent tasks are +organized inside modules. + +When you execute the *centos-art.sh* script in a terminal, it requests +you to enter the absolute path of CentOS artwork repository in your +workstation. This information is required in order for *centos-art.sh* +to know where the repository directory structure you want to work with +is stored in. Later, once *centos-art.sh* knows where your copy of +CentOS artwork repository is stored in, it initializes configuration +variables and global functions. At this point, it continues reading +the command-line arguments to retrieve the module's name, process +common options next to it, store module-specific options and initiates +the module's environment by executing the module's initialization +script, based on the module's name retrieved from the command-line. + +[[modules]] +Modules +------- + +The *centos-art.sh* script supports the following modules: + +*prepare*:: + Standardize configuration tasks needed by your working copy (e.g., + verify whether required packages are installed or not in your + workstation, calls render module to produce images and manuals in + the correct order). This is the first task you should run in your + workstation, just after downloading a fresh working copy of CentOS + artwork repository. + +*render*:: + Standardize the way content is produced inside the repository. + This function relies on configuration files to do its work. + Whenever you need to produce images, documentation or localized + content this is the module you'll need to use. + +*locale*:: + Standardize the way translatable strings are retrieved from source + files and put into portable objects for you to edit. Portable + objects produced by this module are used by *render* module to + produce localized content. Whenever you need to produce the + intermediate files holding the translatable strings required to + produce localized content, use this module. + +*tuneup*:: + Standardize maintenance tasks frequently run inside the repository + (e.g., reset written by, copyright and license information inside + shell script's top-comments; transform probably malformed HTML + documents into valid documents, and remove unused tags inside SVG + documents.). + +[[options]] +Options +------- + +The *centos-art.sh* script supports the following options: + +*--help*:: + Print script documentation. + +*--version*:: + Print script version. + +*--debug*:: + Run the script in debugging mode. This option is very useful if + you want to get a closer look to the way modules are opened and + closed inside *centos-art.sh* script. + +*--quiet*:: + Run the script quietly. This option reduces the amount of + information the *centos-art.sh* script prints out when processing + source files. + +*--yes*:: + Run the script in affirmative mode. This is answering ``yes'' to + all ``yes or no'' questions. This option is useful when you run + *centos-art.sh* with the *--quiet* option. + +[[exit-status]] +Exit Status +----------- + +* 0 -- Exit successfully without errors. +* 1 -- Exit with errors. + +[[bugs]] +Bugs +---- + +* https://centos.org.cu/bugs/[https://centos.org.cu/bugs/] + +Author +------ + +The *centos-art.sh* script has received contribution from the +following people: + +* Alain Reguera Delgado , 2009-2013 + +Copyright +--------- + +Copyright (C) 2009-2013 The CentOS Artwork SIG + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Manpages/render.conf b/tcar-scripts-docs/Manpages/render.conf new file mode 100644 index 0000000..fef2aa6 --- /dev/null +++ b/tcar-scripts-docs/Manpages/render.conf @@ -0,0 +1,63 @@ +[centos-art.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "centos-art.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/centos-art.sh.po" +formats = "xhtml manpage" +mansect = "1" + +[tcar_setModuleEnvironment.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "tcar_setModuleEnvironment.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/tcar_setModuleEnvironment.sh.po" +formats = "xhtml manpage" +mansect = "1" + +[tcar_checkFiles.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "tcar_checkFiles.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/tcar_checkFiles.sh.po" +formats = "xhtml manpage" +mansect = "1" + +[tcar_checkRepoDirSource.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "tcar_checkRepoDirSource.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/tcar_checkRepoDirSource.sh.po" +formats = "xhtml manpage" +mansect = "1" + +[tcar_getConfigValue.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "tcar_getConfigValue.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/tcar_getConfigValue.sh.po" +formats = "xhtml manpage" +mansect = "1" + +[tcar_getFilesList.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "tcar_getFilesList.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/tcar_getFilesList.sh.po" +formats = "xhtml manpage" +mansect = "1" + +[tcar_printMessage.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "tcar_printMessage.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/tcar_printMessage.sh.po" +formats = "xhtml manpage" +mansect = "1" + +[tcar_setTranslationMarkers.sh] +render-type = "asciidoc" +render-flow = "manpage" +render-from = "tcar_setTranslationMarkers.sh.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/tcar_setTranslationMarkers.sh.po" +formats = "xhtml manpage" +mansect = "1" diff --git a/tcar-scripts-docs/Manpages/tcar_checkFiles.sh.asciidoc b/tcar-scripts-docs/Manpages/tcar_checkFiles.sh.asciidoc new file mode 100644 index 0000000..7a0de6e --- /dev/null +++ b/tcar-scripts-docs/Manpages/tcar_checkFiles.sh.asciidoc @@ -0,0 +1,135 @@ +tcar_checkFiles(1) +================== + +== Name + +tcar_checkFiles - Standardize constructions for file verifications. + +== Synopsis + +*cli_checkFiles [-d|-e|-f|-h|-x] LOCATION* + +== Description + +The *cli_checkFiles* exists to answer basic questions like ``Is ++LOCATION+ is a regular file?'' and ``Is +LOCATION+ a directory?''. +The answer to such questions affects the script execution flow in the +following way: when the answer positive (e.g., +LOCATION+ is a regular +file), the script passes the test silently and continues its +execution. When the answer is negative(e.g., +LOCATION+ is not a +regular file), the script finishes its execution immediately with an +error message. + +The *cli_checkFiles* function is exported to *centos-art.sh* script +environment in the very beginning of its execution and will be +available all along its execution lifetime. You can use this function +inside common and specific functions whenever you need to verify files +inside the The CentOS Artwork Repository. + +The *cli_checkFiles* function is available inside the *centos-art.sh* +script only as part of its execution environment. This function is +exported to *centos-art.sh* script just after executing the script +from the command-line and will be available all along the script +lifetime. So, you can use this function both in common and specific +functionalities of centos-art.sh script. + +The *cli_checkFiles* function doesn't create +subsequent execution environments. + +== Usage + +Use the *cli_checkFiles* function inside *centos-art.sh* script +whenever you need to control the script execution flow based on file +type (e.g., regular files, directories, links, etc.) verifications. + +== Options + +The *cli_checkFiles* function accepts the following options: + +-d:: + Verifies whether +LOCATION+ exists and is a directory. If it + doesn't exists or isn't a directory, an error message is printed + and the script finishes its execution. Otherwise, if it exists + and is a directory, the script continues its execution normally. +-e:: + Verifies whether +LOCATION+ exists or not. If it doesn't exist, an + error message is printed and the script finishes its execution. + Otherwise, if it does exists, the script continues its execution + normally. +-f:: + Verifies whether +LOCATION+ exists and is a regular file. If it + doesn't exists or isn't a regular file, an error message is + printed and the script finishes its execution. Otherwise, if it + exists and is a regular file, the script continues its execution + normally. +-h:: + Verifies whether +LOCATION+ exists and is a symbolic link. If it + doesn't exists or isn't a symbolic link, an error message is + printed and the script finishes its execution immediately. + Otherwise, if it does exist and is a symbolic link, the script + continue its execution normally. +-x:: + Verifies whether +LOCATION+ exists and execution permission is + granted. If it doesn't exist or hasn't execution permission, the + script finishes its execution immediately. Otherwise, if it exists + and has execution permissions, the script continues its execution + normally. + +The value of the +LOCATION+ argument must be an absolute path to the +file you want to verify. If such file doesn't exists in any supported +form, the script finishes its execution with an error message. + +== Examples + +The following example was taken from *centos-art.sh* script +initialization phase. Notice the position of *cli_checkFiles* +function inside the loop. If some of the function files we need to +export doesn't have execution rights, *cli_checkFiles* will finish the +script execution immediately with an error message. + +---------------------------------------------------------------------- +for FUNCFILE in ${FUNCFILES};do + + # Verify the execution rights for function file. + cli_checkFiles -x ${FUNCFILE} + + # Initialize the function file. + . ${FUNCFILE} + + # Export the function names inside the file to current shell + # script environment. + export -f $(egrep "${PATTERN}" ${FUNCFILE} | gawk '{ print $2 }') + +done +---------------------------------------------------------------------- + +== Bugs + +See https://centos.org.cu/bugs/ + +== Authors + +The *tcar_checkFiles* function has received contributions from the +following people: + +- Alain Reguera Delgado , =COPYRIGHT_YEAR_LIST= + +== License + +Copyright (C) =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER= + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Manpages/tcar_checkRepoDirSource.sh.asciidoc b/tcar-scripts-docs/Manpages/tcar_checkRepoDirSource.sh.asciidoc new file mode 100644 index 0000000..412d4e6 --- /dev/null +++ b/tcar-scripts-docs/Manpages/tcar_checkRepoDirSource.sh.asciidoc @@ -0,0 +1,59 @@ +tcar_checkRepoDirSource.sh(1) +============================= + +== Name + +tcar_checkRepoDirSource - Standardize the working copy's absolute path +construction. + +== Synopsis + +tcar_checkRepoDirSource "LOCATION" + +== Description + +The *tcar_checkRepoDirSource* function standardizes the path +construction to directories inside it the working copy, using absolute +paths. This function transforms relative paths passed as non-option +arguments to *centos-art.sh* script command-line into absolute paths +inside the working copy and verifies whether they really exist as +directories inside the working copy or not. If the path provided +doesn't exist as directory inside the working copy, the script will +finish its execution immediately with an error message. Otherwise, if +the directory exists, the variable +TCAR_ARGUMENTS+ is redefined with +the related absolute path for further use. + +Use the *tcar_checkRepoDirSource* function whenever you need to be +sure that non-option arguments passed to *centos-art.sh* script +command-line will always point to directories inside the working copy. + +== Bugs + +See https://centos.org.cu/bugs/ + +== Authors + +The *tcar_checkRepoDirSource* function has received contributions from +the following people: + +- Alain Reguera Delgado , =COPYRIGHT_YEAR_LIST= + +== License + +Copyright (C) =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER= + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Manpages/tcar_getConfigValue.sh.asciidoc b/tcar-scripts-docs/Manpages/tcar_getConfigValue.sh.asciidoc new file mode 100644 index 0000000..bd5002e --- /dev/null +++ b/tcar-scripts-docs/Manpages/tcar_getConfigValue.sh.asciidoc @@ -0,0 +1,72 @@ +tcar_getConfigValue.sh(1) +========================= + +== Name + +tcar_getConfigValue - Standardize options retrieval from configuration +files. + +== Synopsis + +*tcar_getConfigValue FILE SECTION OPTION* + +== Description + +The *tcar_getConfigValue* function standardizes the way option values +are retrieved from configuration files. As convention, +*tcar_getConfigValue* uses the output produced by +*tcar_getConfigLines* as input to retrieve the option values. As +convention, in +option = "value"+ lines, the values retrieved are +always on the right side. The values retrieved are also output without +quotation and translation markers already expanded. + +The *tcar_getConfigValue* function accepts the +following arguments: + +FILE:: + This argument specifies the absolute path to the configuration + file you want to retrieve the value from. For example, + ``+${TCAR_WORKDIR}/Identity/Models/Themes/Default/Distro/5/Anaconda/branding.conf+''. + +SECTION:: + This argument specifies the name of the section related to the + configuration line you want to retrieve the value from. For + example, ``symbols'' without brackets. + +OPTION:: + This argument specifies the name of the option you want to + retrieve the value from. + +Use the *tcar_getConfigValue* function whenever you want to retrieve +values from configuration files in a controlled way. + +== Bugs + +See https://centos.org.cu/bugs/ + +== Authors + +The *tcar_checkFiles* function has received contributions from the +following people: + +- Alain Reguera Delgado , =COPYRIGHT_YEAR_LIST= + +== License + +Copyright (C) =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER= + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Manpages/tcar_getFilesList.sh.asciidoc b/tcar-scripts-docs/Manpages/tcar_getFilesList.sh.asciidoc new file mode 100644 index 0000000..8ca537d --- /dev/null +++ b/tcar-scripts-docs/Manpages/tcar_getFilesList.sh.asciidoc @@ -0,0 +1,107 @@ +tcar_getFilesList.sh(1) +======================= + +== Name + +tcar_getFilesList - Create customized list of files for further +processing. + +== Synopsis + +*tcar_getFilesList [--pattern|--mindepth|--maxdepth|--type|--uid] LOCATION* + +== Description + +The *tcar_getFilesList* standardizes the way list of files are built +inside the *centos-art.sh* script. This function outputs a sorted and +unique list of files based on the options and location provided as +argument. This function is an interface to the *find* command. Don't +use *find* command directly inside the centos-art.sh script. Instead, +use the *tcar_getFilesList* function. + +The +LOCATION+ arguments must be the absolute path to a directory and +specifies where the search of files in any form (e.g., directories, +links, etc.) will take place in. If +LOCATION+ isn't a directory, the +script finishes its execution with an error message. + +The *tcar_getFilesList* accepts the following options: + +--pattern="REGEX":: + This option specifies a posix-egrep type regular expression as + value. This regular expression is applied to path specified in + +LOCATION+ argument. Only file paths that match this regular + expression inside +LOCATION+ directory will be included in the + final list of files. By default, if this option is not provided, + the ``+^/.*[[:alnum:]_/-]+$+'' regular expression + is used. ++ +When you use the *tcar_getFilesList* you don't need to specified the +absolute path of files you want to look for. This is something +*tcar_getFilesList* already does for you. When you use this function, +the value you pass as regular expression isn't the final regular +expression used. Instead, the regular expression you pass is used to +build the final regular expression passed to *find* command. The +final regular expression passed to find is ``+^/.*${PATTERN}$+'', +where +${PATTERN}+ is the value you passed to *--pattern* option as +REGEX. + +--mindepth="NUMBER":: + This option specifies the minimal +NUMBER+ of levels deep the + search should go under the directory +LOCATION+ specified. For + example, if you specify *--mindepth="2"* the search will start two + levels deep considering the path provided as section. + +--maxdepth="NUMBER":: + This option specifies the maximum +NUMBER+ of levels deep the + search should go under the directory +LOCATION+ specified. For + example, if you specify *--maxdepth="2"* the search will begin in + the very same directory path you provided as +LOCATION+ and stop + two levels deep using it as section. + +--type="STRING":: + This option specifies the type of files being searched. This + option accepts the same values the *find* *-type* option does. + However, the following +STRING+ values are the most used inside + the script so far: ++ +- d — directory. +- f — regular file. + +--uid="NUMBER":: + This option specifies the numeric user id of the files you want to + search. Only files that match this numeric user id will be added + to the final list of files. + +Use the *tcar_getFilesList* whenever you need to build list of files +for further processing. + +== Bugs + +See https://centos.org.cu/bugs/ + +== Authors + +The *tcar_checkFiles* function has received contributions from the +following people: + +- Alain Reguera Delgado , =COPYRIGHT_YEAR_LIST= + +== License + +Copyright (C) =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER= + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Manpages/tcar_printMessage.sh.asciidoc b/tcar-scripts-docs/Manpages/tcar_printMessage.sh.asciidoc new file mode 100644 index 0000000..7db2ed8 --- /dev/null +++ b/tcar-scripts-docs/Manpages/tcar_printMessage.sh.asciidoc @@ -0,0 +1,192 @@ +tcar_printMessage.sh(1) +======================= + +== Name + +tcar_printMessage.sh - Print customized messages in standard ways. + +== Synopsis + +*tcar_printMessage "MESSAGE" [--as-separator-line|--as-banner-line|--as-cropping-line|--as-tuningup-line|--as-checking-line|--as-combining-line|--as-creating-line|--as-reading-line|--as-savedas-line|--as-linkto-line|--as-movedto-line|--as-validating-line|--as-template-line|--as-configuration-line|--as-palette-line|--as-reponse-line|--as-request-line|--as-selection-line|--as-error-line|--as-toknowmore-line|--as-yesornorequest-line|--as-notrailingnew-line|--as-stdout-line|--as-stderr-line]* + +== Description + +The *tcar_printMessage* function standardizes the way centos-art.sh +scirpt prints messages. By default, centos-art.sh script prints all +messages to the standard output with the exception of those messages +printed with the *--as-stderr-line* option, which are printed to +standard error output instead. + +The *tcar_printMessage* function requires two arguments. The first +argument specifies the message you want to print and the second +argument specifies the format you'll use to print that message. +Because this function is so used inside the centos-art.sh script, it +is convenient to provide localization to strings passed as +MESSAGE+ +using *gettext* constructions when they aren't paths. + +== Options + +The *tcar_printMessage* function accepts the following format options +as second argument: + +--as-separator-line:: + This format takes the first character passed as +MESSAGE+ and + repeats it horizontally to build a separator line. Use this + format whenever you need to create a logical separation between + different actions. + +--as-banner-line:: + This format takes the string passed as +MESSAGE+ and puts it + inside two horizontal separator lines. Use this format whenever + you need to print header information for following lines. + +--as-cropping-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been cropped. + +--as-tuningup-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been tuned-up. + +--as-checking-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been checked or + verified (e.g., through *tcar_checkFiles* functionality). + +--as-combining-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been combined. + +--as-creating-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been created. + +--as-reading-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been read. + +--as-savedas-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been saved. + +--as-linkto-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been linked. + +--as-movedto-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been moved. + +--as-validating-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file has been validated. + +--as-template-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file is a template or + design model. + +--as-configuration-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file is a configuration + file. + +--as-palette-line:: + This format is for two columns messages where +MESSAGE+ generally + refers to a file inside the repository. Use this format whenever + you need to imply the fact that certain file is a palette of + colors. + +--as-response-line:: + This format adds +-->+ at the beginning of the string passed as + +MESSAGE+. Use this format whenever you need to imply the fact + that certain file is considered part of a response. For example, + when you need to express that a group of files will take certain + action, you can use this option to doing so. + +--as-request-line:: + This format prints +MESSAGE+ without trailing new line. Use this + format whenever you need to imply a question or yes or no request. + +--as-selection-line:: + This format uses each word in +MESSAGE+ as item of a selection + list. Use this format whenever you need to select one of the items + provided as +MESSAGE+. + +--as-error-line:: + This format prints error messages produced by centos-art.sh + script. It uses the *caller* built-in command to display the line + number and the filename where such error was triggered. Later, it + prints where to find more information by using the + *--as-toknowmore-line* option. + +--as-toknowmore-line:: + This format takes a function name as +MESSAGE+ and prints the + command you can use to find more information about it. When this + option is passed the script finishes its execution immediately. + This option is used in combination with *--as-error-line* to + finish the script execution after an error. + +--as-yesornorequest-line:: + This format takes a question as +MESSAGE+ and reads a yes or no + answer. When answer is negative, the script finishes its execution + immediately. When answer is affirmative, the script continues its + execution normally. + +--as-notrailingnew-line:: + Print +MESSAGE+ without any trailing + newline. + +--as-stdout-line:: + Print +MESSAGE+ to standard output. + +--as-stderr-line:: + Print +MESSAGE+ to standard error output. + +== Examples + +... + +== Bugs + +See https://centos.org.cu/bugs/ + +== Authors + +The *tcar_printMessage* function has received contributions from the +following people: + +- Alain Reguera Delgado , =COPYRIGHT_YEAR_LIST= + +== License + +Copyright (C) =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER= + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Manpages/tcar_setModuleEnvironment.sh.asciidoc b/tcar-scripts-docs/Manpages/tcar_setModuleEnvironment.sh.asciidoc new file mode 100644 index 0000000..cc0ebef --- /dev/null +++ b/tcar-scripts-docs/Manpages/tcar_setModuleEnvironment.sh.asciidoc @@ -0,0 +1,99 @@ +tcar_setModuleEnvironment.sh(1) +=============================== + +Name +---- + +tcar_setModuleEnvironment.sh - Initiate module environments. + +Synopsis +-------- + +*tcar_setModuleEnvironment [-m "MODULE_NAME"] [-t "MODULE_TYPE"] [-g MODULE_ARGUMENT] ...* + +Description +----------- + +[[options]] +Options +------- + +The *tcar_setModuleEnvironment* function accepts the following +options: + +-m :: + This option specifies the name of the module you want to load. +-t:: + This option specifies the type of the module you want to load. + Modules can be one of the following types: ++ +top-module;; + This modules are stored in the first level of Modules directory. + This type of modules initiate module environments for specific + tasks so it can be called from anywhere inside *centos-art.sh* + script. +sub-module;; + This modules are stored from the second-level of Modules directory + on. This type of modules can be executed from top-modules, + sub-modules, or sib-modules but never the *centos-art.sh* file + itself. +sib-module;; + This modules are stored from the second-level of Modules directory + on. This type of modules can be executed from sub-modules or + sib-modules, but never top-modules or the *centos-art.sh* file + itself. +-g:: + This option specifies the module-specific option you want to pass + for processing in the module environment you are about to execute. + Generally, module-specific options are passed through + *centos-art.sh* command-line but you may need to pass them + internally in some cases (e.g., you are executing a top-module + from a sub-module). If you need to pass more than one option, then + you need to put the -g option before each option you want to pass. + +Bugs +---- + +In the very beginning of *tcar_setModuleEnvironment* function, it used +just non-array variables and it worked fine for top-module and sub-module +processing, however when it was needed to do sibling processing, it +didn't work as expected. The failure was produced because a wrong +variable assignment when tried to set the path of the next module to +load. There was not a clean way to ``remember'' what was the base +directory of the parent directory, so it ended up using the last +loaded module base directory which made impossible to load a sibling +module. The *tcar_setModuleEnvironment* function as implemented in +version 0.5 of The CentOS Artwork Repository, fixes this issue +replacing non-array variables by array variables which can remember +module information. + +See also: https://centos.org.cu/bugs/[https://centos.org.cu/bugs/] + +Author +------ + +The *centos-art.sh* script has received contribution from the +following people: + +* Alain Reguera Delgado , 2009-2013 + +Copyright +--------- + +Copyright (C) 2009-2013 The CentOS Artwork SIG + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Manpages/tcar_setTranslationMarkers.sh.asciidoc b/tcar-scripts-docs/Manpages/tcar_setTranslationMarkers.sh.asciidoc new file mode 100644 index 0000000..3474df9 --- /dev/null +++ b/tcar-scripts-docs/Manpages/tcar_setTranslationMarkers.sh.asciidoc @@ -0,0 +1,199 @@ +tcar_setTranslationMarkers(1) +============================= + +== Name + +tcar_setTranslationMarkers - Expands translation markers. + +== Synopsis + +*tcar_setTranslationMarkers "FILE"* + +== Description + +The *cli_setTranslationMarkers* standardizes construction of +translation markers and their related expansion. As convention, +translation markers are set inside source files (e.g., DocBook, SVG) +and expanded inside temporal instances used to produce final contents. +The +FILE+ argument should point to the temporal file where +translation markers expansion takes place in. + +Translation markers written in source files must comply the +++=[A-Z_]+=++ regular expression pattern. For example, ++=UNKNOWN_MARKER=+ is a valid translation marker without any +replacement. To prevent *centos-art.sh* script from +expanding translation markers, add a backslash (+\+) between the first +equal sign and the following letter. For example, +=\...=+ won't be +expanded. + +The *cli_setTranslationMarkers* supports the following translation +markers: + ++=\COPYRIGHT_YEAR_LAST=+, +=\COPYRIGHT_YEAR=+:: + These translation markers expand to the last year used in + copyright notes. For example, +=COPYRIGHT_YEAR_LAST=+. + ++=\COPYRIGHT_YEAR_LIST=+, +=\COPYRIGHT_YEARS_LIST=+:: + This translation markers expand to the list of years used in + copyright notes. For example, +=COPYRIGHT_YEARS_LIST=+. The first + year represents the time we began to work on The CentOS Artwork + Repository. + ++=\COPYRIGHT_HOLDER=+:: + This translation marker expands to the holder used in copyright + notes. For example, +=COPYRIGHT_HOLDER=+. + ++=\COPYRIGHT_HOLDER_PREDICATE=+:: + This translation marker expands both the holder and the predicate + used in copyright notes. For example, + +=COPYRIGHT_HOLDER_PREDICATE=+. + ++=\BRAND=+:: + This translation marker expands to the brand name used on files + names and URLs inside The CentOS Artwork Repository. For example, + +=BRAND=+. + ++=\LICENSE=+:: + This translation marker expands to the license information used in + files created by *centos-art.sh* script. For + example, +=LICENSE=+. + ++=\LICENSE_URL=+:: + This translation marker expands to the license URL used in files + created by *centos-art.sh* script. For example, + +=LICENSE_URL=+. + ++=\THEME=+:: + This translation marker expands to the theme portion of path you + are producing through centos-art.sh script. As consequence, this + translation marker should be used in situations where you are + producing theme components only. This translation marker expands + its value by retrieving the theme part of the path you provide as + non-option argument to *centos-art.sh* script. + For example, if you provide the path + +Identity/Images/Themes/Modern/2/Distro/5+, + this translation will expand to the +Modern/2/+ value. ++ +In case you need to retrieve the theme name or version separately one +another, then you can use the +=\THEMENAME=+ and +=\THEMERELEASE=+ +translation markers, respectively. When you use these translation +markers, forward slashes are removed from result. So, if you provide +the path ++Identity/Images/Themes/Modern/2/Distro/5+, ++=\THEMENAME=+ will expand to +Modern+ and +=THEMERELEASE=+ will +expand to +2+. + ++=\RELEASE=+:: + This translation marker expands to the current release information + of your CentOS distribution. By default this information is + retrieved from +/etc/redhat-release+. In case + the option *--release* be passed, the value specified with it will + overwrite the default value and will be this the one used as + section for this translation marker to retrieve the release + information. So, for example, if you are running a CentOS-5.8 + distribution and no *--release* option is passed to + *centos-art.sh* script, this translation marker + expands to +5.8+. On the other hand, if you are still running a + CentOS-5.8 distribution but provide the *--release=6.3* option to + *centos-art.sh* script, this translation marker + expands to +6.3+ instead. ++ +In case you need to retrieve minor and major release numbers +separately one another, then you can use the +=\MINOR_RELEASE=+ and ++=\MAJOR_RELEASE=+ translation makers, respectively. + ++=\ARCH=+:: + This translation marker expands to the current architecture of + your CentOS Distribution. By default this information is retrieved + from *uname -i*. In case the option *--arch* be + passed, the value specified with it will overwrite the default + value and will be the one used as section. For example, if the + *uname -i* outputs the line + i386, this translation marker + will expand to +i386+. On the other hand, if you pass the + *--arch=x86_64* option to *centos-art.sh* script, + this translation marker will expand to +x86_64+ instead. + ++=\URL=+:: This translation marker expands to the URL which points to +The CentOS Project home page. For example, +=URL=+. In case you are +using the centos-art.sh script in a different locale but English +(+en_US.UTF-8+), this translation marker expands as usual but with the +language information appended to the end of the string. For example, +if you are executing the centos-art.shscript for Spanish locale (e.g., ++es_ES.UTF-8+), this translation marker expands to +=URL=es/+. ++ +In case you need to expand other URL related to The CentOS Project +domain, use translation markers described in +<>. Likewise =\URL=, translation +markers described in <> does append +the current language information to the end of the URL string based on +the locale information you are currently executing the *centos-art.sh* +script. + +[[url-related-translation-markers]] +.URL-related translation markers +-------------------`----------------- +Translation Marker Expands To +------------------------------------- +=\URL_WIKI= =URL_WIKI= +=\URL_LISTS= =URL_LISTS= +=\URL_FORUMS= =URL_FORUMS= +=\URL_MIRRORS= =URL_MIRRORS= +=\URL_DOCS= =URL_DOCS= +=\URL_PROJECTS= =URL_PROJECTS= +=\URL_SVN= =URL_SVN= +=\URL_TRAC= =URL_TRAC= +=\URL_PLANET= =URL_PLANET= +------------------------------------- + ++=\MAIL_DOCS=+:: + This translation marker expands to CentOS documentation mailing + list address. For example, +=MAIL_DOCS=+. + ++=\LOCALE=+:: + This translation marker expands to the current locale information + used by *centos-art.sh* script. This value is + retrieved from the LANG environment variable and + should look like +=LOCALE=+. In case you need to retrieve the + language and country part separately one another, you can use the + +=\LOCALE_LL=+ and +=\LOCALE_CC=+, respectively. + ++=\REPO_TLDIR=+:: + This translation marker expands to the absolute path to + directory inside your workstation. For + example, +/home/al/Projects/CentOS/artwork/trunk+. + ++=\REPO_HOME=+, +=\TCAR_WORKDIR=+:: + This translation marker expands to the absolute path of your + working copy. For example, +/home/al/Projects/CentOS/artwork+. + +== Bugs + +See https://centos.org.cu/bugs/ + +== Authors + +The *tcar_setTranslationMarkers* function has received contributions +from the following people: + +- Alain Reguera Delgado , =COPYRIGHT_YEAR_LIST= + +== License + +Copyright (C) =COPYRIGHT_YEAR_LIST= =COPYRIGHT_HOLDER= + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts-docs/Understanding_Modules/Locales/en_US/understanding_modules.asciidoc.po b/tcar-scripts-docs/Understanding_Modules/Locales/en_US/understanding_modules.asciidoc.po new file mode 100644 index 0000000..8e5cef6 --- /dev/null +++ b/tcar-scripts-docs/Understanding_Modules/Locales/en_US/understanding_modules.asciidoc.po @@ -0,0 +1,2127 @@ +msgid "" +msgstr "" +"Project-Id-Version: understanding_modules.asciidoc 0.6\n" +"POT-Creation-Date: 2013-11-07 14:18-0500\n" +"PO-Revision-Date: 2013-11-07 14:18-0500\n" +"Last-Translator: Localization SIG \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Understanding Modules" +msgstr "Understanding Modules" + +msgid "Oct 2013" +msgstr "Oct 2013" + +msgid "Alain" +msgstr "Alain" + +msgid "Reguera" +msgstr "Reguera" + +msgid "Delgado" +msgstr "Delgado" + +msgid "al@centos.org.cu" +msgstr "al@centos.org.cu" + +msgid "ARD" +msgstr "ARD" + +msgid "0.1" +msgstr "0.1" + +msgid "Overview" +msgstr "Overview" + +msgid "" +"From version 0.5, the centos-art.sh script introduces the idea of modules to its base design. " +"Modules are a collection of functions written in Bash that can call " +"one another to create individual execution environments. They may " +"be nested to achieve high levels of maintainability and " +"extensibility. This make possible for modules writers to divide " +"complicated tasks into smaller tasks that can be easier to debug, " +"maintain and share with other modules efficiently (e.g., instead of " +"loading modules all at once, they are only loaded at demand and " +"unset once they conclude their execution)." +msgstr "" +"From version 0.5, the centos-art.sh script introduces the idea of modules to its base design. " +"Modules are a collection of functions written in Bash that can call " +"one another to create individual execution environments. They may " +"be nested to achieve high levels of maintainability and " +"extensibility. This make possible for modules writers to divide " +"complicated tasks into smaller tasks that can be easier to debug, " +"maintain and share with other modules efficiently (e.g., instead of " +"loading modules all at once, they are only loaded at demand and " +"unset once they conclude their execution)." + +msgid "" +"This article describes the modular design of centos-art.sh script. It is a good place for you to " +"start if you are planning to contribute new module environments to " +"centos-art.sh script or want " +"to know more about how it works. The next section delves into what " +"a module environment is, the three module types you can find in it " +"and the correct way of execute each one of them." +msgstr "" +"This article describes the modular design of centos-art.sh script. It is a good place for you to " +"start if you are planning to contribute new module environments to " +"centos-art.sh script or want " +"to know more about how it works. The next section delves into what " +"a module environment is, the three module types you can find in it " +"and the correct way of execute each one of them." + +msgid "Module Environment" +msgstr "Module Environment" + +msgid "" +"When you execute the centos-art.sh script you create an execution environment in which " +"variables and functions are defined. The execution environment is " +"the higher environment inside centos-art." +"sh script. It is considered to have a “global” scope, so " +"variables and functions defined in it are always available for any " +"function execution made from it. You can control the execution " +"environment of centos-art.sh " +"script through files centos-art.sh and " +"centos-art.conf.sh. These files don't provide " +"too much functionality so module environments are executed from " +"centos-art.sh, to extend its functionality." +msgstr "" +"When you execute the centos-art.sh script you create an execution environment in which " +"variables and functions are defined. The execution environment is " +"the higher environment inside centos-art." +"sh script. It is considered to have a “global” scope, so " +"variables and functions defined in it are always available for any " +"function execution made from it. You can control the execution " +"environment of centos-art.sh " +"script through files centos-art.sh and " +"centos-art.conf.sh. These files don't provide " +"too much functionality so module environments are executed from " +"centos-art.sh, to extend its functionality." + +msgid "" +"Module environments are made of small functions that perform small " +"tasks and can be further executed in a specific order to produce " +"the desired result. Module environments are executed and destroyed " +"at demand. Inside centos-art.sh, module environments can be either “parent modules,” " +"“child modules,” or “sibling modules.”" +msgstr "" +"Module environments are made of small functions that perform small " +"tasks and can be further executed in a specific order to produce " +"the desired result. Module environments are executed and destroyed " +"at demand. Inside centos-art.sh, module environments can be either “parent modules,” " +"“child modules,” or “sibling modules.”" + +msgid "Parent Modules" +msgstr "Parent Modules" + +msgid "" +"Parent modules are initiated by executing the tcar_setModuleEnvironment function with the " +"-t parent option set on it. " +"Parent modules are very simple in design and you can use them to " +"implement simple solutions quickly. Normally, when you execute a " +"parent module, you initiate the highest module environment possible " +"inside centos-art.sh script. " +"Because of such high scope, parent modules are frequently used to " +"define module's global variables, interpret module-specific options " +"passed through the command-line and execute the appropriate actions " +"based on them." +msgstr "" +"Parent modules are initiated by executing the tcar_setModuleEnvironment function with the " +"-t parent option set on it. " +"Parent modules are very simple in design and you can use them to " +"implement simple solutions quickly. Normally, when you execute a " +"parent module, you initiate the highest module environment possible " +"inside centos-art.sh script. " +"Because of such high scope, parent modules are frequently used to " +"define module's global variables, interpret module-specific options " +"passed through the command-line and execute the appropriate actions " +"based on them." + +msgid "" +"In , we have executed the " +"hello module with the " +"—greeting=hi and —debug options through the command-line. " +"In this example, centos-art.sh " +"script executes a parent module named hello, processes the module-specific options passed " +"through the command-line, prints a greeting message to standard " +"output and exits successfully." +msgstr "" +"In , we have executed the " +"hello module with the " +"—greeting=hi and —debug options through the command-line. " +"In this example, centos-art.sh " +"script executes a parent module named hello, processes the module-specific options passed " +"through the command-line, prints a greeting message to standard " +"output and exits successfully." + +msgid "Debugging execution of parent modules" +msgstr "Debugging execution of parent modules" + +#, no-wrap +msgid "" +"Thu 10 Oct 2013 11:53:28 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_ARGUMENT --greeting=hi\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:53:28 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:53:28 PM CDT -------------------------> hello --greeting=hi\n" +"hi\n" +"Thu 10 Oct 2013 11:53:28 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:53:28 PM CDT <========================= [0] | main" +msgstr "" +"Thu 10 Oct 2013 11:53:28 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_ARGUMENT --greeting=hi\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:53:28 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:53:28 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:53:28 PM CDT -------------------------> hello --greeting=hi\n" +"hi\n" +"Thu 10 Oct 2013 11:53:28 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:53:28 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:53:28 PM CDT <========================= [0] | main" + +msgid "" +" describes an entire module " +"environment in action. With this information you can create your " +"own module environment, already. However, when your module is " +"getting too much complicated you probably want to divide it in " +"smaller pieces that you can execute accordingly, based on the " +"purpose you defined for it. Such kind of division can be " +"implemented as described in ." +msgstr "" +" describes an entire module " +"environment in action. With this information you can create your " +"own module environment, already. However, when your module is " +"getting too much complicated you probably want to divide it in " +"smaller pieces that you can execute accordingly, based on the " +"purpose you defined for it. Such kind of division can be " +"implemented as described in ." + +msgid "Summary" +msgstr "Summary" + +msgid "" +"This section has covered basic concepts related to module " +"environment inside centos-art.sh script. The next section takes these concepts and focuses " +"on the implementation of them. Once you finish it, you should be " +"able of writing your own module environments from scratch inside " +"centos-art.sh script." +msgstr "" +"This section has covered basic concepts related to module " +"environment inside centos-art.sh script. The next section takes these concepts and focuses " +"on the implementation of them. Once you finish it, you should be " +"able of writing your own module environments from scratch inside " +"centos-art.sh script." + +msgid "Module Implementation" +msgstr "Module Implementation" + +msgid "" +"The centos-art.sh script " +"implements module environments inside the “Modules” directory, as described in ." +msgstr "" +"The centos-art.sh script " +"implements module environments inside the “Modules” directory, as described in ." + +msgid "" +"For example, consider the creation of a module named hello. The purpose of this module is to print " +"a greeting message to standard output and then exit successfully. " +"To create such a module, we need to create a directory named " +"“Hello” inside the “Modules” directory and put an initialization " +"file named “hello.sh” inside it. Because we want to execute the " +"hello module from centos-art.sh script command-line, we " +"put it in the first level of directories of Modules directory. See ." +msgstr "" +"For example, consider the creation of a module named hello. The purpose of this module is to print " +"a greeting message to standard output and then exit successfully. " +"To create such a module, we need to create a directory named " +"“Hello” inside the “Modules” directory and put an initialization " +"file named “hello.sh” inside it. Because we want to execute the " +"hello module from centos-art.sh script command-line, we " +"put it in the first level of directories of Modules directory. See ." + +msgid "Directory layout used by parent modules" +msgstr "Directory layout used by parent modules" + +#, no-wrap +msgid "" +".\n" +"|-- COPYING \n" +"|-- Locales/ \n" +"|-- Manuals/ \n" +"|-- Modules/ \n" +"| `-- Hello/ \n" +"| |-- hello.sh \n" +"| `-- hello_getOptions.sh \n" +"|-- Scripts/ \n" +"|-- centos-art.conf.sh \n" +"`-- centos-art.sh " +msgstr "" +".\n" +"|-- COPYING \n" +"|-- Locales/ \n" +"|-- Manuals/ \n" +"|-- Modules/ \n" +"| `-- Hello/ \n" +"| |-- hello.sh \n" +"| `-- hello_getOptions.sh \n" +"|-- Scripts/ \n" +"|-- centos-art.conf.sh \n" +"`-- centos-art.sh " + +msgid "Script's copying conditions." +msgstr "Script's copying conditions." + +msgid "Script's localization files." +msgstr "Script's localization files." + +msgid "Script's documentation files." +msgstr "Script's documentation files." + +msgid "Script's modules. Here is where you store parent modules." +msgstr "Script's modules. Here is where you store parent modules." + +msgid "Parent directory of module named hello." +msgstr "Parent directory of module named hello." + +msgid "Initialization file of module named hello." +msgstr "Initialization file of module named hello." + +msgid "Function related to module named hello." +msgstr "Function related to module named hello." + +msgid "Script's global functions." +msgstr "Script's global functions." + +msgid "Script's configuration file." +msgstr "Script's configuration file." + +msgid "Script's initialization file." +msgstr "Script's initialization file." + +msgid "" +" presents a complete module " +"layout you can use as reference to create your own module " +"implementations. However, it is not complete yet. At this point, " +"when you execute centos-art.sh, it is able to find out hello module's initialization file and execute it but that " +"prints an error message because the initialization file doesn't " +"have a function definition inside. It is completely empty. In order " +"for centos-art.sh script to do " +"something useful, you need to write a function definition inside " +"the initialization file, as described in ." +msgstr "" +" presents a complete module " +"layout you can use as reference to create your own module " +"implementations. However, it is not complete yet. At this point, " +"when you execute centos-art.sh, it is able to find out hello module's initialization file and execute it but that " +"prints an error message because the initialization file doesn't " +"have a function definition inside. It is completely empty. In order " +"for centos-art.sh script to do " +"something useful, you need to write a function definition inside " +"the initialization file, as described in ." + +msgid "The Initialization File" +msgstr "The Initialization File" + +msgid "" +"The module's initialization file contains the module's main " +"function definition and a comment describing what it does on top of " +"it. This comment includes a small description about what the " +"function does, a written by section, the copyright note and the " +"legal status of the file. The function definition is set later and " +"must be written using the long definition format (i.e., it must " +"begin with the word “function,” then the " +"function name, and finally the “{” character). " +"The name of the function is exactly the same of the initialization " +"file but without the .sh extension. These " +"conditions are required in order for centos-art.sh script to execute the function " +"definition and destroy it when it is no longer used. See ." +msgstr "" +"The module's initialization file contains the module's main " +"function definition and a comment describing what it does on top of " +"it. This comment includes a small description about what the " +"function does, a written by section, the copyright note and the " +"legal status of the file. The function definition is set later and " +"must be written using the long definition format (i.e., it must " +"begin with the word “function,” then the " +"function name, and finally the “{” character). " +"The name of the function is exactly the same of the initialization " +"file but without the .sh extension. These " +"conditions are required in order for centos-art.sh script to execute the function " +"definition and destroy it when it is no longer used. See ." + +msgid "" +"The function definition is where you write all the commands you " +"want the module runs, once executed. The function definition can be " +"as simple as just one single line of code or as complex as you can " +"imagine. It is the place where you express your solutions. However, " +"when writing initialization files, it is considered a good practice " +"to avoid any sort of complexity. Instead, try to write small and " +"simple initialization files. In case you notice the initialization " +"file is growing up inevitably, you can reduce its code by " +"refactoring it. To do this, you can use resources like module " +"related functions and child modules. These resources are described " +"in , and they help you to " +"keep the initialization file in a clean state, easy to understand, " +"maintain and debug." +msgstr "" +"The function definition is where you write all the commands you " +"want the module runs, once executed. The function definition can be " +"as simple as just one single line of code or as complex as you can " +"imagine. It is the place where you express your solutions. However, " +"when writing initialization files, it is considered a good practice " +"to avoid any sort of complexity. Instead, try to write small and " +"simple initialization files. In case you notice the initialization " +"file is growing up inevitably, you can reduce its code by " +"refactoring it. To do this, you can use resources like module " +"related functions and child modules. These resources are described " +"in , and they help you to " +"keep the initialization file in a clean state, easy to understand, " +"maintain and debug." + +msgid "Initialization file used by hello module" +msgstr "Initialization file used by hello module" + +#, no-wrap +msgid "" +"#!/bin/bash\n" +"######################################################################\n" +"#\n" +"# hello.sh -- Print out greetings to standard output and exit\n" +"# successfully.\n" +"#\n" +"# Written by:\n" +"# * Alain Reguera Delgado <al@centos.org.cu>, 2013\n" +"#\n" +"# Copyright (C) 2009-2013 The CentOS Artwork SIG\n" +"#\n" +"# This program is free software; you can redistribute it and/or modify\n" +"# it under the terms of the GNU General Public License as published by\n" +"# the Free Software Foundation; either version 2 of the License, or (at\n" +"# your option) any later version.\n" +"#\n" +"# This program is distributed in the hope that it will be useful, but\n" +"# WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"# General Public License for more details.\n" +"#\n" +"# You should have received a copy of the GNU General Public License\n" +"# along with this program; if not, write to the Free Software\n" +"# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n" +"#\n" +"######################################################################\n" +"\n" +"function hello {\n" +"\n" +" tcar_printMessage \"`gettext \"Hello, World!\"`\" --as-stdout-line\n" +"\n" +"}" +msgstr "" +"#!/bin/bash\n" +"######################################################################\n" +"#\n" +"# hello.sh -- Print out greetings to standard output and exit\n" +"# successfully.\n" +"#\n" +"# Written by:\n" +"# * Alain Reguera Delgado <al@centos.org.cu>, 2013\n" +"#\n" +"# Copyright (C) 2009-2013 The CentOS Artwork SIG\n" +"#\n" +"# This program is free software; you can redistribute it and/or modify\n" +"# it under the terms of the GNU General Public License as published by\n" +"# the Free Software Foundation; either version 2 of the License, or (at\n" +"# your option) any later version.\n" +"#\n" +"# This program is distributed in the hope that it will be useful, but\n" +"# WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"# General Public License for more details.\n" +"#\n" +"# You should have received a copy of the GNU General Public License\n" +"# along with this program; if not, write to the Free Software\n" +"# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n" +"#\n" +"######################################################################\n" +"\n" +"function hello {\n" +"\n" +" tcar_printMessage \"`gettext \"Hello, World!\"`\" --as-stdout-line\n" +"\n" +"}" + +msgid "" +"The function definition described in uses the tcar_printMessage global function to print localized versions of the string " +"“Hello, World!” to standard output. Because there isn't no other " +"command in the function definition, when the greeting message is " +"printed out, centos-art.sh " +"destroys the hello module and " +"exit successfully. This process is more visible when also pass the " +"—debug option. See ." +msgstr "" +"The function definition described in uses the tcar_printMessage global function to print localized versions of the string " +"“Hello, World!” to standard output. Because there isn't no other " +"command in the function definition, when the greeting message is " +"printed out, centos-art.sh " +"destroys the hello module and " +"exit successfully. This process is more visible when also pass the " +"—debug option. See ." + +msgid "" +"Congratulations! You've implemented a module environment inside " +"centos-art.sh script. With the " +"information you have so far, you are able to create your own module " +"environment implementations. The next section delves into available " +"resources you can use to simplify module environments when the " +"initialization file starts growing inevitably and complexity " +"daemons begin hammering your head." +msgstr "" +"Congratulations! You've implemented a module environment inside " +"centos-art.sh script. With the " +"information you have so far, you are able to create your own module " +"environment implementations. The next section delves into available " +"resources you can use to simplify module environments when the " +"initialization file starts growing inevitably and complexity " +"daemons begin hammering your head." + +msgid "Module Optimization" +msgstr "Module Optimization" + +msgid "" +"The centos-art.sh script " +"provides four resources you can use to optimize your module " +"implementations. These resources are “related functions,” “child " +"modules,” “sibling modules” and “recursive modules”." +msgstr "" +"The centos-art.sh script " +"provides four resources you can use to optimize your module " +"implementations. These resources are “related functions,” “child " +"modules,” “sibling modules” and “recursive modules”." + +msgid "Related Functions" +msgstr "Related Functions" + +msgid "" +"Related functions are very useful when you need to simplify the " +"function definition of one initialization file. For example, " +"consider extending the hello " +"module so it is able to interpret arguments passed through the " +"command-line. Now, inside the initialization file, we have some " +"variable definitions, one function call to a module related " +"function named hello_getOptions, and a decision on how the greeting message must be " +"printed out based on the collected actions. See ." +msgstr "" +"Related functions are very useful when you need to simplify the " +"function definition of one initialization file. For example, " +"consider extending the hello " +"module so it is able to interpret arguments passed through the " +"command-line. Now, inside the initialization file, we have some " +"variable definitions, one function call to a module related " +"function named hello_getOptions, and a decision on how the greeting message must be " +"printed out based on the collected actions. See ." + +msgid "Initialization file used by hello module (extended)" +msgstr "Initialization file used by hello module (extended)" + +#, no-wrap +msgid "" +"function hello {\n" +"\n" +" # Define default greeting message.\n" +" local HELLO_WORLD=\"`gettext \"Hello, World!\"`\"\n" +"\n" +" # Define actions variable. Here is where actions related to\n" +" # module-specific options are stored in for further processing.\n" +" local ACTIONS=''\n" +"\n" +" # Interpret module-specific options and store related actions.\n" +" hello_getOptions\n" +"\n" +" # Print greeting message\n" +" if [[ -z ${ACTIONS} ]];then\n" +" # Using parent module.\n" +" tcar_printMessage \"${HELLO_WORLD}\" --as-stdout-line\n" +" else\n" +" # Using child module.\n" +" tcar_setModuleEnvironment -m 'output' -t 'child'\n" +" fi\n" +"\n" +"}" +msgstr "" +"function hello {\n" +"\n" +" # Define default greeting message.\n" +" local HELLO_WORLD=\"`gettext \"Hello, World!\"`\"\n" +"\n" +" # Define actions variable. Here is where actions related to\n" +" # module-specific options are stored in for further processing.\n" +" local ACTIONS=''\n" +"\n" +" # Interpret module-specific options and store related actions.\n" +" hello_getOptions\n" +"\n" +" # Print greeting message\n" +" if [[ -z ${ACTIONS} ]];then\n" +" # Using parent module.\n" +" tcar_printMessage \"${HELLO_WORLD}\" --as-stdout-line\n" +" else\n" +" # Using child module.\n" +" tcar_setModuleEnvironment -m 'output' -t 'child'\n" +" fi\n" +"\n" +"}" + +msgid "" +"When you execute the command centos-art." +"sh hello with the —" +"greeting=hi argument, centos-" +"art.sh stores module-specific arguments inside the " +"TCAR_MODULE_ARGUMENT variable, creates a list of " +"all function definitions inside the module directory and exports " +"them. This includes the function definition of the initialization " +"file itself. Then centos-art.sh executes the function definition set inside the " +"initialization file and leaves all other function definitions, " +"already in memory, waiting for further execution. At this point, " +"the hello initialization " +"function sets some default values and execute the hello_getOptions function to parse all the " +"arguments passed through the command-line and redefines the " +"ACTIONS variable based on them. Using the " +"ACTIONS variables it decides whether to print " +"the greeting message immediately or execute the child modules named " +"output so it decides what to " +"do with the information collected so far." +msgstr "" +"When you execute the command centos-art." +"sh hello with the —" +"greeting=hi argument, centos-" +"art.sh stores module-specific arguments inside the " +"TCAR_MODULE_ARGUMENT variable, creates a list of " +"all function definitions inside the module directory and exports " +"them. This includes the function definition of the initialization " +"file itself. Then centos-art.sh executes the function definition set inside the " +"initialization file and leaves all other function definitions, " +"already in memory, waiting for further execution. At this point, " +"the hello initialization " +"function sets some default values and execute the hello_getOptions function to parse all the " +"arguments passed through the command-line and redefines the " +"ACTIONS variable based on them. Using the " +"ACTIONS variables it decides whether to print " +"the greeting message immediately or execute the child modules named " +"output so it decides what to " +"do with the information collected so far." + +msgid "" +" defines the options " +"you can pass to hello module " +"and the associated actions they must perform for each of them. " +"Actions aren't immediately executed here. Instead, they are stored " +"in the ACTIONS variable for further processing " +"(e.g., we store the names of the modules we want to execute later). " +"The ACTIONS variable was defined in the " +"initialization file so it has a global scope inside the module " +"environment and is reachable from any related function executed " +"inside it. Storing the actions this way lets the hello module to collect information about " +"different actions and execute them all in just one command. When " +"all options have been parsed, only non-option arguments remain in " +"the TCAR_MODULE_ARGUMENT variable." +msgstr "" +" defines the options " +"you can pass to hello module " +"and the associated actions they must perform for each of them. " +"Actions aren't immediately executed here. Instead, they are stored " +"in the ACTIONS variable for further processing " +"(e.g., we store the names of the modules we want to execute later). " +"The ACTIONS variable was defined in the " +"initialization file so it has a global scope inside the module " +"environment and is reachable from any related function executed " +"inside it. Storing the actions this way lets the hello module to collect information about " +"different actions and execute them all in just one command. When " +"all options have been parsed, only non-option arguments remain in " +"the TCAR_MODULE_ARGUMENT variable." + +msgid "Related function definition (hello_getOptions)" +msgstr "Related function definition (hello_getOptions)" + +#, no-wrap +msgid "" +"function hello_getOptions {\n" +"\n" +" # Define short options we want to support.\n" +" local ARGSS=\"h::,v,g:,l,u,c,r\"\n" +"\n" +" # Define long options we want to support.\n" +" local ARGSL=\"help::,version,greeting:,lower,upper,camel,random\"\n" +"\n" +" # Redefine arguments using getopt(1) command parser.\n" +" tcar_setModuleArguments\n" +"\n" +" # Reset positional parameters on this function, using output\n" +" # produced from (getopt) arguments parser.\n" +" eval set -- \"${TCAR_MODULE_ARGUMENT}\"\n" +"\n" +" # Look for options passed through command-line.\n" +" while true; do\n" +" case \"${1}\" in\n" +"\n" +" -h | --help )\n" +" tcar_printHelp \"${2}\"\n" +" ;;\n" +"\n" +" -v | --version )\n" +" tcar_printVersion \"${TCAR_MODULE_NAME}\"\n" +" ;;\n" +"\n" +" -g | --greeting )\n" +" HELLO_WORLD=\"${2:-${HELLO_WORLD}}\"\n" +" shift 2\n" +" ;;\n" +"\n" +" -l | --lower )\n" +" ACTIONS=\"lower ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -u | --upper )\n" +" ACTIONS=\"upper ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -c | --camel )\n" +" ACTIONS=\"camel ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -r | --random )\n" +" ACTIONS=\"random ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -- )\n" +" shift 1\n" +" break\n" +" ;;\n" +" esac\n" +" done\n" +"\n" +" # Redefine arguments using current positional parameters. Only\n" +" # paths should remain as arguments, at this point.\n" +" TCAR_MODULE_ARGUMENT=\"${@}\"\n" +"\n" +"}" +msgstr "" +"function hello_getOptions {\n" +"\n" +" # Define short options we want to support.\n" +" local ARGSS=\"h::,v,g:,l,u,c,r\"\n" +"\n" +" # Define long options we want to support.\n" +" local ARGSL=\"help::,version,greeting:,lower,upper,camel,random\"\n" +"\n" +" # Redefine arguments using getopt(1) command parser.\n" +" tcar_setModuleArguments\n" +"\n" +" # Reset positional parameters on this function, using output\n" +" # produced from (getopt) arguments parser.\n" +" eval set -- \"${TCAR_MODULE_ARGUMENT}\"\n" +"\n" +" # Look for options passed through command-line.\n" +" while true; do\n" +" case \"${1}\" in\n" +"\n" +" -h | --help )\n" +" tcar_printHelp \"${2}\"\n" +" ;;\n" +"\n" +" -v | --version )\n" +" tcar_printVersion \"${TCAR_MODULE_NAME}\"\n" +" ;;\n" +"\n" +" -g | --greeting )\n" +" HELLO_WORLD=\"${2:-${HELLO_WORLD}}\"\n" +" shift 2\n" +" ;;\n" +"\n" +" -l | --lower )\n" +" ACTIONS=\"lower ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -u | --upper )\n" +" ACTIONS=\"upper ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -c | --camel )\n" +" ACTIONS=\"camel ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -r | --random )\n" +" ACTIONS=\"random ${ACTIONS}\"\n" +" shift 1\n" +" ;;\n" +"\n" +" -- )\n" +" shift 1\n" +" break\n" +" ;;\n" +" esac\n" +" done\n" +"\n" +" # Redefine arguments using current positional parameters. Only\n" +" # paths should remain as arguments, at this point.\n" +" TCAR_MODULE_ARGUMENT=\"${@}\"\n" +"\n" +"}" + +msgid "" +" presents the " +"standard construction we use inside centos-art.sh script for parsing arguments passed " +"through the command-line in a per-module basis. As convention, all " +"the parent modules you write must be able to interpret the " +"—help and —version options using the construction " +"described here." +msgstr "" +" presents the " +"standard construction we use inside centos-art.sh script for parsing arguments passed " +"through the command-line in a per-module basis. As convention, all " +"the parent modules you write must be able to interpret the " +"—help and —version options using the construction " +"described here." + +msgid "" +"Related functions are very useful when you are refactoring the " +"initialization file of a module. However, they aren't so efficient " +"when you need to execute them at demand (e.g., based on specific " +"conditions). When a module is executed, related functions are " +"exported to centos-art.sh " +"script execution environment. They remain there, consuming memory, " +"until the module they belong to is destroyed. If you create a " +"related function and never execute it, it will consume memory, as " +"well. So, use related functions when you are absolutely sure they " +"will be executed at some point, in one single iteration of " +"centos-art.sh script. If you " +"need to execute functions at demand, use child modules, instead." +msgstr "" +"Related functions are very useful when you are refactoring the " +"initialization file of a module. However, they aren't so efficient " +"when you need to execute them at demand (e.g., based on specific " +"conditions). When a module is executed, related functions are " +"exported to centos-art.sh " +"script execution environment. They remain there, consuming memory, " +"until the module they belong to is destroyed. If you create a " +"related function and never execute it, it will consume memory, as " +"well. So, use related functions when you are absolutely sure they " +"will be executed at some point, in one single iteration of " +"centos-art.sh script. If you " +"need to execute functions at demand, use child modules, instead." + +msgid "Child Modules" +msgstr "Child Modules" + +msgid "" +"Child modules are initiated by executing the tcar_setModuleEnvironment function with the -t child option set on it. Child modules " +"have the characteristic of being nested modules. They cannot be " +"executed from the command-line. Normally, child modules are " +"executed from parent modules but they can be executed from other " +"child modules, too. When several child modules are executed in one " +"single iteration of centos-art.sh, they create a chain of modules. A chain of modules is " +"very useful in situations where you want to divide one large task " +"into smaller tasks and also control which of these smaller tasks is " +"executed based on specific conditions (e.g., you may want to render " +"images or documentation, but not both, in one single iteration of " +"centos-art.sh script). In a " +"chain of modules, lower modules in the chain (those started last) " +"have access to information set by modules higher in the chain " +"(those started first), but not the opposite. When processing " +"information this way, modules aren't destroyed until the last " +"module executed in the chain has finished its work (e.g., all the " +"commands inside it have been executed). At that point, child " +"modules are destroyed in the reverse order they were executed." +msgstr "" +"Child modules are initiated by executing the tcar_setModuleEnvironment function with the -t child option set on it. Child modules " +"have the characteristic of being nested modules. They cannot be " +"executed from the command-line. Normally, child modules are " +"executed from parent modules but they can be executed from other " +"child modules, too. When several child modules are executed in one " +"single iteration of centos-art.sh, they create a chain of modules. A chain of modules is " +"very useful in situations where you want to divide one large task " +"into smaller tasks and also control which of these smaller tasks is " +"executed based on specific conditions (e.g., you may want to render " +"images or documentation, but not both, in one single iteration of " +"centos-art.sh script). In a " +"chain of modules, lower modules in the chain (those started last) " +"have access to information set by modules higher in the chain " +"(those started first), but not the opposite. When processing " +"information this way, modules aren't destroyed until the last " +"module executed in the chain has finished its work (e.g., all the " +"commands inside it have been executed). At that point, child " +"modules are destroyed in the reverse order they were executed." + +msgid "" +"For example, when you execute the hello module with both —debug and —upper option, " +"centos-art.sh script creates a " +"chain of three modules to produce the greeting message. Firstly, it " +"begins by executing the parent module named hello, then it continues with the child module named " +"output which in turn executes " +"the child module name lower to " +"finally print the expected greeting message. In this example, the " +"module named lower is the last " +"module in the chain of executed modules. It has access to all " +"information defined by earlier modules (e.g., in hello and output modules) and none of its earlier modules will be " +"destroyed until it has finished its work. This process becomes more " +"visible when you take a look at ." +msgstr "" +"For example, when you execute the hello module with both —debug and —upper option, " +"centos-art.sh script creates a " +"chain of three modules to produce the greeting message. Firstly, it " +"begins by executing the parent module named hello, then it continues with the child module named " +"output which in turn executes " +"the child module name lower to " +"finally print the expected greeting message. In this example, the " +"module named lower is the last " +"module in the chain of executed modules. It has access to all " +"information defined by earlier modules (e.g., in hello and output modules) and none of its earlier modules will be " +"destroyed until it has finished its work. This process becomes more " +"visible when you take a look at ." + +msgid "Debugging execution of child modules" +msgstr "Debugging execution of child modules" + +#, no-wrap +msgid "" +"Thu 10 Oct 2013 11:52:41 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT --upper --greeting=hi\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:52:41 PM CDT -------------------------> hello --upper --greeting=hi\n" +"Thu 10 Oct 2013 11:52:41 PM CDT =========================> [1] | hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [1]=output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAIN output.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT export -f output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT -------------------------> output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT =========================> [2] | output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [2]=upper\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Upper\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Upper/Modules\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Upper/Manuals\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Upper/Configs\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Upper/upper.sh\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TEXTDOMAIN upper.sh\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:52:42 PM CDT export -f upper\n" +"Thu 10 Oct 2013 11:52:42 PM CDT -------------------------> upper\n" +"HI\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- upper\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f upper\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <========================= [2] | output\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- output\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f output\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <========================= [1] | hello\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <========================= [0] | main" +msgstr "" +"Thu 10 Oct 2013 11:52:41 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT --upper --greeting=hi\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:52:41 PM CDT -------------------------> hello --upper --greeting=hi\n" +"Thu 10 Oct 2013 11:52:41 PM CDT =========================> [1] | hello\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [1]=output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAIN output.sh\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:52:41 PM CDT export -f output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT -------------------------> output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT =========================> [2] | output\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [2]=upper\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Upper\n" +"Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Upper/Modules\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Upper/Manuals\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Upper/Configs\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Upper/upper.sh\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TEXTDOMAIN upper.sh\n" +"Thu 10 Oct 2013 11:52:42 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:52:42 PM CDT export -f upper\n" +"Thu 10 Oct 2013 11:52:42 PM CDT -------------------------> upper\n" +"HI\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- upper\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f upper\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <========================= [2] | output\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- output\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f output\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <========================= [1] | hello\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:52:42 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:52:42 PM CDT <========================= [0] | main" + +msgid "" +"The module environment described in shows the child modules' ability of reducing scope as " +"they get deeper in the chain of executed modules. However, child " +"modules lack the possibility of nest modules that share the same " +"scope. For example, in the hello module described above, you cannot execute the modules " +"lower or upper from camel module, as if they were child modules of it. That is not " +"possible because they all have the same scope, which is, to print " +"the greeting message to standard output. Child modules are " +"conceived to reduce the module scope as new child modules are " +"executed. When you need to execute new module environments and, " +"also, retain the last scope from which the new module is executed, " +"you need to use “sibling modules,” instead." +msgstr "" +"The module environment described in shows the child modules' ability of reducing scope as " +"they get deeper in the chain of executed modules. However, child " +"modules lack the possibility of nest modules that share the same " +"scope. For example, in the hello module described above, you cannot execute the modules " +"lower or upper from camel module, as if they were child modules of it. That is not " +"possible because they all have the same scope, which is, to print " +"the greeting message to standard output. Child modules are " +"conceived to reduce the module scope as new child modules are " +"executed. When you need to execute new module environments and, " +"also, retain the last scope from which the new module is executed, " +"you need to use “sibling modules,” instead." + +msgid "Sibling Modules" +msgstr "Sibling Modules" + +msgid "" +"Sibling modules are initiated by executing the tcar_setModuleEnvironment function with the " +"-t sibling option set on it. " +"Sibling modules are another type of nested modules but, in contrast " +"with child modules, sibling modules cannot be executed from parent " +"modules. Normally, sibling modules are executed from other sibling " +"modules but, considering the context, they can be executed from " +"child module too, to initiate sibling processing. When several " +"siblings modules are executed, they also build a chain of modules. " +"In contrast with the chain of child modules, the chain of sibling " +"modules destroys the last sibling module executed before executing " +"the next sibling module. This make the chain to stop its growing at " +"sibling module processing, unless you call a child module from a " +"sibling module. In this case, the chain expansion would continue as " +"long as the number of child modules you execute. This process " +"becomes more visible when you take a look at ." +msgstr "" +"Sibling modules are initiated by executing the tcar_setModuleEnvironment function with the " +"-t sibling option set on it. " +"Sibling modules are another type of nested modules but, in contrast " +"with child modules, sibling modules cannot be executed from parent " +"modules. Normally, sibling modules are executed from other sibling " +"modules but, considering the context, they can be executed from " +"child module too, to initiate sibling processing. When several " +"siblings modules are executed, they also build a chain of modules. " +"In contrast with the chain of child modules, the chain of sibling " +"modules destroys the last sibling module executed before executing " +"the next sibling module. This make the chain to stop its growing at " +"sibling module processing, unless you call a child module from a " +"sibling module. In this case, the chain expansion would continue as " +"long as the number of child modules you execute. This process " +"becomes more visible when you take a look at ." + +msgid "" +"In , we've executed the " +"hello module with the " +"—greeting=hi, —camel, and —debug options. In this example, centos-art.sh script executes the hello module then the output module which in turn executes the camel module. At this point, can " +"appreciate how the chain of modules stop growing. Observe that " +"camel module has gained the " +"position 2 in the chain of modules and executes the upper module which takes the position 3, as " +"expected. Now, when upper " +"module finishes its work it is destroyed and the module's counter " +"is reset to its previous value which is 2 (the one set by camel module). Then, camel executes the lower module which take position 3 at the chain of " +"modules until it finishes. When it finishes, the camel module finishes its work and is " +"destroyed, then output, then " +"hello." +msgstr "" +"In , we've executed the " +"hello module with the " +"—greeting=hi, —camel, and —debug options. In this example, centos-art.sh script executes the hello module then the output module which in turn executes the camel module. At this point, can " +"appreciate how the chain of modules stop growing. Observe that " +"camel module has gained the " +"position 2 in the chain of modules and executes the upper module which takes the position 3, as " +"expected. Now, when upper " +"module finishes its work it is destroyed and the module's counter " +"is reset to its previous value which is 2 (the one set by camel module). Then, camel executes the lower module which take position 3 at the chain of " +"modules until it finishes. When it finishes, the camel module finishes its work and is " +"destroyed, then output, then " +"hello." + +msgid "Debugging execution of sibling modules" +msgstr "Debugging execution of sibling modules" + +#, no-wrap +msgid "" +"Thu 10 Oct 2013 11:51:42 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_ARGUMENT --camel --greeting=hi\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> hello --camel --greeting=hi\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [1] | hello\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [1]=output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN output.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [2] | output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [2]=camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Camel/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Camel/Manuals\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Camel/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Camel/Configs\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Camel/camel.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN camel.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Camel/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [3] | camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [3]=upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE sibling\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Upper/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Upper/Manuals\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Upper/Configs\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Upper/upper.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN upper.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> upper\n" +"H\n" +"Thu 10 Oct 2013 11:51:43 PM CDT <------------------------- upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT unset -f upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT <========================= [3] | camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [3] | camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [3]=lower\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE sibling\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Lower\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Lower/Modules\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Lower/Manuals\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Lower/Locales\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Lower/Configs\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Lower/lower.sh\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TEXTDOMAIN lower.sh\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Lower/Locales\n" +"Thu 10 Oct 2013 11:51:44 PM CDT export -f lower\n" +"Thu 10 Oct 2013 11:51:44 PM CDT -------------------------> lower\n" +"i\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- lower\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f lower\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [3] | camel\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- camel\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f camel\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [2] | output\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- output\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f output\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [1] | hello\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [0] | main" +msgstr "" +"Thu 10 Oct 2013 11:51:42 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_ARGUMENT --camel --greeting=hi\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:51:42 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> hello --camel --greeting=hi\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [1] | hello\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [1]=output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN output.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [2] | output\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [2]=camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Camel/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Camel/Manuals\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Camel/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Camel/Configs\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Camel/camel.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN camel.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Camel/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [3] | camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [3]=upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE sibling\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Upper/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Upper/Manuals\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Upper/Configs\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Upper/upper.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN upper.sh\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales\n" +"Thu 10 Oct 2013 11:51:43 PM CDT export -f upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> upper\n" +"H\n" +"Thu 10 Oct 2013 11:51:43 PM CDT <------------------------- upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT unset -f upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT <========================= [3] | camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT =========================> [3] | camel\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [3]=lower\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE sibling\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Lower\n" +"Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Lower/Modules\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Lower/Manuals\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Lower/Locales\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Lower/Configs\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Lower/lower.sh\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TEXTDOMAIN lower.sh\n" +"Thu 10 Oct 2013 11:51:44 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Lower/Locales\n" +"Thu 10 Oct 2013 11:51:44 PM CDT export -f lower\n" +"Thu 10 Oct 2013 11:51:44 PM CDT -------------------------> lower\n" +"i\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- lower\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f lower\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [3] | camel\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- camel\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f camel\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [2] | output\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- output\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f output\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [1] | hello\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:51:44 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:51:44 PM CDT <========================= [0] | main" + +msgid "" +" shows a single iteration " +"of centos-art.sh script " +"executing different types of modules. Normally, one module is " +"executed at some point and destroyed at the same point when it has " +"finished its work, however, what if the next immediate module you " +"are about to execute is the same module you are about to destroyed? " +"This is, you need to execute the last module in the chain of " +"executed modules again, but, this time, from itself. In cases like " +"this, the centos-art.sh script " +"doesn't destroy the last module. It cannot, because you are " +"certainly executing a new module from itself, so it has to wait for " +"this new call to finish in order to be destroyed. This kind of " +"processing is known as processing modules recursively." +msgstr "" +" shows a single iteration " +"of centos-art.sh script " +"executing different types of modules. Normally, one module is " +"executed at some point and destroyed at the same point when it has " +"finished its work, however, what if the next immediate module you " +"are about to execute is the same module you are about to destroyed? " +"This is, you need to execute the last module in the chain of " +"executed modules again, but, this time, from itself. In cases like " +"this, the centos-art.sh script " +"doesn't destroy the last module. It cannot, because you are " +"certainly executing a new module from itself, so it has to wait for " +"this new call to finish in order to be destroyed. This kind of " +"processing is known as processing modules recursively." + +msgid "Recursive Modules" +msgstr "Recursive Modules" + +msgid "" +"When one module environment executes itself we are in presence of a " +"recursive module execution. The execution of modules recursively " +"doesn't destroy the last module in the chain of executed modules " +"and doesn't increment or decrement the module counter either. The " +"module counter is somehow frozen until a different module " +"environment is executed. In these cases, the last module " +"environment remains in memory for the new module execution to make " +"use of. This process becomes more visible when you take a look at " +"." +msgstr "" +"When one module environment executes itself we are in presence of a " +"recursive module execution. The execution of modules recursively " +"doesn't destroy the last module in the chain of executed modules " +"and doesn't increment or decrement the module counter either. The " +"module counter is somehow frozen until a different module " +"environment is executed. In these cases, the last module " +"environment remains in memory for the new module execution to make " +"use of. This process becomes more visible when you take a look at " +"." + +msgid "" +"When you execute modules recursively, you should be very careful " +"not to get trapped into an endless loop." +msgstr "" +"When you execute modules recursively, you should be very careful " +"not to get trapped into an endless loop." + +msgid "" +"In , we've executed the " +"hello module with the " +"—greeting=hello, —random, and —" +"debug options. In this example, centos-art.sh script executes a parent module named " +"hello which in turn executes a " +"child module named output " +"which in turn executes a child module named random. At this point, the random modules executes itself five times (the number " +"of characters passed as value to greeting option) to print out " +"random letters from the greeting message. The output may have no " +"much sense on itself but the related debugging information helps to " +"understand the execution of modules recursively." +msgstr "" +"In , we've executed the " +"hello module with the " +"—greeting=hello, —random, and —" +"debug options. In this example, centos-art.sh script executes a parent module named " +"hello which in turn executes a " +"child module named output " +"which in turn executes a child module named random. At this point, the random modules executes itself five times (the number " +"of characters passed as value to greeting option) to print out " +"random letters from the greeting message. The output may have no " +"much sense on itself but the related debugging information helps to " +"understand the execution of modules recursively." + +msgid "Processing execution of modules recursively" +msgstr "Processing execution of modules recursively" + +#, no-wrap +msgid "" +"Thu 10 Oct 2013 11:50:03 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_ARGUMENT --random --greeting=Hello\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> hello --random --greeting=Hello\n" +"Thu 10 Oct 2013 11:50:04 PM CDT =========================> [1] | hello\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_NAME [1]=output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_LIST output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN output.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT =========================> [2] | output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_NAME [2]=random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Random/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Random/Manuals\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Random/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Random/Configs\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Random/random.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN random.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Random/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> random\n" +"H\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"H\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"l\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"l\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"H\n" +"Thu 10 Oct 2013 11:50:04 PM CDT <------------------------- random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT unset -f random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT <========================= [2] | output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT <------------------------- output\n" +"Thu 10 Oct 2013 11:50:05 PM CDT unset -f output\n" +"Thu 10 Oct 2013 11:50:05 PM CDT <========================= [1] | hello\n" +"Thu 10 Oct 2013 11:50:05 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:50:05 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:50:05 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:50:05 PM CDT <========================= [0] | main" +msgstr "" +"Thu 10 Oct 2013 11:50:03 PM CDT =========================> [0] | main\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_BASEDIR Automation/Modules\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_NAME [0]=hello\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_TYPE parent\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_ARGUMENT --random --greeting=Hello\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN hello.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f hello\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f hello_getOptions\n" +"Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> hello --random --greeting=Hello\n" +"Thu 10 Oct 2013 11:50:04 PM CDT =========================> [1] | hello\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_NAME [1]=output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_LIST output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN output.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT =========================> [2] | output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_NAME [2]=random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_TYPE child\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_ARGUMENT\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_LIST camel|lower|random|upper\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Random/Modules\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Random/Manuals\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Random/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Random/Configs\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Random/random.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN random.sh\n" +"Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Random/Locales\n" +"Thu 10 Oct 2013 11:50:04 PM CDT export -f random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> random\n" +"H\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"H\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"l\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"l\n" +"Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random\n" +"H\n" +"Thu 10 Oct 2013 11:50:04 PM CDT <------------------------- random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT unset -f random\n" +"Thu 10 Oct 2013 11:50:04 PM CDT <========================= [2] | output\n" +"Thu 10 Oct 2013 11:50:04 PM CDT <------------------------- output\n" +"Thu 10 Oct 2013 11:50:05 PM CDT unset -f output\n" +"Thu 10 Oct 2013 11:50:05 PM CDT <========================= [1] | hello\n" +"Thu 10 Oct 2013 11:50:05 PM CDT <------------------------- hello\n" +"Thu 10 Oct 2013 11:50:05 PM CDT unset -f hello\n" +"Thu 10 Oct 2013 11:50:05 PM CDT unset -f hello_getOptions\n" +"Thu 10 Oct 2013 11:50:05 PM CDT <========================= [0] | main" + +msgid "" +"Recursive execution of modules occurs only when the module you are " +"executing is considered sibling of the last module executed in the " +"chain of executed modules and they both have the same name. The " +"fact that no variable name is printed out in means that they were not created. The arrows " +"change from -> to ~>, " +"means that module's related functions weren't exported for the new " +"module execution either. It also means that the initialization " +"script is reusing both related functions and variables from the " +"last module environment in the chain of executed modules. In this " +"case the random module." +msgstr "" +"Recursive execution of modules occurs only when the module you are " +"executing is considered sibling of the last module executed in the " +"chain of executed modules and they both have the same name. The " +"fact that no variable name is printed out in means that they were not created. The arrows " +"change from -> to ~>, " +"means that module's related functions weren't exported for the new " +"module execution either. It also means that the initialization " +"script is reusing both related functions and variables from the " +"last module environment in the chain of executed modules. In this " +"case the random module." + +msgid "" +"This section covered the resources you can use to optimize module " +"environments inside centos-art.sh script. The next section summarizes the base files and " +"directories you might find inside one module environment." +msgstr "" +"This section covered the resources you can use to optimize module " +"environments inside centos-art.sh script. The next section summarizes the base files and " +"directories you might find inside one module environment." + +msgid "Module Structure" +msgstr "Module Structure" + +msgid "" +"The module structure takes place at the root location of centos-art.sh script, specifically, in a " +"directory named Modules. The Modules directory at centos-art.sh root location is the highest level which you can store " +"modules in. Modules stored in this location are known as parent " +"modules. Parent modules can optimize their structure by using " +"related functions, child modules, sibling modules and recursive " +"modules. Basically, all these types of modules share the same " +"structure. They all have function files and, optionally, module " +"related stuff like locales, documentation, configuration and " +"dependent modules. See ." +msgstr "" +"The module structure takes place at the root location of centos-art.sh script, specifically, in a " +"directory named Modules. The Modules directory at centos-art.sh root location is the highest level which you can store " +"modules in. Modules stored in this location are known as parent " +"modules. Parent modules can optimize their structure by using " +"related functions, child modules, sibling modules and recursive " +"modules. Basically, all these types of modules share the same " +"structure. They all have function files and, optionally, module " +"related stuff like locales, documentation, configuration and " +"dependent modules. See ." + +msgid "" +"From version 0.7 on, child modules no longer have Locales, Manuals and Configs " +"directories inside. Only initialization files, related functions " +"and Modules directory are supported inside child " +"modules. See Bug 114." +msgstr "" +"From version 0.7 on, child modules no longer have Locales, Manuals and Configs " +"directories inside. Only initialization files, related functions " +"and Modules directory are supported inside child " +"modules. See Bug 114." + +msgid "The directory structure of hello module" +msgstr "The directory structure of hello module" + +#, no-wrap +msgid "" +".\n" +"|-- COPYING\n" +"|-- Locales/\n" +"|-- Manuals/\n" +"|-- Modules/\n" +"| `-- Hello/ \n" +"| |-- Locales\n" +"| | |-- es_ES\n" +"| | | |-- LC_MESSAGES\n" +"| | | | `-- hello.sh.mo \n" +"| | | `-- hello.sh.po\n" +"| | `-- hello.sh.pot\n" +"| |-- Manuals\n" +"| | |-- hello.asciidoc\n" +"| | |-- man1\n" +"| | | `-- hello.1 \n" +"| | `-- render.conf \n" +"| |-- Modules\n" +"| | `-- Output \n" +"| | |-- Modules\n" +"| | | |-- Camel\n" +"| | | | `-- camel.sh\n" +"| | | |-- Lower \n" +"| | | | `-- lower.sh \n" +"| | | |-- Random\n" +"| | | | `-- random.sh\n" +"| | | `-- Upper\n" +"| | | `-- upper.sh\n" +"| | `-- output.sh \n" +"| |-- hello.sh \n" +"| `-- hello_getOptions.sh \n" +"|-- Scripts/\n" +"|-- centos-art.conf.sh\n" +"`-- centos-art.sh" +msgstr "" +".\n" +"|-- COPYING\n" +"|-- Locales/\n" +"|-- Manuals/\n" +"|-- Modules/\n" +"| `-- Hello/ \n" +"| |-- Locales\n" +"| | |-- es_ES\n" +"| | | |-- LC_MESSAGES\n" +"| | | | `-- hello.sh.mo \n" +"| | | `-- hello.sh.po\n" +"| | `-- hello.sh.pot\n" +"| |-- Manuals\n" +"| | |-- hello.asciidoc\n" +"| | |-- man1\n" +"| | | `-- hello.1 \n" +"| | `-- render.conf \n" +"| |-- Modules\n" +"| | `-- Output \n" +"| | |-- Modules\n" +"| | | |-- Camel\n" +"| | | | `-- camel.sh\n" +"| | | |-- Lower \n" +"| | | | `-- lower.sh \n" +"| | | |-- Random\n" +"| | | | `-- random.sh\n" +"| | | `-- Upper\n" +"| | | `-- upper.sh\n" +"| | `-- output.sh \n" +"| |-- hello.sh \n" +"| `-- hello_getOptions.sh \n" +"|-- Scripts/\n" +"|-- centos-art.conf.sh\n" +"`-- centos-art.sh" + +msgid "" +"Child module of centos-art.sh " +"script and parent module of output module." +msgstr "" +"Child module of centos-art.sh " +"script and parent module of output module." + +msgid "" +"Spanish translated strings of hello module." +msgstr "" +"Spanish translated strings of hello module." + +msgid "" +"Manpage shown when you request help of hello module." +msgstr "" +"Manpage shown when you request help of hello module." + +msgid "" +"Configuration file used to produce the manpage of hello module." +msgstr "" +"Configuration file used to produce the manpage of hello module." + +msgid "" +"Child module of hello module " +"and parent module of camel,lower,random and upper modules." +msgstr "" +"Child module of hello module " +"and parent module of camel,lower,random and upper modules." + +msgid "" +"Child module of output module " +"and sibling module of camel,random and upper module." +msgstr "" +"Child module of output module " +"and sibling module of camel,random and upper module." + +msgid "" +"Initialization file of lower " +"module." +msgstr "" +"Initialization file of lower " +"module." + +msgid "" +"Initialization file of output " +"module." +msgstr "" +"Initialization file of output " +"module." + +msgid "" +"Initialization file of hello " +"module." +msgstr "" +"Initialization file of hello " +"module." + +msgid "" +"Function file related to hello " +"module." +msgstr "" +"Function file related to hello " +"module." + +msgid "" +" presents a complete " +"structure for module environments you can use as reference for " +"writing your own modules. It begins with a parent module directory " +"named “Hello” which contains an initialization file (“hello.sh”) " +"and one related function file (“hello_getOptions.sh”). These files " +"work together with a child module named output which in turn has four child modules inside " +"named camel,lower,random, and upper. The " +"Locales directory contains the required " +"information to print hello " +"messages in different languages (e.g., it only supports Spanish " +"language in our example, but it can be extended to other languages " +"as needed). The Manuals directory contains all " +"the files required to produce documentation for the hello module (e.g., the information you read " +"when provide the —help option " +"in the command-line)." +msgstr "" +" presents a complete " +"structure for module environments you can use as reference for " +"writing your own modules. It begins with a parent module directory " +"named “Hello” which contains an initialization file (“hello.sh”) " +"and one related function file (“hello_getOptions.sh”). These files " +"work together with a child module named output which in turn has four child modules inside " +"named camel,lower,random, and upper. The " +"Locales directory contains the required " +"information to print hello " +"messages in different languages (e.g., it only supports Spanish " +"language in our example, but it can be extended to other languages " +"as needed). The Manuals directory contains all " +"the files required to produce documentation for the hello module (e.g., the information you read " +"when provide the —help option " +"in the command-line)." + +msgid "The Function Files" +msgstr "The Function Files" + +msgid "" +"The function files are used to create the initialization file of a " +"module and the related functions of it. As convention, both " +"initialization file and related function files are stored in the " +"module's directory, see ." +msgstr "" +"The function files are used to create the initialization file of a " +"module and the related functions of it. As convention, both " +"initialization file and related function files are stored in the " +"module's directory, see ." + +msgid "" +"At execution time, the definition of related function are exported " +"to centos-art.sh execution " +"environment before executing the function definition set inside the " +"initialization file, so related functions are always available for " +"you to use in the initialization file file and other related " +"functions as well. This is rather useful when you are refactoring " +"your initialization scripts and probably related functions as well." +msgstr "" +"At execution time, the definition of related function are exported " +"to centos-art.sh execution " +"environment before executing the function definition set inside the " +"initialization file, so related functions are always available for " +"you to use in the initialization file file and other related " +"functions as well. This is rather useful when you are refactoring " +"your initialization scripts and probably related functions as well." + +msgid "" +"As naming convention, related function files are written using the " +"module's name, then an underscore (“_”), then a descriptive name " +"and, finally, the “.sh” extension. The function " +"definition inside the function file also follows this convention " +"but excludes the “.sh” extension from name (e." +"g., the function file “hello_getOptions.sh” has " +"a function definition named “hello_getOptions” " +"inside). The centos-art.sh " +"script relays in these conventions to export and destroy related " +"functions when new module environments are created and destroyed. " +"If you create related function files with a pattern different from " +"that described here, they will not be executed nor available inside " +"the initialization file of the module environment being currently " +"executed." +msgstr "" +"As naming convention, related function files are written using the " +"module's name, then an underscore (“_”), then a descriptive name " +"and, finally, the “.sh” extension. The function " +"definition inside the function file also follows this convention " +"but excludes the “.sh” extension from name (e." +"g., the function file “hello_getOptions.sh” has " +"a function definition named “hello_getOptions” " +"inside). The centos-art.sh " +"script relays in these conventions to export and destroy related " +"functions when new module environments are created and destroyed. " +"If you create related function files with a pattern different from " +"that described here, they will not be executed nor available inside " +"the initialization file of the module environment being currently " +"executed." + +msgid "" +"See also: and ." +msgstr "" +"See also: and ." + +msgid "The Modules Directory" +msgstr "The Modules Directory" + +msgid "" +"This directory contains nested modules (e.g., child modules) and is " +"used for extending the current module functionality in a modular " +"way. There isn't a visible limitation in the number of " +"Modules directory you can nest inside one module " +"to achieve certain functionality so, you can create as many levels " +"of Modules directories as you need." +msgstr "" +"This directory contains nested modules (e.g., child modules) and is " +"used for extending the current module functionality in a modular " +"way. There isn't a visible limitation in the number of " +"Modules directory you can nest inside one module " +"to achieve certain functionality so, you can create as many levels " +"of Modules directories as you need." + +msgid "The Locales Directory" +msgstr "The Locales Directory" + +msgid "" +"This directory contains module-specific localization files. The " +"content of this directory is automatically generated by locale module of centos-art.sh script, when you execute it using the " +"initialization file as source and the —" +"update —sibling options. Once the localization files " +"have been created, you need to edit PO files to translate the " +"strings from English to your preferred language. If the " +"translatable strings inside the module's source files change, you " +"need to run the locale module " +"again to update the PO files and repeat the localization process " +"all over again." +msgstr "" +"This directory contains module-specific localization files. The " +"content of this directory is automatically generated by locale module of centos-art.sh script, when you execute it using the " +"initialization file as source and the —" +"update —sibling options. Once the localization files " +"have been created, you need to edit PO files to translate the " +"strings from English to your preferred language. If the " +"translatable strings inside the module's source files change, you " +"need to run the locale module " +"again to update the PO files and repeat the localization process " +"all over again." + +msgid "The Manuals Directory" +msgstr "The Manuals Directory" + +msgid "" +"This directory contains module-specific documentation. " +"Documentation in this directory is written in asciidoc format and " +"produced through the render " +"module of centos-art.sh script " +"to different formats, including man pages and html." +msgstr "" +"This directory contains module-specific documentation. " +"Documentation in this directory is written in asciidoc format and " +"produced through the render " +"module of centos-art.sh script " +"to different formats, including man pages and html." + +msgid "The Configs Directory" +msgstr "The Configs Directory" + +msgid "" +"This directory contains module-specific configuration. Some modules " +"(e.g., “tuneup”) need to store auxiliary files required to achieve " +"its main goal (e.g., the “tuneup” module uses sed files to " +"transform the top-comment of scripts each time it is executed, the " +"sed file itself is stored in this directory). Whenever you need to " +"make reference to a file inside this directory, use the " +"“TCAR_MODULE_DIR_CONFIGS” variable. This variable provides the " +"absolute path of module-related configuration file." +msgstr "" +"This directory contains module-specific configuration. Some modules " +"(e.g., “tuneup”) need to store auxiliary files required to achieve " +"its main goal (e.g., the “tuneup” module uses sed files to " +"transform the top-comment of scripts each time it is executed, the " +"sed file itself is stored in this directory). Whenever you need to " +"make reference to a file inside this directory, use the " +"“TCAR_MODULE_DIR_CONFIGS” variable. This variable provides the " +"absolute path of module-related configuration file." + +msgid "" +"This section has covered the directories and files a module is made " +"of inside the centos-art.sh " +"script." +msgstr "" +"This section has covered the directories and files a module is made " +"of inside the centos-art.sh " +"script." + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. +msgid "translator-credits" +msgstr "translator-credits" diff --git a/tcar-scripts-docs/Understanding_Modules/render.conf b/tcar-scripts-docs/Understanding_Modules/render.conf new file mode 100644 index 0000000..046b3dd --- /dev/null +++ b/tcar-scripts-docs/Understanding_Modules/render.conf @@ -0,0 +1,9 @@ +[understanding_modules.html] +render-type = "asciidoc" +render-flow = "article" +render-from = "understanding_modules.asciidoc" +locale-from = "Locales/${TCAR_SCRIPT_LANG_LC}/understanding_modules.asciidoc.po" +images-from = "${TCAR_BASEDIR}/Artworks/Icons/Webenv/Final" +styles-from = "${TCAR_BASEDIR}/Artworks/Webenv/Docbook/1.69.1/Css" +formats = "xhtml" +render-page = "single chunks" diff --git a/tcar-scripts-docs/Understanding_Modules/understanding_modules.asciidoc b/tcar-scripts-docs/Understanding_Modules/understanding_modules.asciidoc new file mode 100644 index 0000000..6b2f156 --- /dev/null +++ b/tcar-scripts-docs/Understanding_Modules/understanding_modules.asciidoc @@ -0,0 +1,994 @@ +Understanding Modules +===================== +Alain Reguera Delgado +v0.1, Oct 2013 + +Overview +-------- + +From version 0.5, *centos-art.sh* script implements the idea of +modules to its base design. Modules are a collection of functions +written in Bash that can call themselves one another to create +individual execution environments. They may be nested to achieve high +levels of maintainability and extensibility. This make possible for +modules writers to divide complicated tasks into smaller tasks that +can be easier to debug, maintain and share with other modules +efficiently (e.g., instead of loading modules all at once, they are +only loaded at demand and unset once they conclude their execution). + +This article describes the modular design of *centos-art.sh* script. +It is a good place for you to start if you are planning to contribute +new module environments to *centos-art.sh* script or want to know more +about how they work. The next section delves into what a module +environment is, the three module types you can find in it and the +correct way of execute each one of them. + +[[module-environment]] +Module Environment +------------------ + +When you execute the *centos-art.sh* script you create an execution +environment in which variables and functions are defined. This +execution environment is the higher environment inside *centos-art.sh* +script. It is considered to have a ``global'' scope, so variables and +functions defined inside it are always available for any function +execution made from it. You can control the execution environment of +*centos-art.sh* script through +centos-art.sh+ and ++centos-art.conf.sh+ files. These files don't provide too much +functionality so specific module environments are executed from ++centos-art.sh+ at demand, to extend its functionality. + +Module environments are made of small functions that perform small +tasks and can be further executed in a specific order to produce a +desired result. Module environments are executed and destroyed at +demand. Inside *centos-art.sh*, module environments can be either +``parent modules,'' ``child modules,'' or ``sibling modules.'' + +[[parent-modules-environment]] +Parent Modules +~~~~~~~~~~~~~~ + +Parent modules are initiated by executing the +*tcar_setModuleEnvironment* function with the *-t parent* option set +on it. Parent modules are very simple in design and you can use them +to implement simple solutions quickly. Normally, when you execute a +parent module, you initiate the highest module environment possible +inside *centos-art.sh* script. Because of such high scope, parent +modules are frequently used to define module's global variables, +interpret module-specific options passed through the command-line and +execute the appropriate actions based on them. + +In <>, we have executed the *hello* module with +the *--greeting=hi* and *--debug* options through the command-line. In +this example, *centos-art.sh* script executes a parent module named +*hello*, processes the module-specific options passed through the +command-line, prints a greeting message to standard output and exits +successfully. + +[[debug-parent-modules]] +.Debugging execution of parent modules +====================================================================== +---------------------------------------------------------------------- +Thu 10 Oct 2013 11:53:28 PM CDT =========================> [0] | main +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_BASEDIR Automation/Modules +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_NAME [0]=hello +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_TYPE parent +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_ARGUMENT --greeting=hi +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs +Thu 10 Oct 2013 11:53:28 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh +Thu 10 Oct 2013 11:53:28 PM CDT TEXTDOMAIN hello.sh +Thu 10 Oct 2013 11:53:28 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:53:28 PM CDT export -f hello +Thu 10 Oct 2013 11:53:28 PM CDT export -f hello_getOptions +Thu 10 Oct 2013 11:53:28 PM CDT -------------------------> hello --greeting=hi +hi +Thu 10 Oct 2013 11:53:28 PM CDT <------------------------- hello +Thu 10 Oct 2013 11:53:28 PM CDT unset -f hello +Thu 10 Oct 2013 11:53:28 PM CDT unset -f hello_getOptions +Thu 10 Oct 2013 11:53:28 PM CDT <========================= [0] | main +---------------------------------------------------------------------- +====================================================================== + +<> describes an entire module environment in +action. With this information you can create your own module +environment, already. However, when your module is getting too much +complicated you probably want to divide it in smaller pieces that you +can execute accordingly, based on the purpose you defined for it. Such +kind of division can be implemented as described in +<>. + +Summary +~~~~~~~ + +This section has covered basic concepts related to module environment +inside *centos-art.sh* script. The next section takes these concepts +and focuses on the implementation of them. Once you finish it, you +should be able of writing your own module environments from scratch +inside *centos-art.sh* script. + +[[module-implementation]] +Module Implementation +--------------------- + +The *centos-art.sh* script implements module environments inside the +``+Modules+'' directory, as described in <>. + +[[module-implementation-parent]] +Parent Modules +~~~~~~~~~~~~~~ + +For example, consider the creation of a module named *hello*. The +purpose of this module is to print a greeting message to standard +output and then exit successfully. To create such a module, we need to +create a directory named ``Hello'' inside the ``Modules'' directory +and put an initialization file named ``hello.sh'' inside it. Because +we want to execute the *hello* module from *centos-art.sh* script +command-line, we put it in the first level of directories of +Modules+ +directory. See <>. + +[[parent-module-layout]] +.Directory layout used by parent modules +====================================================================== +---------------------------------------------------------------------- +. +|-- COPYING <1> +|-- Locales/ <2> +|-- Manuals/ <3> +|-- Modules/ <4> +| `-- Hello/ <5> +| |-- hello.sh <6> +| `-- hello_getOptions.sh <7> +|-- Scripts/ <8> +|-- centos-art.conf.sh <9> +`-- centos-art.sh <10> +---------------------------------------------------------------------- + +<1> Script's copying conditions. +<2> Script's localization files. +<3> Script's documentation files. +<4> Script's modules. Here is where you store parent modules. +<5> Parent directory of module named hello. +<6> Initialization file of module named hello. +<7> Function related to module named hello. +<8> Script's global functions. +<9> Script's configuration file. +<10> Script's initialization file. +====================================================================== + +<> presents a complete module layout you can use +as reference to create your own module implementations. However, it is +not complete yet. At this point, when you execute *centos-art.sh*, it +is able to find out *hello* module's initialization file and execute +it but that prints an error message because the initialization file +doesn't have a function definition inside. It is completely empty. In +order for *centos-art.sh* script to do something useful, you need to +write a function definition inside the initialization file, as +described in <>. + +[[module-init-file]] +The Initialization File +~~~~~~~~~~~~~~~~~~~~~~~ + +The module's initialization file contains the module's main function +definition and a comment describing what it does on top of it. This +comment includes a small description about what the function does, a +written by section, the copyright note and the legal status of the +file. The function definition is set later and must be written using +the long definition format (i.e., it must begin with the word +``+function+,'' then the function name, and finally the ``+{+'' +character). The name of the function is exactly the same of the +initialization file but without the +.sh+ extension. These conditions +are required in order for *centos-art.sh* script to execute the +function definition and destroy it when it is no longer used. See +<>. + +The function definition is where you write all the commands you want +the module runs, once executed. The function definition can be as +simple as just one single line of code or as complex as you can +imagine. It is the place where you express your solutions. However, +when writing initialization files, it is considered a good practice to +avoid any sort of complexity. Instead, try to write small and simple +initialization files. In case you notice the initialization file is +growing up inevitably, you can reduce its code by refactoring it. To +do this, you can use resources like module related functions and child +modules. These resources are described in <>, and +they help you to keep the initialization file in a clean state, easy +to understand, maintain and debug. + +[[initialization-file]] +.Initialization file used by hello module +====================================================================== +---------------------------------------------------------------------- +#!/bin/bash +###################################################################### +# +# hello.sh -- Print out greetings to standard output and exit +# successfully. +# +# Written by: +# * Alain Reguera Delgado , 2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function hello { + + tcar_printMessage "`gettext "Hello, World!"`" --as-stdout-line + +} +---------------------------------------------------------------------- +====================================================================== + +The function definition described in <> uses the +*tcar_printMessage* global function to print localized versions of the +string ``Hello, World!'' to standard output. Because there isn't no +other command in the function definition, when the greeting message is +printed out, *centos-art.sh* destroys the *hello* module and exit +successfully. This process is more visible when also pass the +*--debug* option. See <>. + +Summary +~~~~~~~ + +Congratulations! You've implemented a module environment inside +*centos-art.sh* script. With the information you have so far, you are +able to create your own module environment implementations. The next +section delves into available resources you can use to simplify module +environments when the initialization file starts growing inevitably +and complexity daemons begin hammering your head. + +[[module-optimization]] +Module Optimization +------------------- + +The *centos-art.sh* script provides four resources you can use to +optimize your module implementations. These resources are ``related +functions,'' ``child modules,'' ``sibling modules'' and ``recursive +modules''. + +[[related-functions]] +Related Functions +~~~~~~~~~~~~~~~~~ + +Related functions are very useful when you need to simplify the +function definition of one initialization file. For example, consider +extending the *hello* module so it is able to interpret arguments +passed through the command-line. Now, inside the initialization file, +we have some variable definitions, one function call to a module +related function named *hello_getOptions*, and a decision on how the +greeting message must be printed out based on the collected actions. +See <>. + +[[initialization-file-extended]] +.Initialization file used by hello module (extended) +====================================================================== +---------------------------------------------------------------------- +function hello { + + # Define default greeting message. + local HELLO_WORLD="`gettext "Hello, World!"`" + + # Define actions variable. Here is where actions related to + # module-specific options are stored in for further processing. + local ACTIONS='' + + # Interpret module-specific options and store related actions. + hello_getOptions + + # Print greeting message + if [[ -z ${ACTIONS} ]];then + # Using parent module. + tcar_printMessage "${HELLO_WORLD}" --as-stdout-line + else + # Using child module. + tcar_setModuleEnvironment -m 'output' -t 'child' + fi + +} +---------------------------------------------------------------------- +====================================================================== + +When you execute the command *centos-art.sh hello* with the +*--greeting=hi* argument, *centos-art.sh* stores module-specific +arguments inside the +TCAR_MODULE_ARGUMENT+ variable, creates a list +of all function definitions inside the module directory and exports +them. This includes the function definition of the initialization +file itself. Then *centos-art.sh* executes the function definition +set inside the initialization file and leaves all other function +definitions, already in memory, waiting for further execution. At this +point, the *hello* initialization function sets some default values +and execute the *hello_getOptions* function to parse all the arguments +passed through the command-line and redefines the +ACTIONS+ variable +based on them. Using the +ACTIONS+ variables it decides whether to +print the greeting message immediately or execute the child modules +named *output* so it decides what to do with the information collected +so far. + +<> defines the options you can pass to +*hello* module and the associated actions they must perform for each +of them. Actions aren't immediately executed here. Instead, they are +stored in the +ACTIONS+ variable for further processing (e.g., we +store the names of the modules we want to execute later). The ++ACTIONS+ variable was defined in the initialization file so it has a +global scope inside the module environment and is reachable from any +related function executed inside it. Storing the actions this way +lets the *hello* module to collect information about different actions +and execute them all in just one command. When all options have been +parsed, only non-option arguments remain in the +TCAR_MODULE_ARGUMENT+ +variable. + +[[hello_getOptions-definition]] +.Related function definition (hello_getOptions) +====================================================================== +---------------------------------------------------------------------- +function hello_getOptions { + + # Define short options we want to support. + local ARGSS="h::,v,g:,l,u,c,r" + + # Define long options we want to support. + local ARGSL="help::,version,greeting:,lower,upper,camel,random" + + # Redefine arguments using getopt(1) command parser. + tcar_setModuleArguments + + # Reset positional parameters on this function, using output + # produced from (getopt) arguments parser. + eval set -- "${TCAR_MODULE_ARGUMENT}" + + # Look for options passed through command-line. + while true; do + case "${1}" in + + -h | --help ) + tcar_printHelp "${2}" + ;; + + -v | --version ) + tcar_printVersion "${TCAR_MODULE_NAME}" + ;; + + -g | --greeting ) + HELLO_WORLD="${2:-${HELLO_WORLD}}" + shift 2 + ;; + + -l | --lower ) + ACTIONS="lower ${ACTIONS}" + shift 1 + ;; + + -u | --upper ) + ACTIONS="upper ${ACTIONS}" + shift 1 + ;; + + -c | --camel ) + ACTIONS="camel ${ACTIONS}" + shift 1 + ;; + + -r | --random ) + ACTIONS="random ${ACTIONS}" + shift 1 + ;; + + -- ) + shift 1 + break + ;; + esac + done + + # Redefine arguments using current positional parameters. Only + # paths should remain as arguments, at this point. + TCAR_MODULE_ARGUMENT="${@}" + +} +---------------------------------------------------------------------- +====================================================================== + +[IMPORTANT] +<> presents the standard construction we +use inside *centos-art.sh* script for parsing arguments passed through +the command-line in a per-module basis. As convention, all the parent +modules you write must be able to interpret the *--help* and +*--version* options using the construction described here. + +Related functions are very useful when you are refactoring the +initialization file of a module. However, they aren't so efficient +when you need to execute them at demand (e.g., based on specific +conditions). When a module is executed, related functions are exported +to *centos-art.sh* script execution environment. They remain there, +consuming memory, until the module they belong to is destroyed. If you +create a related function and never execute it, it will consume +memory, as well. So, use related functions when you are absolutely +sure they will be executed at some point, in one single iteration of +*centos-art.sh* script. If you need to execute functions at demand, +use child modules, instead. + +[[child-modules]] +Child Modules +~~~~~~~~~~~~~ + +Child modules are initiated by executing the +*tcar_setModuleEnvironment* function with the *-t child* option set on +it. Child modules have the characteristic of being nested modules. +They cannot be executed from the command-line. Normally, child modules +are executed from parent modules but they can be executed from other +child modules, too. When several child modules are executed in one +single iteration of *centos-art.sh*, they create a chain of modules. +A chain of modules is very useful in situations where you want to +divide one large task into smaller tasks and also control which of +these smaller tasks is executed based on specific conditions (e.g., +you may want to render images or documentation, but not both, in one +single iteration of *centos-art.sh* script). In a chain of modules, +lower modules in the chain (those started last) have access to +information set by modules higher in the chain (those started first), +but not the opposite. When processing information this way, modules +aren't destroyed until the last module executed in the chain has +finished its work (e.g., all the commands inside it have been +executed). At that point, child modules are destroyed in the reverse +order they were executed. + +For example, when you execute the *hello* module with both *--debug* +and *--upper* option, *centos-art.sh* script creates a chain of three +modules to produce the greeting message. Firstly, it begins by +executing the parent module named *hello*, then it continues with the +child module named *output* which in turn executes the child module +name *lower* to finally print the expected greeting message. In this +example, the module named *lower* is the last module in the chain of +executed modules. It has access to all information defined by earlier +modules (e.g., in *hello* and *output* modules) and none of its earlier +modules will be destroyed until it has finished its work. This process +becomes more visible when you take a look at <>. + +[[debug-child-modules]] +.Debugging execution of child modules +====================================================================== +---------------------------------------------------------------------- +Thu 10 Oct 2013 11:52:41 PM CDT =========================> [0] | main +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [0]=hello +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE parent +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT --upper --greeting=hi +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh +Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAIN hello.sh +Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:52:41 PM CDT export -f hello +Thu 10 Oct 2013 11:52:41 PM CDT export -f hello_getOptions +Thu 10 Oct 2013 11:52:41 PM CDT -------------------------> hello --upper --greeting=hi +Thu 10 Oct 2013 11:52:41 PM CDT =========================> [1] | hello +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [1]=output +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE child +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST output +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh +Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAIN output.sh +Thu 10 Oct 2013 11:52:41 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales +Thu 10 Oct 2013 11:52:41 PM CDT export -f output +Thu 10 Oct 2013 11:52:41 PM CDT -------------------------> output +Thu 10 Oct 2013 11:52:41 PM CDT =========================> [2] | output +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_NAME [2]=upper +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_TYPE child +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_LIST camel|lower|random|upper +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Upper +Thu 10 Oct 2013 11:52:41 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Upper/Modules +Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Upper/Manuals +Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales +Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Upper/Configs +Thu 10 Oct 2013 11:52:42 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Upper/upper.sh +Thu 10 Oct 2013 11:52:42 PM CDT TEXTDOMAIN upper.sh +Thu 10 Oct 2013 11:52:42 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales +Thu 10 Oct 2013 11:52:42 PM CDT export -f upper +Thu 10 Oct 2013 11:52:42 PM CDT -------------------------> upper +HI +Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- upper +Thu 10 Oct 2013 11:52:42 PM CDT unset -f upper +Thu 10 Oct 2013 11:52:42 PM CDT <========================= [2] | output +Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- output +Thu 10 Oct 2013 11:52:42 PM CDT unset -f output +Thu 10 Oct 2013 11:52:42 PM CDT <========================= [1] | hello +Thu 10 Oct 2013 11:52:42 PM CDT <------------------------- hello +Thu 10 Oct 2013 11:52:42 PM CDT unset -f hello +Thu 10 Oct 2013 11:52:42 PM CDT unset -f hello_getOptions +Thu 10 Oct 2013 11:52:42 PM CDT <========================= [0] | main +---------------------------------------------------------------------- +====================================================================== + +The module environment described in <> shows the +child modules' ability of reducing scope as they get deeper in the +chain of executed modules. However, child modules lack the possibility +of nest modules that share the same scope. For example, in the *hello* +module described above, you cannot execute the modules *lower* or +*upper* from *camel* module, as if they were child modules of it. +That is not possible because they all have the same scope, which is, +to print the greeting message to standard output. Child modules are +conceived to reduce the module scope as new child modules are +executed. When you need to execute new module environments and, also, +retain the last scope from which the new module is executed, you need +to use ``_sibling modules_,'' instead. + +[[sibling-modules]] +Sibling Modules +~~~~~~~~~~~~~~~ + +Sibling modules are initiated by executing the +*tcar_setModuleEnvironment* function with the *-t sibling* option set +on it. Sibling modules are another type of nested modules but, in +contrast with child modules, sibling modules cannot be executed from +parent modules. Normally, sibling modules are executed from other +sibling modules but, considering the context, they can be executed +from child module too, to initiate sibling processing. When several +siblings modules are executed, they also build a chain of modules. In +contrast with the chain of child modules, the chain of sibling modules +destroys the last sibling module executed before executing the next +sibling module. This make the chain to stop its growing at sibling +module processing, unless you call a child module from a sibling +module. In this case, the chain expansion would continue as long as +the number of child modules you execute. This process becomes more +visible when you take a look at <>. + +In <>, we've executed the *hello* module with +the *--greeting=hi*, *--camel*, and *--debug* options. In this +example, *centos-art.sh* script executes the *hello* module then the +*output* module which in turn executes the *camel* module. At this +point, can appreciate how the chain of modules stop growing. Observe +that *camel* module has gained the position 2 in the chain of modules +and executes the *upper* module which takes the position 3, as +expected. Now, when *upper* module finishes its work it is destroyed +and the module's counter is reset to its previous value which is 2 +(the one set by *camel* module). Then, *camel* executes the *lower* +module which take position 3 at the chain of modules until it +finishes. When it finishes, the *camel* module finishes its work and +is destroyed, then *output*, then *hello*. + +[[debug-sibling-modules]] +.Debugging execution of sibling modules +====================================================================== +---------------------------------------------------------------------- +Thu 10 Oct 2013 11:51:42 PM CDT =========================> [0] | main +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_BASEDIR Automation/Modules +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_NAME [0]=hello +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_TYPE parent +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_ARGUMENT --camel --greeting=hi +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs +Thu 10 Oct 2013 11:51:42 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh +Thu 10 Oct 2013 11:51:42 PM CDT TEXTDOMAIN hello.sh +Thu 10 Oct 2013 11:51:42 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:51:43 PM CDT export -f hello +Thu 10 Oct 2013 11:51:43 PM CDT export -f hello_getOptions +Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> hello --camel --greeting=hi +Thu 10 Oct 2013 11:51:43 PM CDT =========================> [1] | hello +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [1]=output +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE child +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST output +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh +Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN output.sh +Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales +Thu 10 Oct 2013 11:51:43 PM CDT export -f output +Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> output +Thu 10 Oct 2013 11:51:43 PM CDT =========================> [2] | output +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [2]=camel +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE child +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Camel +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Camel/Modules +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Camel/Manuals +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Camel/Locales +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Camel/Configs +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Camel/camel.sh +Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN camel.sh +Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Camel/Locales +Thu 10 Oct 2013 11:51:43 PM CDT export -f camel +Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> camel +Thu 10 Oct 2013 11:51:43 PM CDT =========================> [3] | camel +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [3]=upper +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE sibling +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Upper +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Upper/Modules +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Upper/Manuals +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Upper/Configs +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Upper/upper.sh +Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAIN upper.sh +Thu 10 Oct 2013 11:51:43 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Upper/Locales +Thu 10 Oct 2013 11:51:43 PM CDT export -f upper +Thu 10 Oct 2013 11:51:43 PM CDT -------------------------> upper +H +Thu 10 Oct 2013 11:51:43 PM CDT <------------------------- upper +Thu 10 Oct 2013 11:51:43 PM CDT unset -f upper +Thu 10 Oct 2013 11:51:43 PM CDT <========================= [3] | camel +Thu 10 Oct 2013 11:51:43 PM CDT =========================> [3] | camel +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_NAME [3]=lower +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_TYPE sibling +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_LIST camel|lower|random|upper +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Lower +Thu 10 Oct 2013 11:51:43 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Lower/Modules +Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Lower/Manuals +Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Lower/Locales +Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Lower/Configs +Thu 10 Oct 2013 11:51:44 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Lower/lower.sh +Thu 10 Oct 2013 11:51:44 PM CDT TEXTDOMAIN lower.sh +Thu 10 Oct 2013 11:51:44 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Lower/Locales +Thu 10 Oct 2013 11:51:44 PM CDT export -f lower +Thu 10 Oct 2013 11:51:44 PM CDT -------------------------> lower +i +Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- lower +Thu 10 Oct 2013 11:51:44 PM CDT unset -f lower +Thu 10 Oct 2013 11:51:44 PM CDT <========================= [3] | camel +Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- camel +Thu 10 Oct 2013 11:51:44 PM CDT unset -f camel +Thu 10 Oct 2013 11:51:44 PM CDT <========================= [2] | output +Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- output +Thu 10 Oct 2013 11:51:44 PM CDT unset -f output +Thu 10 Oct 2013 11:51:44 PM CDT <========================= [1] | hello +Thu 10 Oct 2013 11:51:44 PM CDT <------------------------- hello +Thu 10 Oct 2013 11:51:44 PM CDT unset -f hello +Thu 10 Oct 2013 11:51:44 PM CDT unset -f hello_getOptions +Thu 10 Oct 2013 11:51:44 PM CDT <========================= [0] | main +---------------------------------------------------------------------- +====================================================================== + +<> shows a single iteration of *centos-art.sh* +script executing different types of modules. Normally, one module is +executed at some point and destroyed at the same point when it has +finished its work, however, what if the next immediate module you are +about to execute is the same module you are about to destroyed? This +is, you need to execute the last module in the chain of executed +modules again, but, this time, from itself. In cases like this, the +*centos-art.sh* script doesn't destroy the last module. It cannot, +because you are certainly executing a new module from itself, so it +has to wait for this new call to finish in order to be destroyed. This +kind of processing is known as _processing modules recursively._ + +[[recursive-modules]] +Recursive Modules +~~~~~~~~~~~~~~~~~ + +When one module environment executes itself we are in presence of a +recursive module execution. The execution of modules recursively +doesn't destroy the last module in the chain of executed modules and +doesn't increment or decrement the module counter either. The module +counter is somehow frozen until a different module environment is +executed. In these cases, the last module environment remains in +memory for the new module execution to make use of. This process +becomes more visible when you take a look at +<>. + +[CAUTION] +When you execute modules recursively, you should be very careful not +to get trapped into an endless loop. + +In <>, we've executed the *hello* module with +the *--greeting=hello*, *--random*, and *--debug* options. In this +example, *centos-art.sh* script executes a parent module named *hello* +which in turn executes a child module named *output* which in turn +executes a child module named *random*. At this point, the *random* +modules executes itself five times (the number of characters passed as +value to greeting option) to print out random letters from the +greeting message. The output may have no much sense on itself but the +related debugging information helps to understand the execution of +modules recursively. + +[[debug-recursive-modules]] +.Processing execution of modules recursively +====================================================================== +---------------------------------------------------------------------- +Thu 10 Oct 2013 11:50:03 PM CDT =========================> [0] | main +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_BASEDIR Automation/Modules +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_NAME [0]=hello +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_TYPE parent +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_ARGUMENT --random --greeting=Hello +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_LIST hello|help|locale|prepare|render|tuneup|vcs +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules +Thu 10 Oct 2013 11:50:03 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Manuals +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Configs +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/hello.sh +Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN hello.sh +Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Locales +Thu 10 Oct 2013 11:50:04 PM CDT export -f hello +Thu 10 Oct 2013 11:50:04 PM CDT export -f hello_getOptions +Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> hello --random --greeting=Hello +Thu 10 Oct 2013 11:50:04 PM CDT =========================> [1] | hello +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_NAME [1]=output +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_TYPE child +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_LIST output +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Manuals +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Locales +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Configs +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/output.sh +Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN output.sh +Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Locales +Thu 10 Oct 2013 11:50:04 PM CDT export -f output +Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> output +Thu 10 Oct 2013 11:50:04 PM CDT =========================> [2] | output +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_BASEDIR Automation/Modules/Hello/Modules/Output/Modules +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_NAME [2]=random +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_TYPE child +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_ARGUMENT +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_LIST camel|lower|random|upper +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR Automation/Modules/Hello/Modules/Output/Modules/Random +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MODULES Automation/Modules/Hello/Modules/Output/Modules/Random/Modules +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_MANUALS Automation/Modules/Hello/Modules/Output/Modules/Random/Manuals +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_LOCALES Automation/Modules/Hello/Modules/Output/Modules/Random/Locales +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_DIR_CONFIGS Automation/Modules/Hello/Modules/Output/Modules/Random/Configs +Thu 10 Oct 2013 11:50:04 PM CDT TCAR_MODULE_INIT_FILE Automation/Modules/Hello/Modules/Output/Modules/Random/random.sh +Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAIN random.sh +Thu 10 Oct 2013 11:50:04 PM CDT TEXTDOMAINDIR Automation/Modules/Hello/Modules/Output/Modules/Random/Locales +Thu 10 Oct 2013 11:50:04 PM CDT export -f random +Thu 10 Oct 2013 11:50:04 PM CDT -------------------------> random +H +Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random +H +Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random +l +Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random +l +Thu 10 Oct 2013 11:50:04 PM CDT ~~~~~~~~~~~~~~~~~~~~~~~~~> random +H +Thu 10 Oct 2013 11:50:04 PM CDT <------------------------- random +Thu 10 Oct 2013 11:50:04 PM CDT unset -f random +Thu 10 Oct 2013 11:50:04 PM CDT <========================= [2] | output +Thu 10 Oct 2013 11:50:04 PM CDT <------------------------- output +Thu 10 Oct 2013 11:50:05 PM CDT unset -f output +Thu 10 Oct 2013 11:50:05 PM CDT <========================= [1] | hello +Thu 10 Oct 2013 11:50:05 PM CDT <------------------------- hello +Thu 10 Oct 2013 11:50:05 PM CDT unset -f hello +Thu 10 Oct 2013 11:50:05 PM CDT unset -f hello_getOptions +Thu 10 Oct 2013 11:50:05 PM CDT <========================= [0] | main +---------------------------------------------------------------------- +====================================================================== + +Recursive execution of modules occurs only when the module you are +executing is considered sibling of the last module executed in the +chain of executed modules and they both have the same name. The fact +that no variable name is printed out in <> +means that they were not created. The arrows change from +->+ to +~>+, +means that module's related functions weren't exported for the new +module execution either. It also means that the initialization script +is reusing both related functions and variables from the last module +environment in the chain of executed modules. In this case the +*random* module. + +Summary +~~~~~~~ + +This section covered the resources you can use to optimize module +environments inside *centos-art.sh* script. The next section +summarizes the base files and directories you might find inside one +module environment. + +[[module-structure]] +Module Structure +---------------- + +The module structure takes place at the root location of +*centos-art.sh* script, specifically, in a directory named +Modules+. +The +Modules+ directory at *centos-art.sh* root location is the +highest level which you can store modules in. Modules stored in this +location are known as parent modules. Parent modules can optimize +their structure by using related functions, child modules, sibling +modules and recursive modules. Basically, all these types of modules +share the same structure. They all have function files and, +optionally, module related stuff like locales, documentation, +configuration and dependent modules. See <>. + +[IMPORTANT] +From version 0.7 on, child modules no longer have +Locales+, +Manuals+ +and +Configs+ directories inside. Only initialization files, related +functions and +Modules+ directory are supported inside child modules. +See https://centos.org.cu/bugs/view.php?id=114[Bug 114]. + +[[module-directory-layout]] +.The directory structure of hello module +====================================================================== +---------------------------------------------------------------------- +. +|-- COPYING +|-- Locales/ +|-- Manuals/ +|-- Modules/ +| `-- Hello/ <1> +| |-- Locales +| | |-- es_ES +| | | |-- LC_MESSAGES +| | | | `-- hello.sh.mo <2> +| | | `-- hello.sh.po +| | `-- hello.sh.pot +| |-- Manuals +| | |-- hello.asciidoc +| | |-- man1 +| | | `-- hello.1 <3> +| | `-- render.conf <4> +| |-- Modules +| | `-- Output <5> +| | |-- Modules +| | | |-- Camel +| | | | `-- camel.sh +| | | |-- Lower <6> +| | | | `-- lower.sh <7> +| | | |-- Random +| | | | `-- random.sh +| | | `-- Upper +| | | `-- upper.sh +| | `-- output.sh <8> +| |-- hello.sh <9> +| `-- hello_getOptions.sh <10> +|-- Scripts/ +|-- centos-art.conf.sh +`-- centos-art.sh +---------------------------------------------------------------------- + +<1> Child module of *centos-art.sh* script and parent module of +*output* module. +<2> Spanish translated strings of *hello* module. +<3> Manpage shown when you request help of *hello* module. +<4> Configuration file used to produce the manpage of *hello* module. +<5> Child module of *hello* module and parent module of *camel,* +*lower,* *random* and *upper* modules. +<6> Child module of *output* module and sibling module of *camel,* +*random* and *upper* module. +<7> Initialization file of *lower* module. +<8> Initialization file of *output* module. +<9> Initialization file of *hello* module. +<10> Function file related to *hello* module. +====================================================================== + +<> presents a complete structure for module +environments you can use as reference for writing your own modules. It +begins with a parent module directory named ``Hello'' which contains +an initialization file (``hello.sh'') and one related function file +(``hello_getOptions.sh''). These files work together with a child +module named *output* which in turn has four child modules inside +named *camel,* *lower,* *random,* and *upper.* The +Locales+ directory +contains the required information to print *hello* messages in +different languages (e.g., it only supports Spanish language in our +example, but it can be extended to other languages as needed). The ++Manuals+ directory contains all the files required to produce +documentation for the *hello* module (e.g., the information you read +when provide the *--help* option in the command-line). + +The Function Files +~~~~~~~~~~~~~~~~~~ + +The function files are used to create the initialization file of a +module and the related functions of it. As convention, both +initialization file and related function files are stored in the +module's directory, see <>. + +At execution time, the definition of related function are exported to +*centos-art.sh* execution environment before executing the function +definition set inside the initialization file, so related functions +are always available for you to use in the initialization file file +and other related functions as well. This is rather useful when you +are refactoring your initialization scripts and probably related +functions as well. + +As naming convention, related function files are written using the +module's name, then an underscore (``_''), then a descriptive name +and, finally, the ``+.sh+'' extension. The function definition inside +the function file also follows this convention but excludes the +``+.sh+'' extension from name (e.g., the function file +``+hello_getOptions.sh+'' has a function definition named +``+hello_getOptions+'' inside). The *centos-art.sh* script relays in +these conventions to export and destroy related functions when new +module environments are created and destroyed. If you create related +function files with a pattern different from that described here, they +will not be executed nor available inside the initialization file of +the module environment being currently executed. + +See also: <> and <>. + +[[module-directory-modules]] +The +Modules+ Directory +~~~~~~~~~~~~~~~~~~~~~~~ + +This directory contains nested modules (e.g., child modules) and is +used for extending the current module functionality in a modular way. +There isn't a visible limitation in the number of +Modules+ directory +you can nest inside one module to achieve certain functionality so, +you can create as many levels of +Modules+ directories as you need. + +[[module-directory-locales]] +The +Locales+ Directory +~~~~~~~~~~~~~~~~~~~~~~~ + +This directory contains module-specific localization files. The +content of this directory is automatically generated by *locale* +module of *centos-art.sh* script, when you execute it using the +initialization file as source and the *--update --sibling* options. +Once the localization files have been created, you need to edit PO +files to translate the strings from English to your preferred +language. If the translatable strings inside the module's source +files change, you need to run the *locale* module again to update the +PO files and repeat the localization process all over again. + +[[module-directory-manuals]] +The +Manuals+ Directory +~~~~~~~~~~~~~~~~~~~~~~~ + +This directory contains module-specific documentation. Documentation +in this directory is written in asciidoc format and produced through +the *render* module of *centos-art.sh* script to different formats, +including man pages and html. + +[[module-directory-configs]] +The +Configs+ Directory +~~~~~~~~~~~~~~~~~~~~~~~ + +This directory contains module-specific configuration. Some modules +(e.g., ``tuneup'') need to store auxiliary files required to achieve +its main goal (e.g., the ``tuneup'' module uses sed files to transform +the top-comment of scripts each time it is executed, the sed file +itself is stored in this directory). Whenever you need to make +reference to a file inside this directory, use the +``TCAR_MODULE_DIR_CONFIGS'' variable. This variable provides the +absolute path of module-related configuration file. + +Summary +~~~~~~~ + +This section has covered the directories and files a module is made of +inside the *centos-art.sh* script. + +// vim: set syntax=asciidoc: diff --git a/tcar-scripts/Locales/es_ES/centos-art.sh.po b/tcar-scripts/Locales/es_ES/centos-art.sh.po new file mode 100644 index 0000000..afac9a6 --- /dev/null +++ b/tcar-scripts/Locales/es_ES/centos-art.sh.po @@ -0,0 +1,202 @@ +msgid "" +msgstr "" +"Project-Id-Version: centos-art.sh 0.6\n" +"Report-Msgid-Bugs-To: centos-l10n-es@centos.org.cu\n" +"POT-Creation-Date: 2013-10-07 14:11-0400\n" +"PO-Revision-Date: 2013-10-07 14:11-0400\n" +"Last-Translator: Localization SIG \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: Automation/centos-art.sh:65 +msgid "has not execution rights." +msgstr "no tiene permiso de ejecución." + +#: Automation/Scripts/tcar_checkFiles.sh:56 +msgid "isn't a directory." +msgstr "no es un directorio." + +#: Automation/Scripts/tcar_checkFiles.sh:62 +msgid "doesn't exist." +msgstr "no existe." + +#: Automation/Scripts/tcar_checkFiles.sh:68 +msgid "isn't a regular file." +msgstr "no es un fichero regular." + +#: Automation/Scripts/tcar_checkFiles.sh:74 +msgid "isn't a symbolic link." +msgstr "no es un enlace simbólico." + +#: Automation/Scripts/tcar_checkFiles.sh:80 +msgid "isn't an executable file." +msgstr "no es un fichero ejecutable." + +#: Automation/Scripts/tcar_checkFiles.sh:87 +#, sh-format +msgid "isn't a \"$MIME\" file." +msgstr "no es un fichero \"$MIME\"." + +#: Automation/Scripts/tcar_checkFiles.sh:93 +msgid "doesn't match its pattern." +msgstr "no coincide con su patrón." + +#: Automation/Scripts/tcar_checkFiles.sh:99 +msgid "isn't installed in the system." +msgstr "no está instalado en el sistema." + +#: Automation/Scripts/tcar_checkFiles.sh:119 +msgid "No file for processing found." +msgstr "Ningún fichero encontrado para procesar." + +#: Automation/Scripts/tcar_checkFiles.sh:146 +msgid "The condition command provided isn't supported." +msgstr "El comando condición suministrado no está soportado." + +#: Automation/Scripts/tcar_getTemporalFile.sh:46 +msgid "The first argument cannot be empty." +msgstr "El primer argumento no puede estar vacío." + +#: Automation/Scripts/tcar_printCopyrightInfo.sh:52 +msgid "Creative Common Attribution-ShareAlike 3.0 License" +msgstr "Licencia Creativa Común de Atribución-Compartida 3.0." + +#: Automation/Scripts/tcar_printCopyrightInfo.sh:125 +msgid "All rights reserved." +msgstr "Todos los derechos reservados." + +#: Automation/Scripts/tcar_printMessage.sh:40 +msgid "The message cannot be empty." +msgstr "El mensaje no puede estar vacío." + +#: Automation/Scripts/tcar_printMessage.sh:126 +msgid "To know more, run" +msgstr "Para conocer más, ejecuta" + +#: Automation/Scripts/tcar_printMessage.sh:132 +msgid "yes" +msgstr "sí" + +#: Automation/Scripts/tcar_printMessage.sh:135 +msgid "no" +msgstr "no" + +#: Automation/Scripts/tcar_printMessage.sh:222 +msgid "Processing" +msgstr "Procesando" + +#: Automation/Scripts/tcar_printMessage.sh:226 +msgid "Cropping from" +msgstr "Recortando desde" + +#: Automation/Scripts/tcar_printMessage.sh:230 +msgid "Tuning-up" +msgstr "Ajustando" + +#: Automation/Scripts/tcar_printMessage.sh:234 +msgid "Checking" +msgstr "Comprobando" + +#: Automation/Scripts/tcar_printMessage.sh:238 +msgid "Combining" +msgstr "Combinando" + +#: Automation/Scripts/tcar_printMessage.sh:242 +msgid "Editing" +msgstr "Editando" + +#: Automation/Scripts/tcar_printMessage.sh:247 +msgid "Updating" +msgstr "Actualizando" + +#: Automation/Scripts/tcar_printMessage.sh:249 +msgid "Creating" +msgstr "Creando" + +#: Automation/Scripts/tcar_printMessage.sh:254 +msgid "Deleting" +msgstr "Borrando" + +#: Automation/Scripts/tcar_printMessage.sh:258 +msgid "Reading" +msgstr "Leyendo" + +#: Automation/Scripts/tcar_printMessage.sh:262 +msgid "Saved as" +msgstr "Salvado como" + +#: Automation/Scripts/tcar_printMessage.sh:266 +msgid "Linked to" +msgstr "Enlazado como" + +#: Automation/Scripts/tcar_printMessage.sh:270 +msgid "Moved to" +msgstr "Movido a" + +#: Automation/Scripts/tcar_printMessage.sh:274 +msgid "Translation" +msgstr "Traducción" + +#: Automation/Scripts/tcar_printMessage.sh:278 +msgid "Translating" +msgstr "Traduciendo" + +#: Automation/Scripts/tcar_printMessage.sh:282 +msgid "Validating" +msgstr "Validando" + +#: Automation/Scripts/tcar_printMessage.sh:286 +msgid "Template" +msgstr "Plantilla" + +#: Automation/Scripts/tcar_printMessage.sh:290 +msgid "Configuration" +msgstr "Configuración" + +#: Automation/Scripts/tcar_printMessage.sh:294 +msgid "Palette" +msgstr "Paleta" + +#: Automation/Scripts/tcar_printVersion.sh:45 +#, sh-format +msgid "" +"$PROGRAM_NAME comes with NO WARRANTY, to the extent permitted by law. You " +"may redistribute copies of $PROGRAM_NAME under the terms of the GNU General " +"Public License. For more information about these matters, see the files " +"named COPYING." +msgstr "" +"$PROGRAM_NAME viene SIN GARANTÍAS, a todo el alcance permitido por la ley. " +"Usted puede distribuir copias de $PROGRAM_NAME bajo los términos de la " +"Licencia Pública General de GNU. Para más información sobre estos asuntos, " +"vea el fichero COPYING." + +#: Automation/Scripts/tcar_setModuleArguments.sh:95 +msgid "The argument verification failed." +msgstr "La verificación de argumento falló." + +#: Automation/Scripts/tcar_setModuleEnvironmentScripts.sh:53 +msgid "No function file was found." +msgstr "Ningún fichero de función fue encontrado." + +#: Automation/Scripts/tcar_setModuleEnvironment.sh:56 +msgid "Unknown" +msgstr "Desconocido" + +#: Automation/Scripts/tcar_setModuleEnvironment.sh:145 +msgid "Opening module" +msgstr "Abriendo módulo" + +#: Automation/Scripts/tcar_setModuleEnvironment.sh:149 +msgid "Closing module" +msgstr "Cerrando módulo" + +#: Automation/Scripts/tcar_setModuleEnvironment.sh:159 +msgid "Closing variables" +msgstr "Cerrando variables" + +#: Automation/Scripts/tcar_unsetModuleEnvironment.sh:37 +msgid "The export id was not provided." +msgstr "El identificador de exportación no fue suministrado." diff --git a/tcar-scripts/tcar.sh b/tcar-scripts/tcar.sh new file mode 100755 index 0000000..39e6f58 --- /dev/null +++ b/tcar-scripts/tcar.sh @@ -0,0 +1,261 @@ +#!/bin/bash +###################################################################### +# +# tcar.sh -- The CentOS Artwork Repository automation tool. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +###################################################################### +# Identity +###################################################################### + +declare -xr TCAR_SCRIPT_NAME="tcar.sh" +declare -xr TCAR_SCRIPT_VERSION='0.8' +declare -xr TCAR_SCRIPT_COMMAND="tcar" + +###################################################################### +# Paths +###################################################################### + +# Base directory where repository files are installed in. +declare -xr TCAR_BASEDIR=/usr/share/tcar + +# Base directory where final content is produced. This value should be +# customized later by the user. +declare -xr TCAR_WORKDIR=/tmp + +# Base directory where automation script modules are installed in. +declare -xr TCAR_SCRIPT_MODULES_BASEDIR=${TCAR_BASEDIR}/modules + +# Directory to store temporal files. +declare -xr TCAR_SCRIPT_TEMPDIR=$(mktemp -p /tmp -d ${TCAR_SCRIPT_NAME}-XXXXXX) + +# Configuration files in order of reading preference. The last file in +# the list overlaps options set in previous files in the list. Use +# colon character to separate files in the list. +declare -xr TCAR_SCRIPT_CONFIG=${HOME}/.tcar.conf + +# Base directory where man pages are searched at. +declare -x TCAR_SCRIPT_MANUALS=/usr/share/man + +# Default text editor. +declare -x TCAR_SCRIPT_EDITOR=/usr/bin/vim + +###################################################################### +# Internationalization +###################################################################### + +# Set the script language information using the LC format. This format +# shows both language and country information (e.g., `es_ES'). +declare -xr TCAR_SCRIPT_LANG_LC=$(echo ${LANG} | cut -d'.' -f1) + +# Set the script language information using the LL format. This format +# shows only the language information (e.g., `es'). +declare -xr TCAR_SCRIPT_LANG_LL=$(echo ${TCAR_SCRIPT_LANG_LC} | cut -d'_' -f1) + +# Set the script language information using the CC format. This format +# shows only the country information (e.g., `ES'). +declare -xr TCAR_SCRIPT_LANG_CC=$(echo ${TCAR_SCRIPT_LANG_LC} | cut -d'_' -f2) + +# Set function environments required by GNU gettext system. +. gettext.sh + +# Set the script text domain. This information is used by gettext +# system to retrieve translated strings from machine object (MO) files +# with this name. This variable is reset each time a new module is +# loaded, so the correct files can be used. +declare -x TEXTDOMAIN="${TCAR_SCRIPT_NAME}" + +# Set the script text domain directory. This information is used by +# gettext system to know where the machine objects are stored in. This +# variable is reset each time a new module is loaded, so the correct +# files can be used. +declare -x TEXTDOMAINDIR=/usr/share/locale + +###################################################################### +# Global Flags +###################################################################### + +# Set filter flag (-f|--filter). This flag is mainly used to reduce +# the number of files to process and is interpreted as egrep-posix +# regular expression. By default, when this flag is not provided, all +# paths in the working copy will match, except files inside hidden +# directories like `.svn' and `.git' that will be omitted. +declare -x TCAR_FLAG_FILTER='[[:alnum:]_/-]+' + +# Set verbosity flag (-q|--quiet). This flag controls whether +# tcar.sh script prints messages or not. By default, all +# messages are suppressed except those directed to standard error. +declare -x TCAR_FLAG_QUIET='false' + +# Set affirmative flag (-y|--yes). This flag controls whether +# tcar.sh script does or does not pass confirmation request +# points. By default, it doesn't. +declare -x TCAR_FLAG_YES='false' + +# Set debugger flag (-d|--debug). This flag controls whether +# tcar.sh script does or does not print debugging information. +# The tcar.sh script prints debug information to standard +# output. +declare -x TCAR_FLAG_DEBUG='false' + +###################################################################### +# Global Functions +###################################################################### + +# Export script's environment functions. +for SCRIPT_FILE in $(ls ${TCAR_BASEDIR}/tcar_*.sh);do + if [[ -x ${SCRIPT_FILE} ]];then + . ${SCRIPT_FILE} + export -f $(grep '^function ' ${SCRIPT_FILE} | cut -d' ' -f2) + else + echo "${SCRIPT_FILE} `gettext "has not execution rights."`" + exit 1 + fi +done + +###################################################################### +# Signals +###################################################################### + +# Trap signals in order to terminate the script execution correctly +# (e.g., removing all temporal files before leaving). Trapping the +# exit signal seems to be enough by now, since it is always present as +# part of the script execution flow. Each time the tcar.sh +# script is executed it will inevitably end with an EXIT signal at +# some point of its execution, even if it is interrupted in the middle +# of its execution (e.g., through `Ctrl+C'). +trap tcar_terminateScriptExecution 0 + +###################################################################### +# Parse Command-line Arguments +###################################################################### + +declare -x TCAR_MODULE_NAME='' +declare -x TCAR_MODULE_ARGUMENT='' +declare -x TCAR_SCRIPT_ARGUMENT='' + +# Retrieve module's name using the first argument of tcar.sh +# script as reference. +if [[ ! ${1} =~ '^-' ]];then + TCAR_MODULE_NAME="${1}"; shift 1 +else + TCAR_MODULE_NAME="" +fi + +# Initialize tcar.sh script specific options. The way tcar.sh script +# retrieves its options isn't as sophisticated (e.g., it doesn't +# provide valid-option verifications) as it is provided by getopt +# command. I cannot use getopt here because it is already used when +# loading module-specific options. Using more than one invocation of +# getopt in the same script is not possible (e.g., one of the +# invocations may enter in conflict with the other one when different +# option definitions are expected in the command-line.) +while true; do + + # Store non-option arguments passed to tcar.sh script. + if [[ ! ${1} =~ '^-' ]];then + TCAR_SCRIPT_ARGUMENT="${1} ${TCAR_SCRIPT_ARGUMENT}" + shift 1 + if [[ $# -gt 0 ]];then + continue + else + break + fi + fi + + case "${1}" in + + --help* ) + + if [[ -z ${TCAR_MODULE_NAME} ]];then + # Print tcar.sh script's help. Consider that the + # --help option can receive an argument by using the + # equal sign (e.g., + # --help=tcar_setModuleEnvironment.sh). However, it + # is not possible to use spaces instead of equal sign + # because that would confuse other options from being + # parsed. + tcar_printHelp "${1}" + exit 0 + else + # Store the argument for further processing inside the + # module environment that will be executed later. + TCAR_MODULE_ARGUMENT="-g ${1} ${TCAR_MODULE_ARGUMENT}" + shift 1 + fi + ;; + + --version ) + + # Print tcar.sh script's version. + if [[ -z ${TCAR_MODULE_NAME} ]];then + tcar_printVersion + exit 0 + else + TCAR_MODULE_ARGUMENT="-g ${1} ${TCAR_MODULE_ARGUMENT}" + shift 1 + fi + ;; + + --quiet ) + + TCAR_FLAG_QUIET='true' + shift 1 + ;; + + --yes ) + + TCAR_FLAG_YES='true' + shift 1 + ;; + + --debug ) + + TCAR_FLAG_DEBUG='true' + shift 1 + ;; + + * ) + + # Store module-specific option arguments. This is, all + # arguments not considered part of tcar.sh script + # itself. The module-specific option arguments are passed, + # later, to getopt for option processing, inside the + # module-specific environments. + TCAR_MODULE_ARGUMENT="-g ${1} ${TCAR_MODULE_ARGUMENT}" + shift 1 + if [[ $# -gt 0 ]];then + continue + else + break + fi + ;; + esac +done + +# Initiate module-specific environment. +tcar_setModuleEnvironment -m "${TCAR_MODULE_NAME}" ${TCAR_MODULE_ARGUMENT} ${TCAR_SCRIPT_ARGUMENT} + +# At this point everything has been done without errors. So, exit +# tcar.sh script successfully. +exit 0 diff --git a/tcar-scripts/tcar_checkFiles.sh b/tcar-scripts/tcar_checkFiles.sh new file mode 100755 index 0000000..97aa0f0 --- /dev/null +++ b/tcar-scripts/tcar_checkFiles.sh @@ -0,0 +1,157 @@ +#!/bin/bash +###################################################################### +# +# tcar_checkFiles.sh -- This function standardizes the way file +# conditional expressions are applied to files. Here is where +# centos-art.sh script answers questions like: is the file a regular +# file or a directory? Or, is it a symbolic link? Or even, does it +# have execution rights, etc. If the verification fails somehow at +# any point, an error message is output and centos-art.sh script +# finishes its execution. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_checkFiles { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + # Initialize local array variables. + local -a CONDITION_COMMAND + local -a CONDITION_PATTERN + local -a CONDITION_MESSAGE + + # Initialize local counter. + local COUNTER=0 + + OPTIND=1 + while getopts "i:,r,m:,n,d,e,f,h,x" OPTION "${@}"; do + + case "${OPTION}" in + + d ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-d' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a directory."`" + ;; + + e ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-e' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "doesn't exist."`" + ;; + + f ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-f' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a regular file."`" + ;; + + h ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-h' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a symbolic link."`" + ;; + + x ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-x' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't an executable file."`" + ;; + + i ) + local MIME=${OPTARG} + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='/usr/bin/file' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-bi' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`eval_gettext "isn't a \\\"\\\$MIME\\\" file."`" + ;; + + m ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='match' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="${OPTARG}" + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "doesn't match its pattern."`" + ;; + + n ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]="/bin/rpm" + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="-q --quiet" + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't installed in the system."`" + ;; + + esac + done + + # Clean up positional parameters to reflect the fact that options + # have been processed already. + shift $(( ${OPTIND} - 1 )) + + # Define list of files we want to apply verifications to, now that + # all option-like arguments have been removed from positional + # parameters list so we are free to go with the verifications. + local FILE='' + local FILES=${@} + + # Verify existence of files to prevent centos-art.sh script from + # using the current location in cases when it shouldn't (e.g., + # here it is expecting a list of files to process.). + if [[ -z ${FILES} ]];then + tcar_printMessage "`gettext "No file for processing found."`" --as-error-line + fi + + for FILE in ${FILES};do + + until [[ ${COUNTER} -eq ${#CONDITION_PATTERN[*]} ]];do + + case ${CONDITION_COMMAND[${COUNTER}]} in + + "/usr/bin/test" | "/bin/rpm" ) + ${CONDITION_COMMAND[${COUNTER}]} ${CONDITION_PATTERN[${COUNTER}]} ${FILE} \ + || tcar_printMessage "${FILE} ${CONDITION_MESSAGE[${COUNTER}]}" --as-error-line + ;; + + "/usr/bin/file" ) + if [[ ! $(${CONDITION_COMMAND[${COUNTER}]} ${CONDITION_PATTERN[${COUNTER}]} ${FILE}) =~ "^${MIME}" ]];then + tcar_printMessage "${FILE} ${CONDITION_MESSAGE[${COUNTER}]}" --as-error-line + fi + ;; + + "match" ) + if [[ ! ${FILE} =~ "${CONDITION_PATTERN[${COUNTER}]}" ]];then + tcar_printMessage "${FILE} ${CONDITION_MESSAGE[${COUNTER}]}" --as-error-line + fi + ;; + + * ) + tcar_printMessage "`gettext "The condition command provided isn't supported."`" --as-error-line + ;; + + esac + + COUNTER=$((${COUNTER} + 1)) + + done + + done + +} diff --git a/tcar-scripts/tcar_checkModuleName.sh b/tcar-scripts/tcar_checkModuleName.sh new file mode 100755 index 0000000..c93a7d3 --- /dev/null +++ b/tcar-scripts/tcar_checkModuleName.sh @@ -0,0 +1,38 @@ +#!/bin/bash +###################################################################### +# +# tcar_checkModuleName.sh -- This function uses the module's based +# directory to verify whether child and sibling modules do exist or +# not. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_checkModuleName { + + local TCAR_MODULE_LIST=$(ls ${TCAR_MODULE_BASEDIR} | tr '\n' '|' \ + | sed -r 's/\|$//' | tr '[[:upper:]]' '[[:lower:]]') + + tcar_checkFiles -m "^(${TCAR_MODULE_LIST})$" "${TCAR_MODULE_NAME}" + + tcar_printMessage "TCAR_MODULE_LIST : ${TCAR_MODULE_LIST}" --as-debugger-line + +} diff --git a/tcar-scripts/tcar_checkRepoDirSource.sh b/tcar-scripts/tcar_checkRepoDirSource.sh new file mode 100755 index 0000000..05febd7 --- /dev/null +++ b/tcar-scripts/tcar_checkRepoDirSource.sh @@ -0,0 +1,100 @@ +#!/bin/bash +###################################################################### +# +# tcar_checkRepoDirSource.sh -- This function standardizes the path +# construction of directories inside the working copy, using +# absolute paths. This function transforms relative paths passed as +# non-option arguments to centos-art.sh script command-line into +# absolute paths inside the working copy, based on whether you are +# using Subversion or Git as version control system. Further +# verifications, (e.g., whether they really exist as directories +# inside the working copy or not) should be realized outside this +# function. +# +# Use this function whenever you want to be sure non-option +# arguments passed to centos-art.sh script command-line do always +# point to directories inside the working copy. Transforming +# relative paths into absolute paths, before processing them, is +# very useful when you need to execute the centos-art.sh script as +# command (e.g., `centos-art') anywhere on your workstation. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_checkRepoDirSource { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + local LOCATION=${1} + + # Remove any dot from arguments passed to centos-art.sh script. + # This way it is possible to use a single dot to reflect the + # current location from which centos-art.sh was executed. Notice + # that using a dot as argument is optional (e.g.: when you pass no + # argument to centos-art command-line, the current location is + # used as default location). However, it might be useful to use a + # dot as argument when you want to include the current location in + # a list of arguments to process. Don't forget that dot slash can + # be used to refer locations relatively. + LOCATION=$(echo "${LOCATION}" | sed -r "s,^\.(/([[:alnum:]_/.-]+)?)?$,$(pwd)\1,g") + + # Remove the path to repository's base directory from location in + # order to avoid path duplications here. + LOCATION=$(echo "${LOCATION}" | sed "s,${TCAR_BASEDIR}/,,g") + + # When we use Git as version control system, there isn't a need of + # using the `trunk', `branches', `tags' convention we were using + # for Subversion. The working copy begins directly with the + # content of our repository (e.g., Documentation, Scripts, + # Identity and Locales). + # + # When we use Subversion as version control system, we follow the + # `trunk', `branches', `tags' convention to organize files inside + # the repository and need to redefine the source path in order to + # build the repository absolute path from the repository top level + # on. As convention, when you prepare your working copy through + # centos-art.sh script, the absolute path to the `trunk/' + # directory is used as working copy. This is, path arguments + # provided to centos-art.sh script will be interpreted from trunk/ + # directory level on. For example, the following command should + # work correctly in both Subversion and Git repositories: + # + # centos-art render Documentation/Manuals/Docbook/Tcar-ug + # + # There isn't a need of verifying the paths built here. This is + # something we do later, using the tcar_checkFiles function. We + # don't do the file verification here to avoid malformed error + # messages when we reassign variable values using this function as + # reference (e.g., in order to prevent error messages from being + # stored inside variables.). + LOCATION=${TCAR_BASEDIR}/${LOCATION} + + # Remove trailing slashes passed as argument. The single slash + # form is used to refer the repository's root directory. The + # single slash form passed as argument of centos-art.sh script is + # useful to execute commands over the + # entire repository tree. + echo "${LOCATION}" | sed -r -e 's,/+,/,g' -e 's,/+$,,g' + +} diff --git a/tcar-scripts/tcar_getConfigLines.sh b/tcar-scripts/tcar_getConfigLines.sh new file mode 100755 index 0000000..6c52553 --- /dev/null +++ b/tcar-scripts/tcar_getConfigLines.sh @@ -0,0 +1,64 @@ +#!/bin/bash +###################################################################### +# +# tcar_getConfigLines.sh -- This function standardizes the way +# configuration lines are retrieved form configuration files. As +# arguments, the configuration file absolute path, the configuration +# section name, and the configuration option name must be provided. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getConfigLines { + + # Initialize absolute path to configuration file. + local CONFIGURATION_FILE="${1}" + + # Initialize configuration section name where the variable value + # we want to to retrieve is set in. + local CONFIGURATION_SECTION="${2}" + + # Initialize variable name we want to retrieve value from. + local CONFIGURATION_OPTION="${3}" + + # Verify configuration variable name. When no variable name is + # provided print all configuration lines that can be considered as + # well-formed paths. Be sure configuration variable name starts + # just at the beginning of the line. + if [[ ! ${CONFIGURATION_OPTION} =~ '^[[:alnum:]_./-]+$' ]];then + CONFIGURATION_OPTION='[[:alnum:]_./-]+[[:space:]]*=' + fi + + # Retrieve configuration lines from configuration file. Don't sort + # the value of this value so as to preserve the order given in the + # configuration file. This is important because configuration + # files are being used for setting render-from priorities. + local CONFIGURATION_LINES=$(cat ${CONFIGURATION_FILE} \ + | egrep -v '^#' \ + | egrep -v '^[[:space:]]*$' \ + | sed -r -n "/^\[${CONFIGURATION_SECTION}\][[:space:]]*$/,/^\[/p" \ + | egrep -v '^\[' \ + | egrep "^${CONFIGURATION_OPTION}") + + # Output value related to variable name. + echo "${CONFIGURATION_LINES}" + +} diff --git a/tcar-scripts/tcar_getConfigSectionNames.sh b/tcar-scripts/tcar_getConfigSectionNames.sh new file mode 100755 index 0000000..8da1206 --- /dev/null +++ b/tcar-scripts/tcar_getConfigSectionNames.sh @@ -0,0 +1,51 @@ +#!/bin/bash +###################################################################### +# +# tcar_getConfigSectionNames.sh -- This function standardizes the way +# section names are retrieved from configuration files. Once section +# names are retrieved they are printed to standard output for +# further processing. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getConfigSectionNames { + + # Define absolute path to configuration file we want to retrieve + # section names from. + local CONFIGURATION_FILE=${1} + + # Verify existence of configuration file. + tcar_checkFiles -ef ${CONFIGURATION_FILE} + + # Define regular expression pattern used to retrieve section names + # from configuration files. Don't permit any regular expression + # meta-character either. + local CONFIGURATION_SECTION_REGEX='^\[[[:alnum:]_.-]+\][[:space:]]*$' + + # Output all section names without brackets, one per line. Don't + # permit any kind of expansion here. Section names are used as + # reference to retrieve information from configuration file, + # expanding them would create different points of verifications. + egrep ${CONFIGURATION_SECTION_REGEX} ${CONFIGURATION_FILE} \ + | sed -r 's,\[(.+)\],\1,' + +} diff --git a/tcar-scripts/tcar_getConfigValue.sh b/tcar-scripts/tcar_getConfigValue.sh new file mode 100755 index 0000000..9b2f32f --- /dev/null +++ b/tcar-scripts/tcar_getConfigValue.sh @@ -0,0 +1,51 @@ +#!/bin/bash +###################################################################### +# +# tcar_getConfigValue.sh -- This function standardizes the way +# configuration values are retrieved from configuration files. As +# arguments, the configuration file absolute path, the configuration +# section name, and the configuration option name must be provided. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getConfigValue { + + local CONFIGURATION_FILE="${1}" + + local CONFIGURATION_SECTION="${2}" + + local CONFIGURATION_OPTION="${3}" + + local CONFIGURATION_LINES=$(tcar_getConfigLines \ + "${CONFIGURATION_FILE}" "${CONFIGURATION_SECTION}" "${CONFIGURATION_OPTION}") + + for CONFIGURATION_LINE in "${CONFIGURATION_LINES}";do + + local CONFIGURATION_VALUE=$(echo "${CONFIGURATION_LINE}" \ + | cut -d= -f2- | sed -r -e 's/"//g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + + eval echo ${CONFIGURATION_VALUE} + + done + + +} diff --git a/tcar-scripts/tcar_getFileExtension.sh b/tcar-scripts/tcar_getFileExtension.sh new file mode 100755 index 0000000..b00cb26 --- /dev/null +++ b/tcar-scripts/tcar_getFileExtension.sh @@ -0,0 +1,32 @@ +#!/bin/bash +###################################################################### +# +# tcar_getFileExtension.sh -- This function retrieves the extension +# of a file. +# +# Written by: +# * Alain Reguera Delgado , 2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getFileExtension { + + basename ${1} | sed -r 's/.+\.([[:alnum:]]+)$/\1/' + +} diff --git a/tcar-scripts/tcar_getFileName.sh b/tcar-scripts/tcar_getFileName.sh new file mode 100755 index 0000000..99bfb76 --- /dev/null +++ b/tcar-scripts/tcar_getFileName.sh @@ -0,0 +1,31 @@ +#!/bin/bash +###################################################################### +# +# tcar_getFileName.sh -- This function retrieves the name of a file. +# +# Written by: +# * Alain Reguera Delgado , 2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getFileName { + + basename ${1} | sed -r 's/\.([[:alnum:]]+)$//' + +} diff --git a/tcar-scripts/tcar_getFilesList.sh b/tcar-scripts/tcar_getFilesList.sh new file mode 100755 index 0000000..6bd611a --- /dev/null +++ b/tcar-scripts/tcar_getFilesList.sh @@ -0,0 +1,125 @@ +#!/bin/bash +###################################################################### +# +# tcar_getFilesList.sh -- This function standardizes the way list of +# files are built inside centos-art.sh script. This function outputs +# a sorted and unique list of files based on the options and +# locations passed as argument. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getFilesList { + + # Define short options. + local ARGSS='' + + # Define long options. + local ARGSL='pattern:,mindepth:,maxdepth:,type:,uid:' + + # Initialize pattern used to reduce the find output. + local PATTERN="${TCAR_FLAG_FILTER}" + + # Initialize options used with find command. + local OPTIONS='' + + # Initialize arguments with an empty value and set it as local + # variable to this function scope. Doing this is very important to + # avoid any clash with higher execution environments. + local TCAR_MODULE_ARGUMENT='' + + # Process all arguments currently available in this function + # environment. If either ARGSS or ARGSL local variables have been + # defined, argument processing goes through getopt for validation. + tcar_setModuleArguments "${@}" + + # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. + eval set -- "${TCAR_MODULE_ARGUMENT}" + + while true;do + case "${1}" in + + --pattern ) + PATTERN="${2}" + shift 2 + ;; + + --maxdepth ) + OPTIONS="${OPTIONS} -maxdepth ${2}" + shift 2 + ;; + + --mindepth ) + OPTIONS="${OPTIONS} -mindepth ${2}" + shift 2 + ;; + + --type ) + OPTIONS="${OPTIONS} -type ${2}" + shift 2 + ;; + + --uid ) + OPTIONS="${OPTIONS} -uid ${2}" + shift 2 + ;; + + -- ) + shift 1 + break + ;; + esac + done + + # At this point all options arguments have been processed and + # removed from positional parameters. Only non-option arguments + # remain so we use them as source location for find command to + # look files for. + + # Verify that locations does exist. + tcar_checkFiles -e ${@} + + # Redefine pattern as regular expression. When we use regular + # expressions with find, regular expressions are evaluated against + # the whole file path. This way, when the regular expression is + # specified, we need to build it in a way that matches the whole + # path we are using. Doing so, every time we pass the `--filter' + # option in the command-line could be a tedious task. Instead, in + # the sake of reducing some typing, we prepare the regular + # expression here to match the whole path using the regular + # expression provided by the user as pattern. Do not use locations + # as part of regular expression so it could be possible to use + # path expansion. Using path expansion reduce the amount of + # places to find out things and so the time required to finish the + # task. + # + # Don't do such path expansion here. Instead, do it when you call + # this function. Otherwise you would be prohibiting the + # application of exact patterns. + #PATTERN="^/.*${PATTERN}$" + + # Define list of files to process. At this point we cannot verify + # whether the location is a directory or a file since path + # expansion could be introduced to it. The best we can do is + # verifying exit status and go on. + find ${@} -regextype posix-egrep ${OPTIONS} -regex "${PATTERN}" | sort | uniq + +} diff --git a/tcar-scripts/tcar_getPathComponent.sh b/tcar-scripts/tcar_getPathComponent.sh new file mode 100755 index 0000000..d006768 --- /dev/null +++ b/tcar-scripts/tcar_getPathComponent.sh @@ -0,0 +1,141 @@ +#!/bin/bash +###################################################################### +# +# tcar_getPathComponent.sh -- This function standardizes the way +# directory structures are organized inside the working copy of +# CentOS Artwork Repository. You can use this function to retrieve +# information from paths (e.g., releases, architectures and theme +# artistic motifs) or the patterns used to build the paths. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getPathComponent { + + # Define short options. + local ARGSS='' + + # Define long options. + local ARGSL='release,release-major,release-minor,release-pattern,architecture,architecture-pattern,motif,motif-name,motif-version,motif-pattern,repo-dir' + + # Define release pattern. + local VERSION="(([[:digit:]]+)(\.([[:digit:]]+))?)" + + # Define architecture pattern. Make it match the architectures the + # CentOS distribution is able to be installed on. + local ARCHITECTURE="(i386|x86_64)" + + # Define regular expression pattern that match the theme artistic + # motif component inside the path strings. + local THEME_MOTIF="Themes/Motifs/(([[:alnum:]]+)/(${VERSION}))" + + # Initialize arguments with an empty value and set it as local + # variable to this function scope. Doing this is very important to + # avoid any clash with higher execution environments. + local TCAR_MODULE_ARGUMENT='' + + # Process all arguments currently available in this function + # environment. If either ARGSS or ARGSL local variables have been + # defined, argument processing goes through getopt for validation. + tcar_setModuleArguments "${@}" + + # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. + eval set -- "${TCAR_MODULE_ARGUMENT}" + + # Define location we want to apply verifications to. + local LOCATION=$(echo ${@} | sed -r 's!^.*--[[:space:]](.+)$!\1!') + + # Look for options passed through positional parameters. + while true;do + + case "${1}" in + + --release ) + echo "${LOCATION}" | egrep "${VERSION}" | sed -r "s!.*/${VERSION}/.*!\1!" + shift 1 + break + ;; + + --release-major ) + echo "${LOCATION}" | egrep "${VERSION}" | sed -r "s!.*/${VERSION}/.*!\2!" + shift 1 + break + ;; + + --release-minor ) + echo "${LOCATION}" | egrep "${VERSION}" | sed -r "s!.*/${VERSION}/.*!\4!" + shift 1 + break + ;; + + --release-pattern ) + echo "${VERSION}" + shift 1 + break + ;; + + --architecture ) + echo "${LOCATION}" | egrep "${ARCHITECTURE}" | sed -r "s!${ARCHITECTURE}!\1!" + shift 1 + break + ;; + + --architecture-pattern ) + echo "${ARCHITECTURE}" + shift 1 + break + ;; + + --motif ) + echo "${LOCATION}" | egrep "${THEME_MOTIF}" | sed -r "s!.*${THEME_MOTIF}.*!\1!" + shift 1 + break + ;; + + --motif-name ) + echo "${LOCATION}" | egrep "${THEME_MOTIF}" | sed -r "s!.*${THEME_MOTIF}.*!\2!" + shift 1 + break + ;; + + --motif-version ) + echo "${LOCATION}" | egrep "${THEME_MOTIF}" | sed -r "s!.*${THEME_MOTIF}.*!\3!" + shift 1 + break + ;; + + --motif-pattern ) + echo "${THEME_MOTIF}" + shift 1 + break + ;; + + --repo-dir ) + echo "${LOCATION}" | sed "s,${TCAR_USER_WRKDIR}/,," + shift 1 + break + ;; + + esac + + done + +} diff --git a/tcar-scripts/tcar_getRepoName.sh b/tcar-scripts/tcar_getRepoName.sh new file mode 100755 index 0000000..b572bf0 --- /dev/null +++ b/tcar-scripts/tcar_getRepoName.sh @@ -0,0 +1,135 @@ +#!/bin/bash +###################################################################### +# +# tcar_getRepoName.sh -- This function standardizes files and +# directories name convection inside the working copy of CentOS +# Artowrk Repository. As convection, regular files are written in +# lower-case and directories are written capitalized. Use this +# function to sanitate the name of regular files and directories on +# paths you work with. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getRepoName { + + # Define the name we want to apply verifications to. + local NAME="${1}" + + # Avoid using options as it were names. When name value is empty + # but an option is provided, the option becomes the first + # positional argument and is evaluated as it were a name which is + # something we need to prevent from happening. + if [[ ${NAME} =~ '^-' ]];then + return + fi + + # Look for options passed through positional parameters. + case "${2}" in + + -f|--basename ) + + # Reduce the path passed to use just the non-directory + # part of it (i.e., the last component in the path; _not_ + # the last "real" directory in the path). + NAME=$(basename ${NAME}) + + # Clean value. + NAME=$(echo ${NAME} \ + | tr -s ' ' '_' \ + | tr '[:upper:]' '[:lower:]') + ;; + + -d|--dirname ) + + local DIR='' + local DIRS='' + local CLEANDIRS='' + local PREFIXDIR='' + + # In order to sanitate each directory in a path, it is + # required to break off the path string so each component + # can be worked out individually and later combine them + # back to create a clean path string. + + # Reduce path information passed to use the directory part + # of it only. Of course, this is applied if there is a + # directory part in the path. Assuming there is no + # directory part but a non-empty value in the path, use + # that value as directory part and clean it up. + if [[ ${NAME} =~ '.+/.+' ]];then + + # When path information is reduced, we need to + # consider that absolute paths contain some + # directories outside the working copy directory + # structure that shouldn't be sanitized (e.g., /home, + # /home/centos, /home/centos/artwork, + # /home/centos/artwork/turnk, trunk, etc.) So, we keep + # them unchanged for later use. + PREFIXDIR=$(echo ${NAME} \ + | sed -r "s,^((${TCAR_USER_WRKDIR}/)?(trunk|branches|tags)/)?.+$,\1,") + + # ... and remove them from the path information we do + # want to sanitate. + DIRS=$(dirname "${NAME}" \ + | sed -r "s!^${PREFIXDIR}!!" \ + | tr '/' ' ') + + else + + # At this point, there is not directory part in the + # information passed, so use the value passed as + # directory part as such. + DIRS=${NAME} + + fi + + for DIR in ${DIRS};do + + # Sanitate directory component. + if [[ ${DIR} =~ '^[a-z]' ]];then + DIR=$(echo ${DIR} \ + | tr -s ' ' '_' \ + | tr '[:upper:]' '[:lower:]' \ + | sed -r 's/^([[:alpha:]])/\u\1/') + fi + + # Rebuild path using sanitized values. + CLEANDIRS="${CLEANDIRS}/${DIR}" + + done + + # Redefine path using sanitized values. + NAME=$(echo ${CLEANDIRS} | sed -r "s!^/!!") + + # Add prefix directory information to sanitate path + # information. + if [[ "${PREFIXDIR}" != '' ]];then + NAME=${PREFIXDIR}${NAME} + fi + ;; + + esac + + # Print out the clean path string. + echo ${NAME} + +} diff --git a/tcar-scripts/tcar_getTemporalFile.sh b/tcar-scripts/tcar_getTemporalFile.sh new file mode 100755 index 0000000..b182513 --- /dev/null +++ b/tcar-scripts/tcar_getTemporalFile.sh @@ -0,0 +1,53 @@ +#!/bin/bash +###################################################################### +# +# tcar_getTemporalFile.sh -- This function returns the absolute path +# you need to use to create temporal files. Use this function +# whenever you need to create temporal files inside centos-art.sh +# script. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_getTemporalFile { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + # Define base name for temporal file. This is required when svg + # instances are created previous to be parsed by inkscape in order + # to be exported as png. In such cases .svg file extension is + # required in order to avoid complains from inkscape. + local FILENAME="${RANDOM}${RANDOM}-$(tcar_getRepoName ${1} -f)" + + # Check default base name for temporal file, it can't be an empty + # value. + if [[ -z "${FILENAME}" ]];then + tcar_printMessage "`gettext "The first argument cannot be empty."`" --as-error-line + fi + + # Define absolute path for temporal file and send it out to + # standard output. + echo "${TCAR_SCRIPT_TEMPDIR}/${FILENAME}" + +} diff --git a/tcar-scripts/tcar_printCaller.sh b/tcar-scripts/tcar_printCaller.sh new file mode 100755 index 0000000..1ceab89 --- /dev/null +++ b/tcar-scripts/tcar_printCaller.sh @@ -0,0 +1,56 @@ +#!/bin/bash +###################################################################### +# +# tcar_printCaller.sh -- This function standardizes the way caller +# information is retrieved. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printCaller { + + local EXPR=${1} + local OPTS=${2} + + case ${OPTS} in + + --line ) + caller ${EXPR} | gawk '{ print $1 }' + ;; + + --name ) + caller ${EXPR} | gawk '{ print $2 }' + ;; + + --path ) + caller ${EXPR} | gawk '{ print $3 }' + ;; + + * ) + # Define where the error was originated inside the + # centos-art.sh script. Print out the function name and + # line from the caller. + caller ${EXPR} | gawk '{ print $2 " L." $1 }' + ;; + + esac + +} diff --git a/tcar-scripts/tcar_printCopyrightInfo.sh b/tcar-scripts/tcar_printCopyrightInfo.sh new file mode 100755 index 0000000..f50c4cd --- /dev/null +++ b/tcar-scripts/tcar_printCopyrightInfo.sh @@ -0,0 +1,137 @@ +#!/bin/bash +###################################################################### +# +# tcar_printCopyrightInfo.sh -- This function standardizes the +# copyright information printed on content produced by centos-art.sh +# script. +# +# As far as I understand, the copyright exists to make people create +# more. The copyright gives creators the legal power over their +# creations and so the freedom to distribute them under the ethical +# terms the creator considers better. At this moment I don't feel +# very confident about this legal affairs and their legal +# implications, but I need to decide what copyright information the +# centos-art.sh script will print out when someone request +# information about it. So, in that sake, I am using The CentOS +# Artwork SIG as copyright holder and the GNU Public License, +# version 2 or any later, for software distribution. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printCopyrightInfo { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + case "${1}" in + + --license ) + + # Print the license name. + echo "`gettext "Creative Common Attribution-ShareAlike 3.0 License"`" + ;; + + --license-url ) + + # Print the url related to license name. + tcar_printUrl --cc-sharealike + ;; + + --first-year ) + + # The former year when I (as collaborator of The CentOS + # Project) started to consolidate The CentOS Project + # Corporate Visual Identity through the CentOS Artwork + # Repository. + echo '2009' + ;; + + --year|--last-year) + + # The last year when The CentOS Project stopped working in + # its Corporate Visual Identity through the CentOS Artwork + # Repository. That is something that I hope never happens, + # so assume the current year as last working year. + date +%Y + ;; + + --years-range ) + + local FIRST_YEAR=$(tcar_printCopyrightInfo --first-year) + local LAST_YEAR=$(tcar_printCopyrightInfo --last-year) + echo "${FIRST_YEAR}-${LAST_YEAR}" + ;; + + --years-list ) + + local FIRST_YEAR=$(tcar_printCopyrightInfo --first-year) + local LAST_YEAR=$(tcar_printCopyrightInfo --last-year) + + # Define full copyright year string based on first and + # last year. + local FULL_YEAR=$(\ + while [[ ${FIRST_YEAR} -le ${LAST_YEAR} ]];do + echo -n "${FIRST_YEAR}, " + FIRST_YEAR=$((${FIRST_YEAR} + 1)) + done) + + # Prepare full copyright year string and print it out. + echo "${FULL_YEAR}" | sed 's!, *$!!' + ;; + + --holder ) + + # Print centos-art.sh script default copyright holder. Be + # pragmatic about this information, please. The CentOS + # Project exists to produce The CentOS Distribution, not + # centos-art.sh script. Nevertheless, The CentOS Artwork + # SIG is an organizational unit of The CentOS Project + # which is focused on producing The CentOS Project + # corporate visual identity, by means of The CentOS + # Artwork Repository. The centos-art.sh script automates + # frequent tasks inside The CentOS Artwork Repository so, + # based on these considerations, the copyright holder of + # the centos-art.sh script is "closer" to be The CentOS + # Artwork SIG than it would be The CentOS Project. These + # are the logical choosing ideas behind the copyright + # holder of centos-art.sh script. + echo "The CentOS Artwork SIG" + ;; + + --holder-predicate ) + + local HOLDER=$(tcar_printCopyrightInfo --holder) + echo "${HOLDER}. `gettext "All rights reserved."`" + ;; + + * ) + + local YEAR=$(tcar_printCopyrightInfo --last-year) + local HOLDER=$(tcar_printCopyrightInfo --holder) + echo "Copyright © ${YEAR} ${HOLDER}" + ;; + + esac + +} diff --git a/tcar-scripts/tcar_printFile.sh b/tcar-scripts/tcar_printFile.sh new file mode 100755 index 0000000..303133e --- /dev/null +++ b/tcar-scripts/tcar_printFile.sh @@ -0,0 +1,46 @@ +#!/bin/bash +###################################################################### +# +# tcar_printFile.sh -- This function standardizes the way files are +# concatenated inside centos-art.sh script. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printFile { + + # Define absolute path to file you want to print. Take into + # consideration that this file might be out of the repository + # (e.g., it would be a temporal file stored under + # /tmp/centos-art-XXXXXX/ directory). + local FILE="${1}" + + tcar_checkFiles -ef ${FILE} + + if [[ $(/usr/bin/file -b -i ${FILE}) =~ '^application/x-gzip$' ]];then + /bin/zcat ${FILE} + elif [[ $(/usr/bin/file -b -i ${FILE}) =~ '^application/x-bzip2$' ]];then + /bin/bzcat ${FILE} + else + /bin/cat ${FILE} + fi + +} diff --git a/tcar-scripts/tcar_printHelp.sh b/tcar-scripts/tcar_printHelp.sh new file mode 100755 index 0000000..f585eb7 --- /dev/null +++ b/tcar-scripts/tcar_printHelp.sh @@ -0,0 +1,55 @@ +#!/bin/bash +###################################################################### +# +# tcar_printHelp.sh -- This function standardizes the way +# centos-art.sh script prints help about itself. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printHelp { + + # Retrieve the man page name. This is the file name you want to retrieve + # documentation for. This value is optional. When it is not passed, the + # module name is used. + local TCAR_MANPAGE_NAME="${1:-${TCAR_MODULE_NAME}}" + + # When the module name has not been set and the tcar_printHelp + # function is called from centos-art.sh file, the page name come + # with with --help as opening string and probably as + # --help=filename.sh. In the first case it prints the script + # documentation. In the second case it prints documentation for + # the file specified. + if [[ -z ${TCAR_MODULE_NAME} ]];then + if [[ ${TCAR_MANPAGE_NAME} =~ '^--help=[[:alnum:]_-.]+' ]];then + TCAR_MANPAGE_NAME=$(echo ${TCAR_MANPAGE_NAME} | cut -d'=' -f2) + else + TCAR_MANPAGE_NAME=${TCAR_SCRIPT_NAME} + fi + fi + + # Print requested documentation. + /usr/bin/man -M ${TCAR_SCRIPT_DIR_MANUALS}:${TCAR_MODULE_DIR_MANUALS}/Final "${TCAR_MANPAGE_NAME}" + + # Finish script execution successfully. + exit 0 + +} diff --git a/tcar-scripts/tcar_printMailingList.sh b/tcar-scripts/tcar_printMailingList.sh new file mode 100755 index 0000000..3bac5a4 --- /dev/null +++ b/tcar-scripts/tcar_printMailingList.sh @@ -0,0 +1,77 @@ +#!/bin/bash +###################################################################### +# +# tcar_printMailingList.sh -- This function standardizes the way +# mailing list addresses are printed on content produced by +# centos-art.sh script. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printMailingList { + + local MAILADDRS='' + + # Define short options. + local ARGSS='' + + # Define long options. + local ARGSL='as-html-link:,docs' + + # Initialize arguments with an empty value and set it as local + # variable to this function scope. Doing this is very important to + # avoid any clash with higher execution environments. + local TCAR_MODULE_ARGUMENT='' + + # Process all arguments currently available in this function + # environment. If either ARGSS or ARGSL local variables have been + # defined, argument processing goes through getopt for validation. + tcar_setModuleArguments "${@}" + + # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. + eval set -- "${TCAR_MODULE_ARGUMENT}" + + # Look for options passed through command-line. + while true; do + case "${1}" in + + --docs ) + MAILADDRS="${TCAR_BRAND}-docs@$(tcar_printUrl --domain)" + shift 1 + ;; + + --as-html-link ) + MAILADDRS="${2}" + shift 2 + ;; + + -- ) + + shift 1 + break + ;; + esac + done + + # Print mail address. + echo "${MAILADDRS}" + +} diff --git a/tcar-scripts/tcar_printMessage.sh b/tcar-scripts/tcar_printMessage.sh new file mode 100755 index 0000000..6e9914a --- /dev/null +++ b/tcar-scripts/tcar_printMessage.sh @@ -0,0 +1,304 @@ +#!/bin/bash +###################################################################### +# +# tcar_printMessage.sh -- This function standardizes the way messages +# are printed by centos-art.sh script. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printMessage { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + local MESSAGE="${1}" + local FORMAT="${2}" + + # Verify message variable, it cannot have an empty value. + if [[ -z ${MESSAGE} ]];then + tcar_printMessage "`gettext "The message cannot be empty."`" --as-error-line + fi + + # Define message horizontal width. This is the max number of + # horizontal characters the message will use to be displayed on + # the screen. + local MESSAGE_WIDTH=66 + + # Remove empty spaces from message. + MESSAGE=$(printf %s "${MESSAGE}" | sed -r -e 's!^[[:space:]]+!!') + + # Print messages that will always be printed no matter what value + # the TCAR_FLAG_QUIET variable has. + case "${FORMAT}" in + + --as-stdout-line* ) + + local MARGIN_LEFT=15 + if [[ ${FORMAT} =~ '--as-stdout-line=[[:digit:]]+' ]];then + MARGIN_LEFT=$(echo ${FORMAT} | cut -d'=' -f2) + fi + + # Default printing format. This is the format used when no + # other specification is passed to this function. As + # convenience, we transform absolute paths into relative + # paths in order to free horizontal space on final output + # messages. + printf %s "${MESSAGE}" | sed -r \ + -e "s!${TCAR_BASEDIR}/!!g" \ + -e "s!> /!> !g" \ + -e "s!/{2,}!/!g" \ + | gawk 'BEGIN { FS=": " } + { + if ( $0 ~ /^-+$/ ) + print $0 + else + printf "%-'${MARGIN_LEFT}'s\t%s\n", $1, $2 + } + END {}' + ;; + + --as-error-line ) + + # Build the error trail. This is very useful for tracking + # the error down. + tcar_printMessage '-' --as-separator-line + tcar_printMessage "${FUNCNAME[*]}" --as-tree-line + + # Build the error message. + tcar_printMessage '-' --as-separator-line + tcar_printMessage "$(tcar_printCaller 1) ${MESSAGE}" --as-stderr-line + tcar_printMessage '-' --as-separator-line + + # Finish script execution with exit status 1 (SIGHUP) to + # imply the script finished because an error. We are + # using this as convention to finish the script execution. + # So, don't remove the following line, please. + exit 1 + ;; + + --as-debugger-line ) + if [[ ${TCAR_FLAG_DEBUG} == 'true' ]];then + tcar_printMessage "$(date +"%c") ${MESSAGE}" --as-stdout-line=60 + else + return + fi + ;; + + --as-tree-line ) + local NAME + local -a FN + for NAME in ${MESSAGE};do + FN[++((${#FN[*]}))]=${NAME} + done + local COUNT=$(( ${#FN[*]} - 2 )) + local SEPARATOR='`--' + local SPACES=0 + echo "${TCAR_SCRIPT_BASEDIR}/${TCAR_SCRIPT_NAME}" 1>&2 + while [[ ${COUNT} -gt 0 ]];do + if [[ ${COUNT} -eq $(( ${#FN[*]} - 2 )) ]];then + echo ${SEPARATOR} ${FN[${COUNT}]} 1>&2 + else + echo ${FN[${COUNT}]} \ + | gawk '{ printf "%'${SPACES}'s%s %s\n", "", "'${SEPARATOR}'", $1 }' 1>&2 + fi + COUNT=$((${COUNT} - 1)) + SPACES=$((${SPACES} + 4)) + done + ;; + + --as-toknowmore-line ) + tcar_printMessage "`gettext "To know more, run"` ${TCAR_SCRIPT_COMMAND} ${MESSAGE} --help" --as-stderr-line + ;; + + --as-yesornorequest-line ) + + # Define positive answer. + local Y="`gettext "yes"`" + + # Define negative answer. + local N="`gettext "no"`" + + # Define default answer. + local ANSWER=${N} + + if [[ ${TCAR_FLAG_YES} == 'true' ]];then + + ANSWER=${Y} + + else + + # Print the question to standard error. + tcar_printMessage "${MESSAGE} [${Y}/${N}]" --as-request-line + + # Redefine default answer based on user's input. + read ANSWER + + fi + + # Verify user's answer. Only positive answer let the + # script flow to continue. Otherwise, if something + # different from positive answer is passed, the script + # terminates its execution immediately. + if [[ ! ${ANSWER} =~ "^${Y}" ]];then + exit + fi + ;; + + --as-selection-line ) + # Create selection based on message. + local NAME='' + select NAME in ${MESSAGE};do + echo ${NAME} + break + done + ;; + + --as-response-line ) + tcar_printMessage "--> ${MESSAGE}" --as-stderr-line + ;; + + --as-request-line ) + tcar_printMessage "${MESSAGE}:\040" --as-notrailingnew-line + ;; + + --as-notrailingnew-line ) + echo -e -n "${MESSAGE}" | sed -r \ + -e "s!${TCAR_BASEDIR}/!!g" 1>&2 + ;; + + --as-stderr-line ) + echo "${MESSAGE}" | sed -r \ + -e "s!${TCAR_BASEDIR}/!!g" 1>&2 + ;; + + esac + + # Verify quiet option. The quiet option controls whether messages + # are printed or not. + if [[ "${TCAR_FLAG_QUIET}" == 'true' ]];then + return + fi + + # Print messages that will be printed only when the TCAR_FLAG_QUIET + # variable is provided to centos-art.sh script. + case "${FORMAT}" in + + --as-separator-line ) + + # Build the separator line. + MESSAGE=$(\ + until [[ ${MESSAGE_WIDTH} -eq 0 ]];do + echo -n "$(echo ${MESSAGE} | sed -r 's!(.).*!\1!')" + MESSAGE_WIDTH=$((${MESSAGE_WIDTH} - 1)) + done) + + # Draw the separator line. + echo "${MESSAGE}" 1>&2 + ;; + + --as-banner-line ) + tcar_printMessage '-' --as-separator-line + tcar_printMessage "${MESSAGE}" --as-stdout-line + tcar_printMessage '-' --as-separator-line + ;; + + --as-processing-line ) + tcar_printMessage "`gettext "Processing"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-cropping-line ) + tcar_printMessage "`gettext "Cropping from"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-tuningup-line ) + tcar_printMessage "`gettext "Tuning-up"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-checking-line ) + tcar_printMessage "`gettext "Checking"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-combining-line ) + tcar_printMessage "`gettext "Combining"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-editing-line ) + tcar_printMessage "`gettext "Editing"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-creating-line | --as-updating-line ) + if [[ -a "${MESSAGE}" ]];then + tcar_printMessage "`gettext "Updating"`: ${MESSAGE}" --as-stdout-line + else + tcar_printMessage "`gettext "Creating"`: ${MESSAGE}" --as-stdout-line + fi + ;; + + --as-deleting-line ) + tcar_printMessage "`gettext "Deleting"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-reading-line ) + tcar_printMessage "`gettext "Reading"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-savedas-line ) + tcar_printMessage "`gettext "Saved as"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-linkto-line ) + tcar_printMessage "`gettext "Linked to"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-movedto-line ) + tcar_printMessage "`gettext "Moved to"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-translation-line ) + tcar_printMessage "`gettext "Translation"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-translating-line ) + tcar_printMessage "`gettext "Translating"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-validating-line ) + tcar_printMessage "`gettext "Validating"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-template-line ) + tcar_printMessage "`gettext "Template"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-configuration-line ) + tcar_printMessage "`gettext "Configuration"`: ${MESSAGE}" --as-stdout-line + ;; + + --as-palette-line ) + tcar_printMessage "`gettext "Palette"`: ${MESSAGE}" --as-stdout-line + ;; + + esac + +} diff --git a/tcar-scripts/tcar_printUrl.sh b/tcar-scripts/tcar_printUrl.sh new file mode 100755 index 0000000..ec9c7a2 --- /dev/null +++ b/tcar-scripts/tcar_printUrl.sh @@ -0,0 +1,150 @@ +#!/bin/bash +###################################################################### +# +# tcar_printUrl.sh -- This function standardizes the way URLs are +# printed by centos-art.sh script. This function describes the +# domain organization of The CentOS Project through its URLs and +# provides a way to print them out when needed. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printUrl { + + local URL='' + + # Define short options. + local ARGSS='' + + # Define long options. + local ARGSL='domain,home,lists,wiki,forums,bugs,planet,docs,mirrors,projects,svn,trac,irc,cc-sharealike,with-locale,as-html-link' + + # Initialize arguments with an empty value and set it as local + # variable to this function scope. Doing this is very important to + # avoid any clash with higher execution environments. + local TCAR_MODULE_ARGUMENT='' + + # Process all arguments currently available in this function + # environment. If either ARGSS or ARGSL local variables have been + # defined, argument processing goes through getopt for validation. + tcar_setModuleArguments "${@}" + + # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. + eval set -- "${TCAR_MODULE_ARGUMENT}" + + # Look for options passed through command-line. + while true; do + case "${1}" in + + --domain ) + URL="centos.org" + shift 1 + ;; + + --home ) + URL="http://www.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --lists ) + URL="http://lists.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --wiki ) + URL="http://wiki.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --forums ) + URL="http://forums.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --bugs ) + URL="http://bugs.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --projects ) + URL="https://projects.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --svn ) + URL="$(tcar_printUrl --projects)svn/" + shift 1 + ;; + + --trac ) + URL="$(tcar_printUrl --projects)trac/" + shift 1 + ;; + + --planet ) + URL="http://planet.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --docs ) + URL="http://docs.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --mirrors ) + URL="http://mirrors.$(tcar_printUrl --domain)/" + shift 1 + ;; + + --irc ) + URL="http://$(tcar_printUrl --home)modules/tinycontent/index.php?id=8" + shift 1 + ;; + + --cc-sharealike ) + URL="http://creativecommons.org/licenses/by-sa/3.0/" + shift 1 + ;; + + --with-locale ) + if [[ ! ${LANG} =~ '^en' ]];then + URL="${URL}${TCAR_SCRIPT_LANG_LL}/" + fi + shift 1 + ;; + + --as-html-link ) + URL="${URL}" + shift 1 + ;; + + -- ) + + shift 1 + break + ;; + esac + done + + # Print Url. + echo "${URL}" + +} diff --git a/tcar-scripts/tcar_printVersion.sh b/tcar-scripts/tcar_printVersion.sh new file mode 100755 index 0000000..d9c1cda --- /dev/null +++ b/tcar-scripts/tcar_printVersion.sh @@ -0,0 +1,49 @@ +#!/bin/bash +###################################################################### +# +# tcar_printVersion.sh -- This function standardizes the way +# centos-art.sh script prints version about itself. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_printVersion { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + local PROGRAM_NAME=${1:-${TCAR_SCRIPT_NAME}} + local YEAR=$(tcar_printCopyrightInfo --year) + local HOLDER=$(tcar_printCopyrightInfo --holder) + + if [[ ${PROGRAM_NAME} == ${TCAR_SCRIPT_NAME} ]];then + tcar_printMessage "${TCAR_SCRIPT_NAME} ${TCAR_SCRIPT_VERSION}" --as-stdout-line + else + tcar_printMessage "${PROGRAM_NAME} (${TCAR_SCRIPT_NAME}) ${TCAR_SCRIPT_VERSION}" --as-stdout-line + fi + tcar_printMessage "Copyright (C) ${YEAR} ${HOLDER}" --as-stdout-line + tcar_printMessage "`eval_gettext "\\\$PROGRAM_NAME comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of \\\$PROGRAM_NAME under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING."`" --as-stdout-line | fold --width=66 --spaces + + exit 0 + +} diff --git a/tcar-scripts/tcar_setModuleArguments.sh b/tcar-scripts/tcar_setModuleArguments.sh new file mode 100755 index 0000000..8926cd4 --- /dev/null +++ b/tcar-scripts/tcar_setModuleArguments.sh @@ -0,0 +1,100 @@ +#!/bin/bash +###################################################################### +# +# tcar_setModuleArguments.sh -- This function uses getopt to process +# arguments passed to centos-art.sh script. +# +# This function works with the following three variables: +# +# ARGSS +# Stores getopt short arguments definition. +# +# ARGSL +# Stores getopt long arguments definition. +# +# TCAR_MODULE_ARGUMENT +# Stores arguments passed to functions or command-line +# interface depending the context it is defined. +# +# These three variables are not defined in this function but the +# function environment you want to provide option parsing for, +# through getopt command. Using local definition for these three +# variables let you to nest option parsing inside different +# function-environment levels. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_setModuleArguments { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + local ARGUMENT='' + + # Fill up arguments global variable with current positional + # parameter information. To avoid interpretation problems, use + # single quotes to enclose each argument (TCAR_MODULE_ARGUMENT) from + # command-line individually. + for ARGUMENT in "${@}"; do + + # Remove any single quote from arguments passed to + # centos-art.sh script. We will use single quotes for grouping + # option values so white space can be passed through them. + ARGUMENT=$(printf %s "${ARGUMENT}" | tr -d "'") + + # Concatenate arguments and enclose them to let getopt to + # process them when they have spaces inside. + TCAR_MODULE_ARGUMENT="${TCAR_MODULE_ARGUMENT} '${ARGUMENT}'" + + done + + # Verify non-option arguments passed to command-line. If there + # isn't any or dot is provided, redefine the TCAR_MODULE_ARGUMENT + # variable to use the current location the centos-art.sh script + # was called from. + if [[ -z "${TCAR_MODULE_ARGUMENT}" ]];then + TCAR_MODULE_ARGUMENT=${PWD} + fi + + # Verify presence of either short or long options in the + # environment. If they are present apply option validation through + # getopt. + if [[ ! -z ${ARGSS} ]] || [[ ! -z ${ARGSL} ]];then + + # Redefine positional parameters using TCAR_MODULE_ARGUMENT variable. + eval set -- "${TCAR_MODULE_ARGUMENT}" + + # Process positional parameters using getopt's option validation. + TCAR_MODULE_ARGUMENT=$(getopt -o "${ARGSS}" -l "${ARGSL}" \ + -n "${TCAR_SCRIPT_COMMAND} (${TCAR_MODULE_NAME})" -- "${@}") + + # Verify getopt's exit status and finish the script execution + # with an error message, if it failed. + if [[ $? -ne 0 ]];then + tcar_printMessage "`gettext "The argument verification failed."`" --as-error-line + fi + + fi + +} diff --git a/tcar-scripts/tcar_setModuleEnvironment.sh b/tcar-scripts/tcar_setModuleEnvironment.sh new file mode 100755 index 0000000..eedc142 --- /dev/null +++ b/tcar-scripts/tcar_setModuleEnvironment.sh @@ -0,0 +1,192 @@ +#!/bin/bash +###################################################################### +# +# tcar_setModuleEnvironment.sh -- This function initiates module +# environments inside the centos-art.sh script. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_setModuleEnvironment { + + local ARG_MODULE_NAME='' + local ARG_MODULE_TYPE='' + local ARG_MODULE_ARGS='' + + # Retrieve module's name and module's type from arguments passed + # through this function positional parameters. + OPTIND=1 + while getopts "m:,t:,g:" OPTION "${@}"; do + case "${OPTION}" in + m ) ARG_MODULE_NAME="${OPTARG}" ;; + t ) ARG_MODULE_TYPE="${OPTARG}" ;; + g ) ARG_MODULE_ARGS="${OPTARG} ${ARG_MODULE_ARGS}" ;; + esac + done + + # Clean up positional parameters to reflect the fact that options + # have been processed already. + shift $(( ${OPTIND} - 1 )) + + # Initialize module's global counter. + TCAR_MODULE_COUNT=${TCAR_MODULE_COUNT:-0} + + # When the last module in the chain of executed modules is the + # same module being currently executed, don't create a new + # position for it in the chain of modules. Instead, use the + # information it already has from its previous execution. In order + # for this to work, the current module must be executed as sibling + # module of other module or itself. + if [[ ${TCAR_MODULE_COUNT} -gt 0 ]];then + if [[ ${TCAR_MODULE_NAMES[((${TCAR_MODULE_COUNT} - 1))]} == ${ARG_MODULE_NAME} ]];then + if [[ ${ARG_MODULE_TYPE} == 'sibling' ]];then + tcar_printMessage '~~~~~~~~~~~~~~~~~~~~~~~~~> : '"${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT}" --as-debugger-line + ${ARG_MODULE_NAME} ${ARG_MODULE_ARGS} ${@} + return + fi + fi + fi + + tcar_printMessage '=========================>: ['${TCAR_MODULE_COUNT}'] | '${FUNCNAME[1]} --as-debugger-line + + # Define module's base directory. This is the directory where the + # initialization script is stored in. + local TCAR_MODULE_BASEDIR=${TCAR_SCRIPT_MODULES_BASEDIR} + if [[ ${#TCAR_MODULE_BASEDIRS[*]} -gt 0 ]];then + if [[ ${ARG_MODULE_TYPE} == "parent" ]];then + TCAR_MODULE_BASEDIR=${TCAR_SCRIPT_MODULES_BASEDIR} + elif [[ ${ARG_MODULE_TYPE} == "sibling" ]];then + if [[ ${TCAR_MODULE_TYPES[((${TCAR_MODULE_COUNT} - 1 ))]} == 'sibling' ]];then + TCAR_MODULE_BASEDIR=${TCAR_MODULE_BASEDIRS[((${TCAR_MODULE_COUNT}-2))]} + else + TCAR_MODULE_BASEDIR=${TCAR_MODULE_BASEDIRS[((${TCAR_MODULE_COUNT}-1))]} + fi + else + TCAR_MODULE_BASEDIR=${TCAR_MODULE_BASEDIRS[${TCAR_MODULE_COUNT}]} + fi + fi + tcar_printMessage "TCAR_MODULE_BASEDIR : ${TCAR_MODULE_BASEDIR}" --as-debugger-line + + # Define module's name. + TCAR_MODULE_NAMES[${TCAR_MODULE_COUNT}]=$(tcar_getRepoName "${ARG_MODULE_NAME:-unknown}" "-f" | cut -d '-' -f1) + local TCAR_MODULE_NAME=${TCAR_MODULE_NAMES[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_NAME : [${TCAR_MODULE_COUNT}]=${TCAR_MODULE_NAME}" --as-debugger-line + + # Define module's type. + TCAR_MODULE_TYPES[${TCAR_MODULE_COUNT}]="${ARG_MODULE_TYPE:-parent}" + local TCAR_MODULE_TYPE=${TCAR_MODULE_TYPES[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_TYPE : ${TCAR_MODULE_TYPE}" --as-debugger-line + + # Define module's arguments. This variable is used in different + # module environments to pass positional parameters from one + # environment to another using local definitions. + TCAR_MODULE_ARGUMENTS[${TCAR_MODULE_COUNT}]="${ARG_MODULE_ARGS:-} ${@}" + local TCAR_MODULE_ARGUMENT=${TCAR_MODULE_ARGUMENTS[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_ARGUMENT : ${TCAR_MODULE_ARGUMENT}" --as-debugger-line + + # Check module's name possible values. + tcar_checkModuleName + + # Define module's directory. + TCAR_MODULE_DIRS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_BASEDIR}/$(tcar_getRepoName "${TCAR_MODULE_NAME}" "-d") + local TCAR_MODULE_DIR=${TCAR_MODULE_DIRS[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_DIR : ${TCAR_MODULE_DIR}" --as-debugger-line + + # Define module's directories not reused from module's parent + # directory structure. + TCAR_MODULE_DIRS_MODULES[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR}/Modules + local TCAR_MODULE_DIR_MODULES=${TCAR_MODULE_DIRS_MODULES[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_DIR_MODULES : ${TCAR_MODULE_DIR_MODULES}" --as-debugger-line + + TCAR_MODULE_DIRS_CONFIGS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR}/Configs + local TCAR_MODULE_DIR_CONFIGS=${TCAR_MODULE_DIRS_CONFIGS[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_DIR_CONFIGS : ${TCAR_MODULE_DIR_CONFIGS}" --as-debugger-line + + # Define module's directories reused from module's parent + # directory structure. + TCAR_MODULE_DIRS_MANUALS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIRS[0]}/Manuals + local TCAR_MODULE_DIR_MANUALS=${TCAR_MODULE_DIRS_MANUALS[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_DIR_MANUALS : ${TCAR_MODULE_DIR_MANUALS}" --as-debugger-line + + TCAR_MODULE_DIRS_LOCALES[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIRS[0]}/Locales + local TCAR_MODULE_DIR_LOCALES=${TCAR_MODULE_DIRS_LOCALES[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_DIR_LOCALES : ${TCAR_MODULE_DIR_LOCALES}" --as-debugger-line + + # Define module's initialization file. + TCAR_MODULE_INIT_FILES[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR}/${TCAR_MODULE_NAME}.sh + local TCAR_MODULE_INIT_FILE=${TCAR_MODULE_INIT_FILES[${TCAR_MODULE_COUNT}]} + tcar_printMessage "TCAR_MODULE_INIT_FILE : ${TCAR_MODULE_INIT_FILE}" --as-debugger-line + + # Define module's connection with their localization files. It is + # required that gettext-specific variables be defined locally, in + # order to implement per-module localization. + local TEXTDOMAIN=$(basename ${TCAR_MODULE_INIT_FILE}) + tcar_printMessage "TEXTDOMAIN: ${TEXTDOMAIN}" --as-debugger-line + local TEXTDOMAINDIR=${TCAR_MODULE_DIR_LOCALES} + tcar_printMessage "TEXTDOMAINDIR: ${TEXTDOMAINDIR}" --as-debugger-line + + # Increment module's counter just before creating next module's + # base directory. + TCAR_MODULE_COUNT=$(( ${TCAR_MODULE_COUNT} + 1 )) + + # Define next module's base directory. + TCAR_MODULE_BASEDIRS[${TCAR_MODULE_COUNT}]=${TCAR_MODULE_DIR_MODULES} + + # Check function script execution rights. + tcar_checkFiles -ex ${TCAR_MODULE_INIT_FILE} + + # Load module-specific (function) scripts into current execution + # environment. Keep the tcar_setModuleEnvironmentScripts function + # call after all variables and arguments definitions. + tcar_setModuleEnvironmentScripts + + # Execute module's initialization script with its arguments. + tcar_printMessage '-------------------------> : '"${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT}" --as-debugger-line + ${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT} + + # Unset module-specific environment. + tcar_printMessage '<------------------------- : '"${TCAR_MODULE_NAME} ${TCAR_MODULE_ARGUMENT}" --as-debugger-line + tcar_unsetModuleEnvironment + + # Decrement module counter just after unset unused module + # environments. + TCAR_MODULE_COUNT=$(( ${TCAR_MODULE_COUNT} - 1 )) + + # Unset array and non-array variables used in this function. + if [[ ${TCAR_MODULE_COUNT} -eq 0 ]];then + unset TCAR_MODULE_NAMES + unset TCAR_MODULE_BASEDIRS + unset TCAR_MODULE_DIRS + unset TCAR_MODULE_DIRS_MODULES + unset TCAR_MODULE_DIRS_MANUALS + unset TCAR_MODULE_DIRS_LOCALES + unset TCAR_MODULE_DIRS_CONFIGS + unset TCAR_MODULE_NAME + unset TCAR_MODULE_DIR + unset TCAR_MODULE_DIR_MODULES + unset TCAR_MODULE_DIR_MANUALS + unset TCAR_MODULE_DIR_LOCALES + unset TCAR_MODULE_DIR_CONFIGS + fi + + tcar_printMessage '<=========================: ['${TCAR_MODULE_COUNT}'] | '${FUNCNAME[1]} --as-debugger-line + +} diff --git a/tcar-scripts/tcar_setModuleEnvironmentScripts.sh b/tcar-scripts/tcar_setModuleEnvironmentScripts.sh new file mode 100755 index 0000000..270d246 --- /dev/null +++ b/tcar-scripts/tcar_setModuleEnvironmentScripts.sh @@ -0,0 +1,91 @@ +#!/bin/bash +###################################################################### +# +# tcar_setModuleEnvironmentScripts.sh -- This function standardizes +# the way specific functionalities are exported to centos-art.sh +# script environment. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_setModuleEnvironmentScripts { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + # Define the pattern used to retrieve function names from function + # files. + local FUNCTION_PATTERN="^function[[:space:]]+${TCAR_MODULE_NAME}(_[[:alnum:]]+)?[[:space:]]+{[[:space:]]*$" + + # Define the list of files. + local TCAR_MODULE_SCRIPT='' + local TCAR_MODULE_SCRIPTS="${TCAR_MODULE_INIT_FILE}" + if [[ -d ${TCAR_MODULE_DIR} ]];then + TCAR_MODULE_SCRIPTS="${TCAR_MODULE_SCRIPTS} + $(tcar_getFilesList ${TCAR_MODULE_DIR} \ + --pattern="${TCAR_MODULE_DIR}/${TCAR_MODULE_NAME}_[[:alnum:]]+\.sh$" --type='f')" + fi + + # Verify the list of files. If no function file exists for the + # location specified stop the script execution. Otherwise the + # script will surely try to execute a function that haven't been + # exported yet and report an error about it. + if [[ -z ${TCAR_MODULE_SCRIPTS} ]];then + tcar_printMessage "${FUNCNAME}: `gettext "No function file was found."`" --as-error-line + fi + + # Process the list of files. + for TCAR_MODULE_SCRIPT in ${TCAR_MODULE_SCRIPTS};do + + # Verify the execution rights for function file. + tcar_checkFiles -ex ${TCAR_MODULE_SCRIPT} + + # Retrieve the function's name from function's file. + local TCAR_MODULE_SCRIPT_FN=$(egrep "${FUNCTION_PATTERN}" ${TCAR_MODULE_SCRIPT} \ + | gawk '{ print $2 }') + + # Verify function's name. It cannot be an empty value. + if [[ -z "${TCAR_MODULE_SCRIPT_FN}" ]];then + tcar_printMessage "`gettext "No function definition found."`" --as-error-line + fi + + # Verify that function files have not been already exported. + # If they have been already exported don't export them again. + # Instead, continue with the next function file in the list. + declare -F | gawk '{ print $3 }' | egrep "^${TCAR_MODULE_SCRIPT}$" > /dev/null + if [[ $? -eq 0 ]];then + continue + fi + + # Initialize the function file. + . ${TCAR_MODULE_SCRIPT} + + # Export the function names inside the file to current shell + # script environment. + export -f ${TCAR_MODULE_SCRIPT_FN} + + tcar_printMessage "export -f : ${TCAR_MODULE_SCRIPT_FN}" --as-debugger-line + + done + +} diff --git a/tcar-scripts/tcar_setTranslationMarkers.sh b/tcar-scripts/tcar_setTranslationMarkers.sh new file mode 100755 index 0000000..1ec018e --- /dev/null +++ b/tcar-scripts/tcar_setTranslationMarkers.sh @@ -0,0 +1,185 @@ +#!/bin/bash +###################################################################### +# +# tcar_setTranslationMarkers.sh -- This function standardizes construction +# of translation markers and their related expansion. As convention, +# translation markers must be set inside source files (e.g., +# Docbook, Svg, etc.) and expanded inside temporal instances used to +# produce final contents. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_setTranslationMarkers { + + # Initialize variables. + local -a SRC + local -a DST + local COUNT=0 + local COUNTSRC=0 + local COUNTDST=0 + + # Define source location on which sed replacements take place. + local LOCATION="${1}" + + # Verify that source location does exist. + tcar_checkFiles -ef ${LOCATION} + + # Define copyright translation markers. + SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR_FIRST=' + DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --first-year)" + SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(_LAST)?=' + DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --year)" + SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(S)?_LIST=' + DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --years-list)" + SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER=' + DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --holder)" + SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER_PREDICATE=' + DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --holder-predicate)" + + # Define license translation markers. + SRC[((++${#SRC[*]}))]='=LICENSE=' + DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --license)" + SRC[((++${#SRC[*]}))]='=LICENSE_URL=' + DST[((++${#DST[*]}))]="$(tcar_printCopyrightInfo --license-url)" + + # Define theme translation markers. + SRC[((++${#SRC[*]}))]='=THEME=' + DST[((++${#DST[*]}))]="$(tcar_getPathComponent ${RENDER_TARGET} --motif)" + SRC[((++${#SRC[*]}))]='=THEMENAME=' + DST[((++${#DST[*]}))]="$(tcar_getPathComponent ${RENDER_TARGET} --motif-name)" + SRC[((++${#SRC[*]}))]='=THEMERELEASE=' + DST[((++${#DST[*]}))]="$(tcar_getPathComponent ${RENDER_TARGET} --motif-version)" + + # Define url translation markers. + SRC[((++${#SRC[*]}))]='=URL=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--home' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_WIKI=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--wiki' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_LISTS=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--lists' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_FORUMS=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--forums' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_MIRRORS=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--mirrors' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_DOCS=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--docs' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_PROJECTS=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--projects' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_BUGS=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--bugs' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_SVN=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--svn' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_TRAC=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--trac' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_PLANET=' + DST[((++${#DST[*]}))]=$(tcar_printUrl '--planet' '--with-locale') + + # Define release translation markers. + SRC[((++${#SRC[*]}))]='=RELEASE=' + DST[((++${#DST[*]}))]=${RELEASE} + SRC[((++${#SRC[*]}))]='=MAJOR_RELEASE=' + DST[((++${#DST[*]}))]=${MAJOR_RELEASE} + + # Define emails translation markers. + SRC[((++${#SRC[*]}))]='=MAIL_DOCS=' + DST[((++${#DST[*]}))]="$(tcar_printMailingList --docs)" + + # Define locale translation markers. + SRC[((++${#SRC[*]}))]='=LOCALE=' + DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_LC}" + SRC[((++${#SRC[*]}))]='=LOCALE_LL=' + DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_LL}" + SRC[((++${#SRC[*]}))]='=LOCALE_CC=' + DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_CC}" + + # Define domain translation markers for domains. + SRC[((++${#SRC[*]}))]='=DOMAIN_LL=' + if [[ ! ${TCAR_SCRIPT_LANG_LL} =~ '^en' ]];then + DST[((++${#DST[*]}))]="${TCAR_SCRIPT_LANG_LL}" + else + DST[((++${#DST[*]}))]="" + fi + + # Define repository translation markers. + SRC[((++${#SRC[*]}))]='=(REPO_TLDIR|REPO_HOME|TCAR_BASEDIR|TCAR_WORKDIR)=' + DST[((++${#DST[*]}))]="${TCAR_BASEDIR}" + + # Do replacement of nested translation markers. + while [[ ${COUNTDST} -lt ${#DST[@]} ]];do + + # Verify existence of translation markers. If there is no + # translation marker on replacement, continue with the next + # one in the list. + if [[ ! ${DST[${COUNTDST}]} =~ '=[A-Z_]+=' ]];then + # Increment destination counter. + COUNTDST=$((${COUNTDST} + 1)) + # The current replacement value doesn't have translation + # marker inside, so skip it and evaluate the next + # replacement value in the list. + continue + fi + + while [[ ${COUNTSRC} -lt ${#SRC[*]} ]];do + + # Update replacements. + DST[${COUNTDST}]=$(echo ${DST[${COUNTDST}]} \ + | sed -r "s!${SRC[${COUNTSRC}]}!${DST[${COUNTSRC}]}!g") + + # Increment source counter. + COUNTSRC=$((${COUNTSRC} + 1)) + + done + + # Reset source counter + COUNTSRC=0 + + # Increment destination counter. + COUNTDST=$((${COUNTDST} + 1)) + + done + + # Apply replacements for translation markers. + while [[ ${COUNT} -lt ${#SRC[*]} ]];do + + # Use sed to replace translation markers inside the design + # model instance. + sed -r -i "s!${SRC[${COUNT}]}!${DST[${COUNT}]}!g" ${LOCATION} + + # Increment counter. + COUNT=$((${COUNT} + 1)) + + done + + # Remove escaped character from translation markers. This is one + # of the reasons why translation marker should be expanded in + # source files instances not the source files themselves. + # Escaping translation markers provides a way of talking about + # them without expanding them. + sed -r -i 's/(=)\\([A-Z_]+=)/\1\2/g' ${LOCATION} + + # Unset specific translation markers and specific replacement + # variables in order to clean them up. Otherwise, undesired values + # may remain from one file to another. + unset SRC + unset DST + +} diff --git a/tcar-scripts/tcar_terminateScriptExecution.sh b/tcar-scripts/tcar_terminateScriptExecution.sh new file mode 100755 index 0000000..0f95ace --- /dev/null +++ b/tcar-scripts/tcar_terminateScriptExecution.sh @@ -0,0 +1,40 @@ +#!/bin/bash +###################################################################### +# +# tcar_terminateScriptExecution.sh -- This function standardizes the +# actions that must be realized just before leaving the script +# execution (e.g., cleaning temporal files). This function is the +# one called when interruption signals like EXIT, SIGHUP, SIGINT and +# SIGTERM are detected. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_terminateScriptExecution { + + # Remove temporal directory. + rm -r ${TCAR_SCRIPT_TEMPDIR} + + # NOTE: Don't specify an exit status here. As convenction we do + # this when error messages are triggerd. See `--as-error-line' + # option from `tcar_printMessage' functionality. + +} diff --git a/tcar-scripts/tcar_unsetModuleEnvironment.sh b/tcar-scripts/tcar_unsetModuleEnvironment.sh new file mode 100755 index 0000000..69d3ae3 --- /dev/null +++ b/tcar-scripts/tcar_unsetModuleEnvironment.sh @@ -0,0 +1,53 @@ +#!/bin/bash +###################################################################### +# +# tcar_unsetModuleEnvironment.sh -- This function unsets +# functionalities from centos-art.sh script execution environment. +# +# Written by: +# * Alain Reguera Delgado , 2009-2013 +# +# Copyright (C) 2009-2013 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +###################################################################### + +function tcar_unsetModuleEnvironment { + + # Define gettext-specific variables locally, to provide + # per-function localization. + local TEXTDOMAIN="${FUNCNAME}.sh" + local TEXTDOMAINDIR="${TCAR_SCRIPT_BASEDIR}/Scripts/Locales" + + # Verify suffix value used to retrieve function files. + if [[ -z ${TCAR_MODULE_NAME} ]];then + tcar_printMessage "`gettext "The export id was not provided."`" --as-error-line + fi + + # Define list of format-specific functionalities. This is the list + # of function definitions previously exported by + # `tcar_setModuleEnvironmentScripts'. Be sure to limit the list + # to function names that start with the suffix specified only. + local TCAR_MODULE_SCRIPT_FN='' + local TCAR_MODULE_SCRIPT_FNS=$(declare -F | gawk '{ print $3 }' | egrep "^${TCAR_MODULE_NAME}") + + # Unset function names from current execution environment. + for TCAR_MODULE_SCRIPT_FN in ${TCAR_MODULE_SCRIPT_FNS};do + unset -f ${TCAR_MODULE_SCRIPT_FN} + tcar_printMessage "unset -f : ${TCAR_MODULE_SCRIPT_FN}" --as-debugger-line + done + +}