diff --git a/Automation/centos-art.sh-mods/Cli/cli.sh b/Automation/centos-art.sh-mods/Cli/cli.sh new file mode 100755 index 0000000..9d9a17d --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli.sh @@ -0,0 +1,136 @@ +#!/bin/bash +# +# cli.sh -- This function initiates the centos-art.sh script +# command-line interface. Variables defined in this function are +# accesible by all other functions. The cli function is the first +# script executed by centos-art.sh, onces executed in a terminal. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli { + + # Initialize global variables. + local CLI_FUNCNAME='' + local CLI_FUNCDIRNAM='' + local CLI_FUNCSCRIPT='' + local ARGUMENTS='' + + # Initialize default value to filter flag. The filter flag + # (--filter) is used mainly to reduce the number of files to + # process. The value of this variable is interpreted as + # egrep-posix regular expression. By default, when the --filter + # option is not provided, all paths in the working copy must match + # except files under hidden directories like `.svn'. We do this in + # conjunction with `cli_getFilesList', when building the list of + # files that will be processed. + local FLAG_FILTER='[[:alnum:]_/-]+' + + # Initialize default value to verbosity flag. The verbosity flag + # (-v | --verbose) controls whether centos-art.sh script prints + # messages or not. By default, all messages are suppressed except + # those directed to standard error. + local FLAG_QUIET='false' + + # Initialize default value to answer flag. The answer flag + # (--answer-yes) controls whether centos-art.sh script does or + # does not pass confirmation request points. By default, it + # doesn't. + local FLAG_ANSWER='false' + + # Initialize default value to commit changes flag. This flag + # (--synchronize) controls whether version control system is + # triggered or not after realizing changes to source files under + # version control. + local FLAG_SYNCHRONIZE='false' + + # Initialize list of common functionalities to load. + local FILES=$(ls ${CLI_FUNCDIR}/Commons/*.sh) + + # Initialize common functionalities. + for FILE in ${FILES};do + if [[ -x ${FILE} ]];then + . ${FILE} + export -f $(grep '^function ' ${FILE} | cut -d' ' -f2) + else + echo "`eval_gettext "The \\\$FILE needs to have execution rights."`" + exit + fi + done + + # 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 centos-art.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 cli_terminateScriptExecution 0 + + # Redefine ARGUMENTS variable using current positional parameters. + cli_parseArgumentsReDef "$@" + + # Check function name. The function name is critical for + # centos-art.sh script to do something coherent. If it is not + # provided, execute the help functionality and end script + # execution. + if [[ ! "$1" ]] || [[ ! "$1" =~ '^[[:alpha:]]' ]];then + cli_runFnEnvironment help --read --format="texinfo" tcar-fs::: + exit + fi + + # Define function name (CLI_FUNCNAME) using the first argument in + # the command-line. + CLI_FUNCNAME=$(cli_getRepoName $1 -f | cut -d '-' -f1) + + # Define function directory. + CLI_FUNCDIRNAM=$(cli_getRepoName $CLI_FUNCNAME -d) + + # Define function file name. + CLI_FUNCSCRIPT=${CLI_FUNCDIR}/${CLI_FUNCDIRNAM}/${CLI_FUNCNAME}.sh + + # Check function script execution rights. + cli_checkFiles -x "${CLI_FUNCSCRIPT}" + + # Remove the first argument passed to centos-art.sh command-line + # in order to build optional arguments inside functionalities. We + # start counting from second argument (inclusive) on. + shift 1 + + # Redefine ARGUMENTS using current positional parameters. + cli_parseArgumentsReDef "$@" + + # Define default text editors used by centos-art.sh script. + if [[ ! "$EDITOR" =~ '/usr/bin/(vim|emacs|nano)' ]];then + EDITOR='/usr/bin/vim' + fi + + # Check text editor execution rights. + cli_checkFiles -x ${EDITOR} + + # Go for function initialization. Keep the cli_exportFunctions + # function calling after all variables and arguments definitions. + cli_exportFunctions "${CLI_FUNCDIRNAM}/${CLI_FUNCNAME}" + + # Execute function. + $CLI_FUNCNAME + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_checkFiles.sh b/Automation/centos-art.sh-mods/Cli/cli_checkFiles.sh new file mode 100755 index 0000000..3c65ed4 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_checkFiles.sh @@ -0,0 +1,187 @@ +#!/bin/bash +# +# cli_checkFiles.sh -- This function standardizes the way file +# conditional expressions are applied inside centos-art.sh script. +# Here is where we answer 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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_checkFiles { + + # Define short options. + local ARGSS='i:,r,m:,n,d,e,f,h,x' + + # Define long options. + local ARGSL='mime:,is-versioned,match:,is-installed' + + # Initialize array variables. + local -a CONDITION_COMMAND + local -a CONDITION_PATTERN + local -a CONDITION_MESSAGE + + # Initialize array variable counter. + local COUNTER=0 + + # 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 ARGUMENTS='' + + # Prepare ARGUMENTS for getopt. + cli_parseArgumentsReDef "$@" + + # Redefine ARGUMENTS using getopt(1) command parser. + cli_parseArguments + + # Redefine positional parameters using ARGUMENTS variable. + eval set -- "$ARGUMENTS" + + # Look for options passed through positional parameters. + while true; do + + case "$1" in + + -d ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-d' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a directory."`" + shift 1 + ;; + + -e ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-e' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "doesn't exist."`" + shift 1 + ;; + + -f ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-f' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a regular file."`" + shift 1 + ;; + + -h ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-h' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a symbolic link."`" + shift 1 + ;; + + -x ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-x' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't an executable file."`" + shift 1 + ;; + + -i | --mime ) + local MIME=$2 + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='file' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-bi' + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`eval_gettext "isn't a \\\"\\\$MIME\\\" file."`" + shift 2 + ;; + + -m | --match ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='match' + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="$2" + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`eval_gettext "doesn't match its pattern."`" + shift 2 + ;; + + -r | --is-versioned ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]="centos-art" + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="vcs --is-versioned" + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="" + shift 1 + ;; + + -n | --is-installed ) + CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]="rpm" + CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="-q --quiet" + CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't installed in the system."`" + shift 1 + ;; + + -- ) + shift 1 + break + ;; + + esac + done + + # 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=$@ + + for FILE in $FILES;do + + until [[ ${COUNTER} -eq ${#CONDITION_PATTERN[*]} ]];do + + case ${CONDITION_COMMAND[$COUNTER]} in + + "test" | "rpm" ) + ${CONDITION_COMMAND[$COUNTER]} ${CONDITION_PATTERN[$COUNTER]} ${FILE} \ + || cli_printMessage "${FILE} ${CONDITION_MESSAGE[$COUNTER]}" --as-error-line + ;; + + "centos-art" ) + # Don't create another level for error messages here + # (that would duplicate them unnecessarily). Instead, + # set error messages inside specific functionalities + # and use them directly from there. + cli_runFnEnvironment ${CONDITION_PATTERN[$COUNTER]} ${FILE} + ;; + + "file" ) + if [[ ! $(${CONDITION_COMMAND[$COUNTER]} ${CONDITION_PATTERN[$COUNTER]} ${FILE}) == "$MIME" ]];then + cli_printMessage "${FILE} ${CONDITION_MESSAGE[$COUNTER]}" --as-error-line + fi + ;; + + "match" ) + if [[ ! ${FILE} =~ "${CONDITION_PATTERN[$COUNTER]}" ]];then + cli_printMessage "${FILE} ${CONDITION_MESSAGE[$COUNTER]}" --as-error-line + fi + ;; + + * ) + cli_printMessage "`gettext "The condition command provided isn't supported."`" --as-error-line + ;; + + esac + + COUNTER=$(($COUNTER + 1)) + + done + + done + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_checkRepoDirSource.sh b/Automation/centos-art.sh-mods/Cli/cli_checkRepoDirSource.sh new file mode 100755 index 0000000..c7a299a --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_checkRepoDirSource.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# +# cli_checkRepoDirSource.sh -- This function standardizes the path +# construction to 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. +# +# NOTE: 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 +# inside the workstation. +# +# Use this 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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_checkRepoDirSource { + + 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. + LOCATION=$(echo "$LOCATION" | sed -r "s,^\.$,$(pwd),g") + + # Remove the working directory absolute path from location to + # avoid path duplications here. + LOCATION=$(echo "$LOCATION" | sed "s,${TCAR_WORKDIR}/,,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 cli_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_WORKDIR}/${LOCATION} + + # Output the absolute path to location. + echo "${LOCATION}" + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_expandTMarkers.sh b/Automation/centos-art.sh-mods/Cli/cli_expandTMarkers.sh new file mode 100755 index 0000000..d8b6806 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_expandTMarkers.sh @@ -0,0 +1,194 @@ +#!/bin/bash +# +# cli_expandTMarkers.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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_expandTMarkers { + + # 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. + cli_checkFiles -e ${LOCATION} + + # Define copyright translation markers. + SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(_LAST)?=' + DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --year)" + SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(S)?_LIST=' + DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --years-list)" + SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER=' + DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --holder)" + SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER_PREDICATE=' + DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --holder-predicate)" + + # Define name of branding files. This files are mainly used under + # Identity/(Images|Models)/Brands/ directory structure. These + # file names may vary from one project to another so we use this + # variable to control the name of such files. + SRC[((++${#SRC[*]}))]='=BRAND=' + DST[((++${#DST[*]}))]="${TCAR_BRAND}" + + # Define license translation markers. + SRC[((++${#SRC[*]}))]='=LICENSE=' + DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --license)" + SRC[((++${#SRC[*]}))]='=LICENSE_URL=' + DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --license-url)" + + # Define theme translation markers. + SRC[((++${#SRC[*]}))]='=THEME=' + DST[((++${#DST[*]}))]="$(cli_getPathComponent $OUTPUT --motif)" + SRC[((++${#SRC[*]}))]='=THEMENAME=' + DST[((++${#DST[*]}))]="$(cli_getPathComponent $OUTPUT --motif-name)" + SRC[((++${#SRC[*]}))]='=THEMERELEASE=' + DST[((++${#DST[*]}))]="$(cli_getPathComponent $OUTPUT --motif-release)" + + # Define release-specific translation markers. + SRC[((++${#SRC[*]}))]='=RELEASE=' + DST[((++${#DST[*]}))]="$FLAG_RELEASEVER" + SRC[((++${#SRC[*]}))]='=MAJOR_RELEASE=' + DST[((++${#DST[*]}))]="$(echo $FLAG_RELEASEVER | cut -d'.' -f1)" + SRC[((++${#SRC[*]}))]='=MINOR_RELEASE=' + DST[((++${#DST[*]}))]="$(echo $FLAG_RELEASEVER | cut -d'.' -f2)" + + # Define architectures translation markers. + SRC[((++${#SRC[*]}))]='=ARCH=' + DST[((++${#DST[*]}))]="$(cli_getPathComponent $FLAG_BASEARCH --architecture)" + + # Define url translation markers. + SRC[((++${#SRC[*]}))]='=URL=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--home' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_WIKI=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--wiki' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_LISTS=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--lists' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_FORUMS=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--forums' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_MIRRORS=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--mirrors' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_DOCS=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--docs' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_PROJECTS=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--projects' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_BUGS=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--bugs' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_SVN=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--svn' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_TRAC=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--trac' '--with-locale') + SRC[((++${#SRC[*]}))]='=URL_PLANET=' + DST[((++${#DST[*]}))]=$(cli_printUrl '--planet' '--with-locale') + + # Define emails translation markers. + SRC[((++${#SRC[*]}))]='=MAIL_DOCS=' + DST[((++${#DST[*]}))]="$(cli_printMailingList --docs)" + + # Define locale translation markers. + SRC[((++${#SRC[*]}))]='=LOCALE=' + DST[((++${#DST[*]}))]="${CLI_LANG_LC}" + SRC[((++${#SRC[*]}))]='=LOCALE_LL=' + DST[((++${#DST[*]}))]="${CLI_LANG_LL}" + SRC[((++${#SRC[*]}))]='=LOCALE_CC=' + DST[((++${#DST[*]}))]="${CLI_LANG_CC}" + + # Define domain translation markers for domains. + SRC[((++${#SRC[*]}))]='=DOMAIN_LL=' + if [[ ! ${CLI_LANG_LL} =~ '^en' ]];then + DST[((++${#DST[*]}))]="${CLI_LANG_LL}" + else + DST[((++${#DST[*]}))]="" + fi + + # Define repository translation markers. + SRC[((++${#SRC[*]}))]='=(REPO_TLDIR|REPO_HOME|TCAR_WORKDIR)=' + DST[((++${#DST[*]}))]="${TCAR_WORKDIR}" + + # 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/Automation/centos-art.sh-mods/Cli/cli_exportFunctions.sh b/Automation/centos-art.sh-mods/Cli/cli_exportFunctions.sh new file mode 100755 index 0000000..1af3c72 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_exportFunctions.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# +# cli_exportFunctions.sh -- This function standardizes the way +# specific functionalities are exported to centos-art.sh script +# environment. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_exportFunctions { + + # Retrieve export identifier for the function we want to export. + local EXPORTID="$1" + + # Verify the export identification existence. This argument must + # be passed as first argument and match a relative path format. + if [[ ! $EXPORTID =~ '^[A-Z][[:alpha:]]+(/[[:alpha:]_]+)+$' ]];then + cli_printMessage "`gettext "The export id doesn't match its pattern."`" --as-error-line + fi + + # Define the source location where function files are placed in. + local LOCATION=${CLI_FUNCDIR}/$(dirname ${EXPORTID}) + + # Define suffix used to retrieve function files. + local SUFFIX=$(basename "$EXPORTID") + + # Verify the suffix value used to retrieve function files. + # Assuming no suffix value is passed as second argument to this + # function, use the function name value (CLI_FUNCNAME) as default + # value. + if [[ $SUFFIX == '' ]];then + SUFFIX="${CLI_FUNCNAME}" + fi + + # Redefine suffix to match all related function files inside the + # related function directory. + SUFFIX=${SUFFIX}'[[:alpha:]_]*' + + # Define the pattern used to retrieve function names from function + # files. + local PATTERN="^function[[:space:]]+${SUFFIX}[[:space:]]+{[[:space:]]*$" + + # Define the list of files. + local FUNCFILE='' + local FUNCFILES=$(cli_getFilesList ${LOCATION} --pattern="${LOCATION}/${SUFFIX}\.sh$" \ + --maxdepth='1' --mindepth='1' --type='f') + + # 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 [[ $FUNCFILES == '' ]];then + cli_printMessage "${FUNCNAME}: `gettext "No function file was found."`" --as-error-line + fi + + # Process the list of files. + for FUNCFILE in $FUNCFILES;do + + # Verify the execution rights for function file. + cli_checkFiles -x ${FUNCFILE} + + # 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 "^${FUNCFILE}$" > /dev/null + if [[ $? -eq 0 ]];then + continue + fi + + # 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 + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_getConfigLines.sh b/Automation/centos-art.sh-mods/Cli/cli_getConfigLines.sh new file mode 100755 index 0000000..2d9b636 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getConfigLines.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_getConfigLines { + + # Initialize absolute path to configuration file. + local CONFIG_ABSPATH="$1" + + # Verify that configuration file does exist. + cli_checkFiles -e ${CONFIG_ABSPATH} + + # Initialize configuration section name where the variable value + # we want to to retrieve is set in. + local CONFIG_SECTION="$2" + + # Be sure the configuration section name has the correct format. + if [[ ! $CONFIG_SECTION =~ '^[[:alnum:]._-]+$' ]];then + cli_printMessage "`gettext "The configuration section provided is incorrect."`" --as-error-line + fi + + # Initialize variable name we want to retrieve value from. + local CONFIG_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 [[ ! $CONFIG_OPTION =~ '^[[:alnum:]_./-]+$' ]];then + CONFIG_OPTION='[[:alnum:]_./-]+[[:space:]]*=' + fi + + # Retrieve configuration lines from configuration file. + local CONFIG_LINES=$(cat ${CONFIG_ABSPATH} \ + | egrep -v '^#' \ + | egrep -v '^[[:space:]]*$' \ + | sed -r -n "/^\[${CONFIG_SECTION}\][[:space:]]*$/,/^\[/p" \ + | egrep -v '^\[' | sort | uniq \ + | egrep "^${CONFIG_OPTION}") + + # Output value related to variable name. + echo "$CONFIG_LINES" + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_getConfigSectionNames.sh b/Automation/centos-art.sh-mods/Cli/cli_getConfigSectionNames.sh new file mode 100755 index 0000000..a280736 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getConfigSectionNames.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_getConfigSectionNames { + + # Define absolute path to configuration file we want to retrieve + # section names from. + local CONF_FILE=$1 + + # Verify existence of configuration file. + cli_checkFiles $CONF_FILE -f + + # Output all section names without brackets, one per line. + egrep '^\[[[:alnum:]._-]+\][[:space:]]*$' $CONF_FILE \ + | sed -r 's/\[(.+)\]/\1/' + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_getConfigValue.sh b/Automation/centos-art.sh-mods/Cli/cli_getConfigValue.sh new file mode 100755 index 0000000..08065ae --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getConfigValue.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# +# cli_getConfigValue.sh -- This function standardizes the way configuration +# files are retrieved from configuration files. As arguments, the +# configuration file absolute path, the configuration section name, and the +# configuration option name must be provided. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_getConfigValue { + + # Initialize absolute path to configuration file. + local CONFIG_ABSPATH="$1" + + # Initialize configuration section name where the variable value + # we want to to retrieve is set in. + local CONFIG_SECTION="$2" + + # Initialize variable name we want to retrieve value from. + local CONFIG_OPTION="$3" + + # Retrieve configuration lines from configuration file. + local CONFIG_LINES=$(cli_getConfigLines \ + "$CONFIG_ABSPATH" "$CONFIG_SECTION" "$CONFIG_OPTION") + + # Parse configuration lines to retrieve the values of variable + # names. + local CONFIG_VALUE=$(echo $CONFIG_LINES \ + | cut -d= -f2- \ + | sed -r -e 's/"//g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' ) + + # Output values related to variable name. + echo "$CONFIG_VALUE" + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_getFilesList.sh b/Automation/centos-art.sh-mods/Cli/cli_getFilesList.sh new file mode 100755 index 0000000..8a6e42b --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getFilesList.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_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="$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 ARGUMENTS='' + + # Prepare ARGUMENTS for getopt. + cli_parseArgumentsReDef "$@" + + # Redefine ARGUMENTS using getopt(1) command parser. + cli_parseArguments + + # Redefine positional parameters using ARGUMENTS variable. + eval set -- "$ARGUMENTS" + + 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. + local LOCATIONS=$@ + + # Verify that locations does exist. + cli_checkFiles -e ${LOCATIONS} + + # 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 LOCATION + # variable 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 ${LOCATIONS} -regextype posix-egrep ${OPTIONS} -regex "${PATTERN}" | sort | uniq + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_getLocalizationDir.sh b/Automation/centos-art.sh-mods/Cli/cli_getLocalizationDir.sh new file mode 100755 index 0000000..42c4456 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getLocalizationDir.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# +# cli_getLocalizationDir.sh -- This function standardizes the way +# localization paths are created. The first argument of this function +# must be a path pointing a directory inside the repository. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_getLocalizationDir { + + # Sanitate non-option arguments to be sure they match the + # directory conventions established by centos-art.sh script + # against source directory locations in the working copy. + LOCATION=$(cli_checkRepoDirSource "${1}") + + # In case the location specified would be a file, remove the file + # part from the path so only its parent directory remains. + if [[ -f ${LOCATION} ]];then + LOCATION=$(dirname ${LOCATION}) + fi + + # Make path transformation. + case "${2}" in + + '--no-lang' ) + LOCATION=$(echo "${LOCATION}" \ + | sed -r -e "s!(Identity|Scripts|Documentation)!Locales/\1!") + ;; + + * ) + LOCATION=$(echo "${LOCATION}" \ + | sed -r -e "s!(Identity|Scripts|Documentation)!Locales/\1!")/${CLI_LANG_LC} + ;; + + esac + + # Output transformed path. + echo "${LOCATION}" + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_getPathComponent.sh b/Automation/centos-art.sh-mods/Cli/cli_getPathComponent.sh new file mode 100755 index 0000000..cb262dd --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getPathComponent.sh @@ -0,0 +1,140 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_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-release,motif-pattern,repo-dir' + + # Define release pattern. + local RELEASE="(([[: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="Identity/Images/Themes/(([[:alnum:]]+)/(${RELEASE}))" + + # 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 ARGUMENTS='' + + # Prepare ARGUMENTS variable for getopt. + cli_parseArgumentsReDef "$@" + + # Redefine ARGUMENTS using getopt(1) command parser. + cli_parseArguments + + # Redefine positional parameters using ARGUMENTS variable. + eval set -- "$ARGUMENTS" + + # 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 "${RELEASE}" | sed -r "s!.*/${RELEASE}/.*!\1!" + shift 1 + break + ;; + + --release-major ) + echo "$LOCATION" | egrep "${RELEASE}" | sed -r "s!.*/${RELEASE}/.*!\2!" + shift 1 + break + ;; + + --release-minor ) + echo "$LOCATION" | egrep "${RELEASE}" | sed -r "s!.*/${RELEASE}/.*!\4!" + shift 1 + break + ;; + + --release-pattern ) + echo "${RELEASE}" + 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-release ) + 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_WORKDIR}/,," + shift 1 + break + ;; + + esac + + done + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_getRepoName.sh b/Automation/centos-art.sh-mods/Cli/cli_getRepoName.sh new file mode 100755 index 0000000..3680252 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getRepoName.sh @@ -0,0 +1,133 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_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_WORKDIR}/)?(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/Automation/centos-art.sh-mods/Cli/cli_getTemporalFile.sh b/Automation/centos-art.sh-mods/Cli/cli_getTemporalFile.sh new file mode 100755 index 0000000..73849ce --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_getTemporalFile.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_getTemporalFile { + + # 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 NAME="$(cli_getRepoName $1 -f)" + + # Check default base name for temporal file, it can't be an empty + # value. + if [[ "$NAME" == '' ]];then + cli_printMessage "`gettext "The first argument cannot be empty."`" --as-error-line + fi + + # Define absolute path for temporal file. + local TEMPFILE="${TMPDIR}/${NAME}" + + # Output absolute path to final temporal file. + echo $TEMPFILE + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_parseArguments.sh b/Automation/centos-art.sh-mods/Cli/cli_parseArguments.sh new file mode 100755 index 0000000..d583ac6 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_parseArguments.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# cli_parseArguments.sh -- This function redefines arguments +# (ARGUMENTS) global variable using getopt(1) output. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_parseArguments { + + # Reset positional parameters using optional arguments. + eval set -- "$ARGUMENTS" + + # Parse optional arguments using getopt. + ARGUMENTS=$(getopt -o "$ARGSS" -l "$ARGSL" -n "$CLI_NAME (${FUNCNAME[1]})" -- "$@") + + # Be sure getout parsed arguments successfully. Otherwise, finish + # script execution with a to know more line. + if [[ $? != 0 ]]; then + cli_printMessage "${CLI_FUNCDIRNAM}" --as-toknowmore-line + exit + fi + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_parseArgumentsReDef.sh b/Automation/centos-art.sh-mods/Cli/cli_parseArgumentsReDef.sh new file mode 100755 index 0000000..6cb7f77 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_parseArgumentsReDef.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# +# cli_parseArgumentsReDef.sh -- This function initiates/reset and +# sanitizes positional parameters passed to this function and creates +# the list of arguments that getopt will process. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_parseArgumentsReDef { + + local ARG + + # Clean up arguments global variable. + ARGUMENTS='' + + # Fill up arguments global variable with current positional + # parameter information. To avoid interpretation problems, use + # single quotes to enclose each argument (ARG) from command-line + # individually. + for ARG 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. + ARG=$(echo "$ARG" | tr -d "'") + + # Concatenate arguments and enclose them to let getopt to + # process them when they have spaces inside. + ARGUMENTS="$ARGUMENTS '$ARG'" + + done + + # Verify non-option arguments passed to command-line. If there + # isn't any or dot is provided, redefine the ARGUMENTS variable to + # use the current location the centos-art.sh script was called + # from. + if [[ -z $ARGUMENTS ]];then + ARGUMENTS=${PWD} + fi + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_printCopyrightInfo.sh b/Automation/centos-art.sh-mods/Cli/cli_printCopyrightInfo.sh new file mode 100755 index 0000000..078bc05 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_printCopyrightInfo.sh @@ -0,0 +1,116 @@ +#!/bin/bash +# +# cli_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 it be requested about it. +# So, in that sake, I'll assume the same copyright information used by +# The CentOS Wiki (http://wiki.centos.org/) as reference. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_printCopyrightInfo { + + 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. + cli_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=$(cli_printCopyrightInfo --first-year) + local LAST_YEAR=$(cli_printCopyrightInfo --last-year) + echo "${FIRST_YEAR}-${LAST_YEAR}" + ;; + + --years-list ) + + local FIRST_YEAR=$(cli_printCopyrightInfo --first-year) + local LAST_YEAR=$(cli_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. + echo "The CentOS Project" + ;; + + --holder-predicate ) + + local HOLDER=$(cli_printCopyrightInfo --holder) + echo "${HOLDER}. `gettext "All rights reserved."`" + ;; + + * ) + + local YEAR=$(cli_printCopyrightInfo --last-year) + local HOLDER=$(cli_printCopyrightInfo --holder) + echo "Copyright © ${YEAR} ${HOLDER}" + ;; + + esac + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_printMailingList.sh b/Automation/centos-art.sh-mods/Cli/cli_printMailingList.sh new file mode 100755 index 0000000..b6053d7 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_printMailingList.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# +# cli_printMailingList.sh -- This function standardize the way mailing +# list addresses are printed on content produced by centos-art.sh +# script. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_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 ARGUMENTS='' + + # Prepare ARGUMENTS for getopt. + cli_parseArgumentsReDef "$@" + + # Redefine ARGUMENTS using getopt(1) command parser. + cli_parseArguments + + # Redefine positional parameters using ARGUMENTS variable. + eval set -- "$ARGUMENTS" + + # Look for options passed through command-line. + while true; do + case "$1" in + + --docs ) + MAILADDRS="${TCAR_BRAND}-docs@$(cli_printUrl --domain)" + shift 1 + ;; + + --as-html-link ) + MAILADDRS="${2}" + shift 2 + ;; + + -- ) + + shift 1 + break + ;; + esac + done + + # Print mail address. + echo "$MAILADDRS" + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_printMessage.sh b/Automation/centos-art.sh-mods/Cli/cli_printMessage.sh new file mode 100755 index 0000000..e4cdd4d --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_printMessage.sh @@ -0,0 +1,285 @@ +#!/bin/bash +# +# cli_printMessage.sh -- This function standardizes the way messages +# are printed by centos-art.sh script. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_printMessage { + + local MESSAGE="$1" + local FORMAT="$2" + + # Verify message variable, it cannot have an empty value. + if [[ $MESSAGE == '' ]];then + cli_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=$(echo $MESSAGE | sed -r -e 's!^[[:space:]]+!!') + + # Print messages that will always be printed no matter what value + # the FLAG_QUIET variable has. + case "$FORMAT" in + + --as-stdout-line ) + + # 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. + echo "$MESSAGE" | sed -r \ + -e "s!${TCAR_WORKDIR}/!!g" \ + -e "s!> /!> !g" \ + -e "s!/{2,}!/!g" \ + | awk 'BEGIN { FS=": " } + { + if ( $0 ~ /^-+$/ ) + print $0 + else + printf "%-15s\t%s\n", $1, $2 + } + END {}' + ;; + + --as-error-line ) + + # Define where the error was originated inside the + # centos-art.sh script. Print out the function name and + # line from the caller. + local ORIGIN="$(caller 1 | gawk '{ print $2 " L." $1 }')" + + # Build the error message. + cli_printMessage "${CLI_NAME} (${ORIGIN}):" --as-stdout-line + cli_printMessage "${MESSAGE}" --as-response-line + cli_printMessage "${CLI_FUNCNAME}" --as-toknowmore-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-suggestion-line ) + + # Define where the error was originated inside the + # centos-art.sh script. Print out the function name and + # line from the caller. + local ORIGIN="$(caller 1 | gawk '{ print $2 " L." $1 }')" + + # Build the error message. + cli_printMessage "${CLI_NAME} (${ORIGIN}):" --as-stdout-line + cli_printMessage "`gettext "The path provided cannot be processed the way you entered it."`" --as-stdout-line + cli_printMessage "`gettext "Instead, try the following equivalence:"`" --as-stdout-line + cli_printMessage "${MESSAGE}" --as-response-line + cli_printMessage "${CLI_FUNCNAME}" --as-toknowmore-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-toknowmore-line ) + cli_printMessage '-' --as-separator-line + cli_printMessage "`gettext "To know more, run"` ${CLI_NAME} ${MESSAGE} --help" --as-stdout-line + cli_printMessage '-' --as-separator-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 [[ $FLAG_ANSWER == 'true' ]];then + + ANSWER=${Y} + + else + + # Print the question to standard error. + cli_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 ) + cli_printMessage "--> $MESSAGE" --as-stdout-line + ;; + + --as-request-line ) + cli_printMessage "${MESSAGE}:\040" --as-notrailingnew-line + ;; + + --as-notrailingnew-line ) + echo -e -n "${MESSAGE}" | sed -r \ + -e "s!${TCAR_WORKDIR}/!!g" + ;; + + --as-stderr-line ) + echo "$MESSAGE" | sed -r \ + -e "s!${TCAR_WORKDIR}/!!g" 1>&2 + ;; + + esac + + # Verify verbose option. The verbose option controls whether + # messages are printed or not. + if [[ "$FLAG_QUIET" == 'true' ]];then + return + fi + + # Print messages that will be printed only when the 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" + ;; + + --as-banner-line ) + cli_printMessage '-' --as-separator-line + cli_printMessage "$MESSAGE" --as-stdout-line + cli_printMessage '-' --as-separator-line + ;; + + --as-processing-line ) + cli_printMessage "`gettext "Processing"`: $MESSAGE" --as-stdout-line + ;; + + --as-cropping-line ) + cli_printMessage "`gettext "Cropping from"`: $MESSAGE" --as-stdout-line + ;; + + --as-tuningup-line ) + cli_printMessage "`gettext "Tuning-up"`: $MESSAGE" --as-stdout-line + ;; + + --as-checking-line ) + cli_printMessage "`gettext "Checking"`: $MESSAGE" --as-stdout-line + ;; + + --as-combining-line ) + cli_printMessage "`gettext "Combining"`: $MESSAGE" --as-stdout-line + ;; + + --as-creating-line | --as-updating-line ) + if [[ -a "$MESSAGE" ]];then + cli_printMessage "`gettext "Updating"`: $MESSAGE" --as-stdout-line + else + cli_printMessage "`gettext "Creating"`: $MESSAGE" --as-stdout-line + fi + ;; + + --as-deleting-line ) + cli_printMessage "`gettext "Deleting"`: $MESSAGE" --as-stdout-line + ;; + + --as-reading-line ) + cli_printMessage "`gettext "Reading"`: $MESSAGE" --as-stdout-line + ;; + + --as-savedas-line ) + cli_printMessage "`gettext "Saved as"`: $MESSAGE" --as-stdout-line + ;; + + --as-linkto-line ) + cli_printMessage "`gettext "Linked to"`: $MESSAGE" --as-stdout-line + ;; + + --as-movedto-line ) + cli_printMessage "`gettext "Moved to"`: $MESSAGE" --as-stdout-line + ;; + + --as-translation-line ) + cli_printMessage "`gettext "Translation"`: $MESSAGE" --as-stdout-line + ;; + + --as-translating-line ) + cli_printMessage "`gettext "Translating"`: $MESSAGE" --as-stdout-line + ;; + + --as-validating-line ) + cli_printMessage "`gettext "Validating"`: $MESSAGE" --as-stdout-line + ;; + + --as-template-line ) + cli_printMessage "`gettext "Template"`: $MESSAGE" --as-stdout-line + ;; + + --as-configuration-line ) + cli_printMessage "`gettext "Configuration"`: $MESSAGE" --as-stdout-line + ;; + + --as-palette-line ) + cli_printMessage "`gettext "Palette"`: $MESSAGE" --as-stdout-line + ;; + + --as-inkscape-line ) + cli_printMessage "$MESSAGE" --as-stdout-line + ;; + + esac + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_printUrl.sh b/Automation/centos-art.sh-mods/Cli/cli_printUrl.sh new file mode 100755 index 0000000..2a6ce80 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_printUrl.sh @@ -0,0 +1,149 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_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 ARGUMENTS='' + + # Prepare ARGUMENTS for getopt. + cli_parseArgumentsReDef "$@" + + # Redefine ARGUMENTS using getopt(1) command parser. + cli_parseArguments + + # Redefine positional parameters using ARGUMENTS variable. + eval set -- "$ARGUMENTS" + + # Look for options passed through command-line. + while true; do + case "$1" in + + --domain ) + URL="${TCAR_BRAND}.org" + shift 1 + ;; + + --home ) + URL="http://www.$(cli_printUrl --domain)/" + shift 1 + ;; + + --lists ) + URL="http://lists.$(cli_printUrl --domain)/" + shift 1 + ;; + + --wiki ) + URL="http://wiki.$(cli_printUrl --domain)/" + shift 1 + ;; + + --forums ) + URL="http://forums.$(cli_printUrl --domain)/" + shift 1 + ;; + + --bugs ) + URL="http://bugs.$(cli_printUrl --domain)/" + shift 1 + ;; + + --projects ) + URL="https://projects.$(cli_printUrl --domain)/" + shift 1 + ;; + + --svn ) + URL="$(cli_printUrl --projects)svn/" + shift 1 + ;; + + --trac ) + URL="$(cli_printUrl --projects)trac/" + shift 1 + ;; + + --planet ) + URL="http://planet.$(cli_printUrl --domain)/" + shift 1 + ;; + + --docs ) + URL="http://docs.$(cli_printUrl --domain)/" + shift 1 + ;; + + --mirrors ) + URL="http://mirrors.$(cli_printUrl --domain)/" + shift 1 + ;; + + --irc ) + URL="http://$(cli_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}${CLI_LANG_LL}/" + fi + shift 1 + ;; + + --as-html-link ) + URL="${URL}" + shift 1 + ;; + + -- ) + + shift 1 + break + ;; + esac + done + + # Print Url. + echo "$URL" + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_runFnEnvironment.sh b/Automation/centos-art.sh-mods/Cli/cli_runFnEnvironment.sh new file mode 100755 index 0000000..5b9641d --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_runFnEnvironment.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# cli_runFnEnvironment.sh -- This function standardizes the way +# centos-art.sh script is called to itself. The main purpose of this +# somehow own interface is to control the parent script flow based on +# specific function environments exit status. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_runFnEnvironment { + + # Execute specific function environment. + ${CLI_NAME} $@ + + # Retrieve exit status. + local STATUS=$? + + # Finish script execution based on exit status. + if [[ ${STATUS} -ne 0 ]];then + exit ${STATUS} + fi + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_synchronizeRepoChanges.sh b/Automation/centos-art.sh-mods/Cli/cli_synchronizeRepoChanges.sh new file mode 100755 index 0000000..5bfb877 --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_synchronizeRepoChanges.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# cli_synchronizeRepoChanges.sh -- This function standardizes the way +# changes are synchronized between the working copy and the central +# repository. This function is an interface to the Svn functionality +# of the centos-art.sh script. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_synchronizeRepoChanges { + + # Verify synchronization flag. + if [[ ! $FLAG_SYNCHRONIZE == 'true' ]];then + return + fi + + # Verify existence of locations passed to this function. + cli_checkFiles -e $@ + + # Synchronize changes. + cli_runFnEnvironment vcs --synchronize $@ + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_terminateScriptExecution.sh b/Automation/centos-art.sh-mods/Cli/cli_terminateScriptExecution.sh new file mode 100755 index 0000000..cf855ed --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_terminateScriptExecution.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# +# cli_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. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_terminateScriptExecution { + + # Remove temporal directory. + rm -r ${TMPDIR} + + # NOTE: Don't specify an exit status here. As convenction we do + # this when error messages are triggerd. See `--as-error-line' + # option from `cli_printMessage' functionality. + +} diff --git a/Automation/centos-art.sh-mods/Cli/cli_unsetFunctions.sh b/Automation/centos-art.sh-mods/Cli/cli_unsetFunctions.sh new file mode 100755 index 0000000..8a31dff --- /dev/null +++ b/Automation/centos-art.sh-mods/Cli/cli_unsetFunctions.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# +# cli_unsetFunctions.sh -- This function unsets functionalities from +# `centos-art.sh' script execution environment. +# +# Copyright (C) 2009-2013 The CentOS Project +# +# 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. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function cli_unsetFunctions { + + # Define export id used to retrive function files. This is the + # same export id used to export functions without the directory + # part. + local EXPORTID=$(basename "$1") + + # Verify suffix value used to retrive function files. Assuming no + # suffix value is passed as second argument to this function, use + # the function name value (CLI_FUNCNAME) as default value. + if [[ $EXPORTID == '' ]];then + cli_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 + # `cli_exportFunctions'. Be sure to limit the list to function + # names that start with the suffix specified only. + local FUNCDEF='' + local FUNCDEFS=$(declare -F | gawk '{ print $3 }' | egrep "^${EXPORTID}") + + # Unset function names from current execution environment. + for FUNCDEF in $FUNCDEFS;do + unset -f $FUNCDEF + done + +} diff --git a/Automation/centos-art.sh-mods/Commons/cli.sh b/Automation/centos-art.sh-mods/Commons/cli.sh deleted file mode 100755 index 9d9a17d..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli.sh +++ /dev/null @@ -1,136 +0,0 @@ -#!/bin/bash -# -# cli.sh -- This function initiates the centos-art.sh script -# command-line interface. Variables defined in this function are -# accesible by all other functions. The cli function is the first -# script executed by centos-art.sh, onces executed in a terminal. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli { - - # Initialize global variables. - local CLI_FUNCNAME='' - local CLI_FUNCDIRNAM='' - local CLI_FUNCSCRIPT='' - local ARGUMENTS='' - - # Initialize default value to filter flag. The filter flag - # (--filter) is used mainly to reduce the number of files to - # process. The value of this variable is interpreted as - # egrep-posix regular expression. By default, when the --filter - # option is not provided, all paths in the working copy must match - # except files under hidden directories like `.svn'. We do this in - # conjunction with `cli_getFilesList', when building the list of - # files that will be processed. - local FLAG_FILTER='[[:alnum:]_/-]+' - - # Initialize default value to verbosity flag. The verbosity flag - # (-v | --verbose) controls whether centos-art.sh script prints - # messages or not. By default, all messages are suppressed except - # those directed to standard error. - local FLAG_QUIET='false' - - # Initialize default value to answer flag. The answer flag - # (--answer-yes) controls whether centos-art.sh script does or - # does not pass confirmation request points. By default, it - # doesn't. - local FLAG_ANSWER='false' - - # Initialize default value to commit changes flag. This flag - # (--synchronize) controls whether version control system is - # triggered or not after realizing changes to source files under - # version control. - local FLAG_SYNCHRONIZE='false' - - # Initialize list of common functionalities to load. - local FILES=$(ls ${CLI_FUNCDIR}/Commons/*.sh) - - # Initialize common functionalities. - for FILE in ${FILES};do - if [[ -x ${FILE} ]];then - . ${FILE} - export -f $(grep '^function ' ${FILE} | cut -d' ' -f2) - else - echo "`eval_gettext "The \\\$FILE needs to have execution rights."`" - exit - fi - done - - # 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 centos-art.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 cli_terminateScriptExecution 0 - - # Redefine ARGUMENTS variable using current positional parameters. - cli_parseArgumentsReDef "$@" - - # Check function name. The function name is critical for - # centos-art.sh script to do something coherent. If it is not - # provided, execute the help functionality and end script - # execution. - if [[ ! "$1" ]] || [[ ! "$1" =~ '^[[:alpha:]]' ]];then - cli_runFnEnvironment help --read --format="texinfo" tcar-fs::: - exit - fi - - # Define function name (CLI_FUNCNAME) using the first argument in - # the command-line. - CLI_FUNCNAME=$(cli_getRepoName $1 -f | cut -d '-' -f1) - - # Define function directory. - CLI_FUNCDIRNAM=$(cli_getRepoName $CLI_FUNCNAME -d) - - # Define function file name. - CLI_FUNCSCRIPT=${CLI_FUNCDIR}/${CLI_FUNCDIRNAM}/${CLI_FUNCNAME}.sh - - # Check function script execution rights. - cli_checkFiles -x "${CLI_FUNCSCRIPT}" - - # Remove the first argument passed to centos-art.sh command-line - # in order to build optional arguments inside functionalities. We - # start counting from second argument (inclusive) on. - shift 1 - - # Redefine ARGUMENTS using current positional parameters. - cli_parseArgumentsReDef "$@" - - # Define default text editors used by centos-art.sh script. - if [[ ! "$EDITOR" =~ '/usr/bin/(vim|emacs|nano)' ]];then - EDITOR='/usr/bin/vim' - fi - - # Check text editor execution rights. - cli_checkFiles -x ${EDITOR} - - # Go for function initialization. Keep the cli_exportFunctions - # function calling after all variables and arguments definitions. - cli_exportFunctions "${CLI_FUNCDIRNAM}/${CLI_FUNCNAME}" - - # Execute function. - $CLI_FUNCNAME - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_checkFiles.sh b/Automation/centos-art.sh-mods/Commons/cli_checkFiles.sh deleted file mode 100755 index 3c65ed4..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_checkFiles.sh +++ /dev/null @@ -1,187 +0,0 @@ -#!/bin/bash -# -# cli_checkFiles.sh -- This function standardizes the way file -# conditional expressions are applied inside centos-art.sh script. -# Here is where we answer 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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_checkFiles { - - # Define short options. - local ARGSS='i:,r,m:,n,d,e,f,h,x' - - # Define long options. - local ARGSL='mime:,is-versioned,match:,is-installed' - - # Initialize array variables. - local -a CONDITION_COMMAND - local -a CONDITION_PATTERN - local -a CONDITION_MESSAGE - - # Initialize array variable counter. - local COUNTER=0 - - # 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 ARGUMENTS='' - - # Prepare ARGUMENTS for getopt. - cli_parseArgumentsReDef "$@" - - # Redefine ARGUMENTS using getopt(1) command parser. - cli_parseArguments - - # Redefine positional parameters using ARGUMENTS variable. - eval set -- "$ARGUMENTS" - - # Look for options passed through positional parameters. - while true; do - - case "$1" in - - -d ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-d' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a directory."`" - shift 1 - ;; - - -e ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-e' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "doesn't exist."`" - shift 1 - ;; - - -f ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-f' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a regular file."`" - shift 1 - ;; - - -h ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-h' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't a symbolic link."`" - shift 1 - ;; - - -x ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='test' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-x' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't an executable file."`" - shift 1 - ;; - - -i | --mime ) - local MIME=$2 - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='file' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]='-bi' - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`eval_gettext "isn't a \\\"\\\$MIME\\\" file."`" - shift 2 - ;; - - -m | --match ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]='match' - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="$2" - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`eval_gettext "doesn't match its pattern."`" - shift 2 - ;; - - -r | --is-versioned ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]="centos-art" - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="vcs --is-versioned" - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="" - shift 1 - ;; - - -n | --is-installed ) - CONDITION_COMMAND[((++${#CONDITION_COMMAND[*]}))]="rpm" - CONDITION_PATTERN[((++${#CONDITION_PATTERN[*]}))]="-q --quiet" - CONDITION_MESSAGE[((++${#CONDITION_MESSAGE[*]}))]="`gettext "isn't installed in the system."`" - shift 1 - ;; - - -- ) - shift 1 - break - ;; - - esac - done - - # 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=$@ - - for FILE in $FILES;do - - until [[ ${COUNTER} -eq ${#CONDITION_PATTERN[*]} ]];do - - case ${CONDITION_COMMAND[$COUNTER]} in - - "test" | "rpm" ) - ${CONDITION_COMMAND[$COUNTER]} ${CONDITION_PATTERN[$COUNTER]} ${FILE} \ - || cli_printMessage "${FILE} ${CONDITION_MESSAGE[$COUNTER]}" --as-error-line - ;; - - "centos-art" ) - # Don't create another level for error messages here - # (that would duplicate them unnecessarily). Instead, - # set error messages inside specific functionalities - # and use them directly from there. - cli_runFnEnvironment ${CONDITION_PATTERN[$COUNTER]} ${FILE} - ;; - - "file" ) - if [[ ! $(${CONDITION_COMMAND[$COUNTER]} ${CONDITION_PATTERN[$COUNTER]} ${FILE}) == "$MIME" ]];then - cli_printMessage "${FILE} ${CONDITION_MESSAGE[$COUNTER]}" --as-error-line - fi - ;; - - "match" ) - if [[ ! ${FILE} =~ "${CONDITION_PATTERN[$COUNTER]}" ]];then - cli_printMessage "${FILE} ${CONDITION_MESSAGE[$COUNTER]}" --as-error-line - fi - ;; - - * ) - cli_printMessage "`gettext "The condition command provided isn't supported."`" --as-error-line - ;; - - esac - - COUNTER=$(($COUNTER + 1)) - - done - - done - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_checkRepoDirSource.sh b/Automation/centos-art.sh-mods/Commons/cli_checkRepoDirSource.sh deleted file mode 100755 index c7a299a..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_checkRepoDirSource.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# -# cli_checkRepoDirSource.sh -- This function standardizes the path -# construction to 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. -# -# NOTE: 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 -# inside the workstation. -# -# Use this 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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_checkRepoDirSource { - - 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. - LOCATION=$(echo "$LOCATION" | sed -r "s,^\.$,$(pwd),g") - - # Remove the working directory absolute path from location to - # avoid path duplications here. - LOCATION=$(echo "$LOCATION" | sed "s,${TCAR_WORKDIR}/,,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 cli_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_WORKDIR}/${LOCATION} - - # Output the absolute path to location. - echo "${LOCATION}" - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_expandTMarkers.sh b/Automation/centos-art.sh-mods/Commons/cli_expandTMarkers.sh deleted file mode 100755 index d8b6806..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_expandTMarkers.sh +++ /dev/null @@ -1,194 +0,0 @@ -#!/bin/bash -# -# cli_expandTMarkers.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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_expandTMarkers { - - # 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. - cli_checkFiles -e ${LOCATION} - - # Define copyright translation markers. - SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(_LAST)?=' - DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --year)" - SRC[((++${#SRC[*]}))]='=COPYRIGHT_YEAR(S)?_LIST=' - DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --years-list)" - SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER=' - DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --holder)" - SRC[((++${#SRC[*]}))]='=COPYRIGHT_HOLDER_PREDICATE=' - DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --holder-predicate)" - - # Define name of branding files. This files are mainly used under - # Identity/(Images|Models)/Brands/ directory structure. These - # file names may vary from one project to another so we use this - # variable to control the name of such files. - SRC[((++${#SRC[*]}))]='=BRAND=' - DST[((++${#DST[*]}))]="${TCAR_BRAND}" - - # Define license translation markers. - SRC[((++${#SRC[*]}))]='=LICENSE=' - DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --license)" - SRC[((++${#SRC[*]}))]='=LICENSE_URL=' - DST[((++${#DST[*]}))]="$(cli_printCopyrightInfo --license-url)" - - # Define theme translation markers. - SRC[((++${#SRC[*]}))]='=THEME=' - DST[((++${#DST[*]}))]="$(cli_getPathComponent $OUTPUT --motif)" - SRC[((++${#SRC[*]}))]='=THEMENAME=' - DST[((++${#DST[*]}))]="$(cli_getPathComponent $OUTPUT --motif-name)" - SRC[((++${#SRC[*]}))]='=THEMERELEASE=' - DST[((++${#DST[*]}))]="$(cli_getPathComponent $OUTPUT --motif-release)" - - # Define release-specific translation markers. - SRC[((++${#SRC[*]}))]='=RELEASE=' - DST[((++${#DST[*]}))]="$FLAG_RELEASEVER" - SRC[((++${#SRC[*]}))]='=MAJOR_RELEASE=' - DST[((++${#DST[*]}))]="$(echo $FLAG_RELEASEVER | cut -d'.' -f1)" - SRC[((++${#SRC[*]}))]='=MINOR_RELEASE=' - DST[((++${#DST[*]}))]="$(echo $FLAG_RELEASEVER | cut -d'.' -f2)" - - # Define architectures translation markers. - SRC[((++${#SRC[*]}))]='=ARCH=' - DST[((++${#DST[*]}))]="$(cli_getPathComponent $FLAG_BASEARCH --architecture)" - - # Define url translation markers. - SRC[((++${#SRC[*]}))]='=URL=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--home' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_WIKI=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--wiki' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_LISTS=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--lists' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_FORUMS=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--forums' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_MIRRORS=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--mirrors' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_DOCS=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--docs' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_PROJECTS=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--projects' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_BUGS=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--bugs' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_SVN=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--svn' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_TRAC=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--trac' '--with-locale') - SRC[((++${#SRC[*]}))]='=URL_PLANET=' - DST[((++${#DST[*]}))]=$(cli_printUrl '--planet' '--with-locale') - - # Define emails translation markers. - SRC[((++${#SRC[*]}))]='=MAIL_DOCS=' - DST[((++${#DST[*]}))]="$(cli_printMailingList --docs)" - - # Define locale translation markers. - SRC[((++${#SRC[*]}))]='=LOCALE=' - DST[((++${#DST[*]}))]="${CLI_LANG_LC}" - SRC[((++${#SRC[*]}))]='=LOCALE_LL=' - DST[((++${#DST[*]}))]="${CLI_LANG_LL}" - SRC[((++${#SRC[*]}))]='=LOCALE_CC=' - DST[((++${#DST[*]}))]="${CLI_LANG_CC}" - - # Define domain translation markers for domains. - SRC[((++${#SRC[*]}))]='=DOMAIN_LL=' - if [[ ! ${CLI_LANG_LL} =~ '^en' ]];then - DST[((++${#DST[*]}))]="${CLI_LANG_LL}" - else - DST[((++${#DST[*]}))]="" - fi - - # Define repository translation markers. - SRC[((++${#SRC[*]}))]='=(REPO_TLDIR|REPO_HOME|TCAR_WORKDIR)=' - DST[((++${#DST[*]}))]="${TCAR_WORKDIR}" - - # 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/Automation/centos-art.sh-mods/Commons/cli_exportFunctions.sh b/Automation/centos-art.sh-mods/Commons/cli_exportFunctions.sh deleted file mode 100755 index 1af3c72..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_exportFunctions.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash -# -# cli_exportFunctions.sh -- This function standardizes the way -# specific functionalities are exported to centos-art.sh script -# environment. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_exportFunctions { - - # Retrieve export identifier for the function we want to export. - local EXPORTID="$1" - - # Verify the export identification existence. This argument must - # be passed as first argument and match a relative path format. - if [[ ! $EXPORTID =~ '^[A-Z][[:alpha:]]+(/[[:alpha:]_]+)+$' ]];then - cli_printMessage "`gettext "The export id doesn't match its pattern."`" --as-error-line - fi - - # Define the source location where function files are placed in. - local LOCATION=${CLI_FUNCDIR}/$(dirname ${EXPORTID}) - - # Define suffix used to retrieve function files. - local SUFFIX=$(basename "$EXPORTID") - - # Verify the suffix value used to retrieve function files. - # Assuming no suffix value is passed as second argument to this - # function, use the function name value (CLI_FUNCNAME) as default - # value. - if [[ $SUFFIX == '' ]];then - SUFFIX="${CLI_FUNCNAME}" - fi - - # Redefine suffix to match all related function files inside the - # related function directory. - SUFFIX=${SUFFIX}'[[:alpha:]_]*' - - # Define the pattern used to retrieve function names from function - # files. - local PATTERN="^function[[:space:]]+${SUFFIX}[[:space:]]+{[[:space:]]*$" - - # Define the list of files. - local FUNCFILE='' - local FUNCFILES=$(cli_getFilesList ${LOCATION} --pattern="${LOCATION}/${SUFFIX}\.sh$" \ - --maxdepth='1' --mindepth='1' --type='f') - - # 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 [[ $FUNCFILES == '' ]];then - cli_printMessage "${FUNCNAME}: `gettext "No function file was found."`" --as-error-line - fi - - # Process the list of files. - for FUNCFILE in $FUNCFILES;do - - # Verify the execution rights for function file. - cli_checkFiles -x ${FUNCFILE} - - # 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 "^${FUNCFILE}$" > /dev/null - if [[ $? -eq 0 ]];then - continue - fi - - # 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 - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_getConfigLines.sh b/Automation/centos-art.sh-mods/Commons/cli_getConfigLines.sh deleted file mode 100755 index 2d9b636..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getConfigLines.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_getConfigLines { - - # Initialize absolute path to configuration file. - local CONFIG_ABSPATH="$1" - - # Verify that configuration file does exist. - cli_checkFiles -e ${CONFIG_ABSPATH} - - # Initialize configuration section name where the variable value - # we want to to retrieve is set in. - local CONFIG_SECTION="$2" - - # Be sure the configuration section name has the correct format. - if [[ ! $CONFIG_SECTION =~ '^[[:alnum:]._-]+$' ]];then - cli_printMessage "`gettext "The configuration section provided is incorrect."`" --as-error-line - fi - - # Initialize variable name we want to retrieve value from. - local CONFIG_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 [[ ! $CONFIG_OPTION =~ '^[[:alnum:]_./-]+$' ]];then - CONFIG_OPTION='[[:alnum:]_./-]+[[:space:]]*=' - fi - - # Retrieve configuration lines from configuration file. - local CONFIG_LINES=$(cat ${CONFIG_ABSPATH} \ - | egrep -v '^#' \ - | egrep -v '^[[:space:]]*$' \ - | sed -r -n "/^\[${CONFIG_SECTION}\][[:space:]]*$/,/^\[/p" \ - | egrep -v '^\[' | sort | uniq \ - | egrep "^${CONFIG_OPTION}") - - # Output value related to variable name. - echo "$CONFIG_LINES" - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_getConfigSectionNames.sh b/Automation/centos-art.sh-mods/Commons/cli_getConfigSectionNames.sh deleted file mode 100755 index a280736..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getConfigSectionNames.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_getConfigSectionNames { - - # Define absolute path to configuration file we want to retrieve - # section names from. - local CONF_FILE=$1 - - # Verify existence of configuration file. - cli_checkFiles $CONF_FILE -f - - # Output all section names without brackets, one per line. - egrep '^\[[[:alnum:]._-]+\][[:space:]]*$' $CONF_FILE \ - | sed -r 's/\[(.+)\]/\1/' - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_getConfigValue.sh b/Automation/centos-art.sh-mods/Commons/cli_getConfigValue.sh deleted file mode 100755 index 08065ae..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getConfigValue.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -# -# cli_getConfigValue.sh -- This function standardizes the way configuration -# files are retrieved from configuration files. As arguments, the -# configuration file absolute path, the configuration section name, and the -# configuration option name must be provided. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_getConfigValue { - - # Initialize absolute path to configuration file. - local CONFIG_ABSPATH="$1" - - # Initialize configuration section name where the variable value - # we want to to retrieve is set in. - local CONFIG_SECTION="$2" - - # Initialize variable name we want to retrieve value from. - local CONFIG_OPTION="$3" - - # Retrieve configuration lines from configuration file. - local CONFIG_LINES=$(cli_getConfigLines \ - "$CONFIG_ABSPATH" "$CONFIG_SECTION" "$CONFIG_OPTION") - - # Parse configuration lines to retrieve the values of variable - # names. - local CONFIG_VALUE=$(echo $CONFIG_LINES \ - | cut -d= -f2- \ - | sed -r -e 's/"//g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' ) - - # Output values related to variable name. - echo "$CONFIG_VALUE" - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_getFilesList.sh b/Automation/centos-art.sh-mods/Commons/cli_getFilesList.sh deleted file mode 100755 index 8a6e42b..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getFilesList.sh +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_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="$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 ARGUMENTS='' - - # Prepare ARGUMENTS for getopt. - cli_parseArgumentsReDef "$@" - - # Redefine ARGUMENTS using getopt(1) command parser. - cli_parseArguments - - # Redefine positional parameters using ARGUMENTS variable. - eval set -- "$ARGUMENTS" - - 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. - local LOCATIONS=$@ - - # Verify that locations does exist. - cli_checkFiles -e ${LOCATIONS} - - # 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 LOCATION - # variable 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 ${LOCATIONS} -regextype posix-egrep ${OPTIONS} -regex "${PATTERN}" | sort | uniq - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_getLocalizationDir.sh b/Automation/centos-art.sh-mods/Commons/cli_getLocalizationDir.sh deleted file mode 100755 index 42c4456..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getLocalizationDir.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -# -# cli_getLocalizationDir.sh -- This function standardizes the way -# localization paths are created. The first argument of this function -# must be a path pointing a directory inside the repository. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_getLocalizationDir { - - # Sanitate non-option arguments to be sure they match the - # directory conventions established by centos-art.sh script - # against source directory locations in the working copy. - LOCATION=$(cli_checkRepoDirSource "${1}") - - # In case the location specified would be a file, remove the file - # part from the path so only its parent directory remains. - if [[ -f ${LOCATION} ]];then - LOCATION=$(dirname ${LOCATION}) - fi - - # Make path transformation. - case "${2}" in - - '--no-lang' ) - LOCATION=$(echo "${LOCATION}" \ - | sed -r -e "s!(Identity|Scripts|Documentation)!Locales/\1!") - ;; - - * ) - LOCATION=$(echo "${LOCATION}" \ - | sed -r -e "s!(Identity|Scripts|Documentation)!Locales/\1!")/${CLI_LANG_LC} - ;; - - esac - - # Output transformed path. - echo "${LOCATION}" - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_getPathComponent.sh b/Automation/centos-art.sh-mods/Commons/cli_getPathComponent.sh deleted file mode 100755 index cb262dd..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getPathComponent.sh +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_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-release,motif-pattern,repo-dir' - - # Define release pattern. - local RELEASE="(([[: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="Identity/Images/Themes/(([[:alnum:]]+)/(${RELEASE}))" - - # 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 ARGUMENTS='' - - # Prepare ARGUMENTS variable for getopt. - cli_parseArgumentsReDef "$@" - - # Redefine ARGUMENTS using getopt(1) command parser. - cli_parseArguments - - # Redefine positional parameters using ARGUMENTS variable. - eval set -- "$ARGUMENTS" - - # 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 "${RELEASE}" | sed -r "s!.*/${RELEASE}/.*!\1!" - shift 1 - break - ;; - - --release-major ) - echo "$LOCATION" | egrep "${RELEASE}" | sed -r "s!.*/${RELEASE}/.*!\2!" - shift 1 - break - ;; - - --release-minor ) - echo "$LOCATION" | egrep "${RELEASE}" | sed -r "s!.*/${RELEASE}/.*!\4!" - shift 1 - break - ;; - - --release-pattern ) - echo "${RELEASE}" - 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-release ) - 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_WORKDIR}/,," - shift 1 - break - ;; - - esac - - done - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_getRepoName.sh b/Automation/centos-art.sh-mods/Commons/cli_getRepoName.sh deleted file mode 100755 index 3680252..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getRepoName.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_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_WORKDIR}/)?(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/Automation/centos-art.sh-mods/Commons/cli_getTemporalFile.sh b/Automation/centos-art.sh-mods/Commons/cli_getTemporalFile.sh deleted file mode 100755 index 73849ce..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_getTemporalFile.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_getTemporalFile { - - # 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 NAME="$(cli_getRepoName $1 -f)" - - # Check default base name for temporal file, it can't be an empty - # value. - if [[ "$NAME" == '' ]];then - cli_printMessage "`gettext "The first argument cannot be empty."`" --as-error-line - fi - - # Define absolute path for temporal file. - local TEMPFILE="${TMPDIR}/${NAME}" - - # Output absolute path to final temporal file. - echo $TEMPFILE - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_parseArguments.sh b/Automation/centos-art.sh-mods/Commons/cli_parseArguments.sh deleted file mode 100755 index d583ac6..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_parseArguments.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# -# cli_parseArguments.sh -- This function redefines arguments -# (ARGUMENTS) global variable using getopt(1) output. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_parseArguments { - - # Reset positional parameters using optional arguments. - eval set -- "$ARGUMENTS" - - # Parse optional arguments using getopt. - ARGUMENTS=$(getopt -o "$ARGSS" -l "$ARGSL" -n "$CLI_NAME (${FUNCNAME[1]})" -- "$@") - - # Be sure getout parsed arguments successfully. Otherwise, finish - # script execution with a to know more line. - if [[ $? != 0 ]]; then - cli_printMessage "${CLI_FUNCDIRNAM}" --as-toknowmore-line - exit - fi - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_parseArgumentsReDef.sh b/Automation/centos-art.sh-mods/Commons/cli_parseArgumentsReDef.sh deleted file mode 100755 index 6cb7f77..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_parseArgumentsReDef.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# -# cli_parseArgumentsReDef.sh -- This function initiates/reset and -# sanitizes positional parameters passed to this function and creates -# the list of arguments that getopt will process. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_parseArgumentsReDef { - - local ARG - - # Clean up arguments global variable. - ARGUMENTS='' - - # Fill up arguments global variable with current positional - # parameter information. To avoid interpretation problems, use - # single quotes to enclose each argument (ARG) from command-line - # individually. - for ARG 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. - ARG=$(echo "$ARG" | tr -d "'") - - # Concatenate arguments and enclose them to let getopt to - # process them when they have spaces inside. - ARGUMENTS="$ARGUMENTS '$ARG'" - - done - - # Verify non-option arguments passed to command-line. If there - # isn't any or dot is provided, redefine the ARGUMENTS variable to - # use the current location the centos-art.sh script was called - # from. - if [[ -z $ARGUMENTS ]];then - ARGUMENTS=${PWD} - fi - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_printCopyrightInfo.sh b/Automation/centos-art.sh-mods/Commons/cli_printCopyrightInfo.sh deleted file mode 100755 index 078bc05..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_printCopyrightInfo.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/bash -# -# cli_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 it be requested about it. -# So, in that sake, I'll assume the same copyright information used by -# The CentOS Wiki (http://wiki.centos.org/) as reference. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_printCopyrightInfo { - - 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. - cli_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=$(cli_printCopyrightInfo --first-year) - local LAST_YEAR=$(cli_printCopyrightInfo --last-year) - echo "${FIRST_YEAR}-${LAST_YEAR}" - ;; - - --years-list ) - - local FIRST_YEAR=$(cli_printCopyrightInfo --first-year) - local LAST_YEAR=$(cli_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. - echo "The CentOS Project" - ;; - - --holder-predicate ) - - local HOLDER=$(cli_printCopyrightInfo --holder) - echo "${HOLDER}. `gettext "All rights reserved."`" - ;; - - * ) - - local YEAR=$(cli_printCopyrightInfo --last-year) - local HOLDER=$(cli_printCopyrightInfo --holder) - echo "Copyright © ${YEAR} ${HOLDER}" - ;; - - esac - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_printMailingList.sh b/Automation/centos-art.sh-mods/Commons/cli_printMailingList.sh deleted file mode 100755 index b6053d7..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_printMailingList.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# -# cli_printMailingList.sh -- This function standardize the way mailing -# list addresses are printed on content produced by centos-art.sh -# script. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_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 ARGUMENTS='' - - # Prepare ARGUMENTS for getopt. - cli_parseArgumentsReDef "$@" - - # Redefine ARGUMENTS using getopt(1) command parser. - cli_parseArguments - - # Redefine positional parameters using ARGUMENTS variable. - eval set -- "$ARGUMENTS" - - # Look for options passed through command-line. - while true; do - case "$1" in - - --docs ) - MAILADDRS="${TCAR_BRAND}-docs@$(cli_printUrl --domain)" - shift 1 - ;; - - --as-html-link ) - MAILADDRS="${2}" - shift 2 - ;; - - -- ) - - shift 1 - break - ;; - esac - done - - # Print mail address. - echo "$MAILADDRS" - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_printMessage.sh b/Automation/centos-art.sh-mods/Commons/cli_printMessage.sh deleted file mode 100755 index e4cdd4d..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_printMessage.sh +++ /dev/null @@ -1,285 +0,0 @@ -#!/bin/bash -# -# cli_printMessage.sh -- This function standardizes the way messages -# are printed by centos-art.sh script. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_printMessage { - - local MESSAGE="$1" - local FORMAT="$2" - - # Verify message variable, it cannot have an empty value. - if [[ $MESSAGE == '' ]];then - cli_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=$(echo $MESSAGE | sed -r -e 's!^[[:space:]]+!!') - - # Print messages that will always be printed no matter what value - # the FLAG_QUIET variable has. - case "$FORMAT" in - - --as-stdout-line ) - - # 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. - echo "$MESSAGE" | sed -r \ - -e "s!${TCAR_WORKDIR}/!!g" \ - -e "s!> /!> !g" \ - -e "s!/{2,}!/!g" \ - | awk 'BEGIN { FS=": " } - { - if ( $0 ~ /^-+$/ ) - print $0 - else - printf "%-15s\t%s\n", $1, $2 - } - END {}' - ;; - - --as-error-line ) - - # Define where the error was originated inside the - # centos-art.sh script. Print out the function name and - # line from the caller. - local ORIGIN="$(caller 1 | gawk '{ print $2 " L." $1 }')" - - # Build the error message. - cli_printMessage "${CLI_NAME} (${ORIGIN}):" --as-stdout-line - cli_printMessage "${MESSAGE}" --as-response-line - cli_printMessage "${CLI_FUNCNAME}" --as-toknowmore-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-suggestion-line ) - - # Define where the error was originated inside the - # centos-art.sh script. Print out the function name and - # line from the caller. - local ORIGIN="$(caller 1 | gawk '{ print $2 " L." $1 }')" - - # Build the error message. - cli_printMessage "${CLI_NAME} (${ORIGIN}):" --as-stdout-line - cli_printMessage "`gettext "The path provided cannot be processed the way you entered it."`" --as-stdout-line - cli_printMessage "`gettext "Instead, try the following equivalence:"`" --as-stdout-line - cli_printMessage "${MESSAGE}" --as-response-line - cli_printMessage "${CLI_FUNCNAME}" --as-toknowmore-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-toknowmore-line ) - cli_printMessage '-' --as-separator-line - cli_printMessage "`gettext "To know more, run"` ${CLI_NAME} ${MESSAGE} --help" --as-stdout-line - cli_printMessage '-' --as-separator-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 [[ $FLAG_ANSWER == 'true' ]];then - - ANSWER=${Y} - - else - - # Print the question to standard error. - cli_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 ) - cli_printMessage "--> $MESSAGE" --as-stdout-line - ;; - - --as-request-line ) - cli_printMessage "${MESSAGE}:\040" --as-notrailingnew-line - ;; - - --as-notrailingnew-line ) - echo -e -n "${MESSAGE}" | sed -r \ - -e "s!${TCAR_WORKDIR}/!!g" - ;; - - --as-stderr-line ) - echo "$MESSAGE" | sed -r \ - -e "s!${TCAR_WORKDIR}/!!g" 1>&2 - ;; - - esac - - # Verify verbose option. The verbose option controls whether - # messages are printed or not. - if [[ "$FLAG_QUIET" == 'true' ]];then - return - fi - - # Print messages that will be printed only when the 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" - ;; - - --as-banner-line ) - cli_printMessage '-' --as-separator-line - cli_printMessage "$MESSAGE" --as-stdout-line - cli_printMessage '-' --as-separator-line - ;; - - --as-processing-line ) - cli_printMessage "`gettext "Processing"`: $MESSAGE" --as-stdout-line - ;; - - --as-cropping-line ) - cli_printMessage "`gettext "Cropping from"`: $MESSAGE" --as-stdout-line - ;; - - --as-tuningup-line ) - cli_printMessage "`gettext "Tuning-up"`: $MESSAGE" --as-stdout-line - ;; - - --as-checking-line ) - cli_printMessage "`gettext "Checking"`: $MESSAGE" --as-stdout-line - ;; - - --as-combining-line ) - cli_printMessage "`gettext "Combining"`: $MESSAGE" --as-stdout-line - ;; - - --as-creating-line | --as-updating-line ) - if [[ -a "$MESSAGE" ]];then - cli_printMessage "`gettext "Updating"`: $MESSAGE" --as-stdout-line - else - cli_printMessage "`gettext "Creating"`: $MESSAGE" --as-stdout-line - fi - ;; - - --as-deleting-line ) - cli_printMessage "`gettext "Deleting"`: $MESSAGE" --as-stdout-line - ;; - - --as-reading-line ) - cli_printMessage "`gettext "Reading"`: $MESSAGE" --as-stdout-line - ;; - - --as-savedas-line ) - cli_printMessage "`gettext "Saved as"`: $MESSAGE" --as-stdout-line - ;; - - --as-linkto-line ) - cli_printMessage "`gettext "Linked to"`: $MESSAGE" --as-stdout-line - ;; - - --as-movedto-line ) - cli_printMessage "`gettext "Moved to"`: $MESSAGE" --as-stdout-line - ;; - - --as-translation-line ) - cli_printMessage "`gettext "Translation"`: $MESSAGE" --as-stdout-line - ;; - - --as-translating-line ) - cli_printMessage "`gettext "Translating"`: $MESSAGE" --as-stdout-line - ;; - - --as-validating-line ) - cli_printMessage "`gettext "Validating"`: $MESSAGE" --as-stdout-line - ;; - - --as-template-line ) - cli_printMessage "`gettext "Template"`: $MESSAGE" --as-stdout-line - ;; - - --as-configuration-line ) - cli_printMessage "`gettext "Configuration"`: $MESSAGE" --as-stdout-line - ;; - - --as-palette-line ) - cli_printMessage "`gettext "Palette"`: $MESSAGE" --as-stdout-line - ;; - - --as-inkscape-line ) - cli_printMessage "$MESSAGE" --as-stdout-line - ;; - - esac - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_printUrl.sh b/Automation/centos-art.sh-mods/Commons/cli_printUrl.sh deleted file mode 100755 index 2a6ce80..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_printUrl.sh +++ /dev/null @@ -1,149 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_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 ARGUMENTS='' - - # Prepare ARGUMENTS for getopt. - cli_parseArgumentsReDef "$@" - - # Redefine ARGUMENTS using getopt(1) command parser. - cli_parseArguments - - # Redefine positional parameters using ARGUMENTS variable. - eval set -- "$ARGUMENTS" - - # Look for options passed through command-line. - while true; do - case "$1" in - - --domain ) - URL="${TCAR_BRAND}.org" - shift 1 - ;; - - --home ) - URL="http://www.$(cli_printUrl --domain)/" - shift 1 - ;; - - --lists ) - URL="http://lists.$(cli_printUrl --domain)/" - shift 1 - ;; - - --wiki ) - URL="http://wiki.$(cli_printUrl --domain)/" - shift 1 - ;; - - --forums ) - URL="http://forums.$(cli_printUrl --domain)/" - shift 1 - ;; - - --bugs ) - URL="http://bugs.$(cli_printUrl --domain)/" - shift 1 - ;; - - --projects ) - URL="https://projects.$(cli_printUrl --domain)/" - shift 1 - ;; - - --svn ) - URL="$(cli_printUrl --projects)svn/" - shift 1 - ;; - - --trac ) - URL="$(cli_printUrl --projects)trac/" - shift 1 - ;; - - --planet ) - URL="http://planet.$(cli_printUrl --domain)/" - shift 1 - ;; - - --docs ) - URL="http://docs.$(cli_printUrl --domain)/" - shift 1 - ;; - - --mirrors ) - URL="http://mirrors.$(cli_printUrl --domain)/" - shift 1 - ;; - - --irc ) - URL="http://$(cli_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}${CLI_LANG_LL}/" - fi - shift 1 - ;; - - --as-html-link ) - URL="${URL}" - shift 1 - ;; - - -- ) - - shift 1 - break - ;; - esac - done - - # Print Url. - echo "$URL" - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_runFnEnvironment.sh b/Automation/centos-art.sh-mods/Commons/cli_runFnEnvironment.sh deleted file mode 100755 index 5b9641d..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_runFnEnvironment.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# -# cli_runFnEnvironment.sh -- This function standardizes the way -# centos-art.sh script is called to itself. The main purpose of this -# somehow own interface is to control the parent script flow based on -# specific function environments exit status. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_runFnEnvironment { - - # Execute specific function environment. - ${CLI_NAME} $@ - - # Retrieve exit status. - local STATUS=$? - - # Finish script execution based on exit status. - if [[ ${STATUS} -ne 0 ]];then - exit ${STATUS} - fi - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_synchronizeRepoChanges.sh b/Automation/centos-art.sh-mods/Commons/cli_synchronizeRepoChanges.sh deleted file mode 100755 index 5bfb877..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_synchronizeRepoChanges.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# -# cli_synchronizeRepoChanges.sh -- This function standardizes the way -# changes are synchronized between the working copy and the central -# repository. This function is an interface to the Svn functionality -# of the centos-art.sh script. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_synchronizeRepoChanges { - - # Verify synchronization flag. - if [[ ! $FLAG_SYNCHRONIZE == 'true' ]];then - return - fi - - # Verify existence of locations passed to this function. - cli_checkFiles -e $@ - - # Synchronize changes. - cli_runFnEnvironment vcs --synchronize $@ - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_terminateScriptExecution.sh b/Automation/centos-art.sh-mods/Commons/cli_terminateScriptExecution.sh deleted file mode 100755 index cf855ed..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_terminateScriptExecution.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -# cli_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. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_terminateScriptExecution { - - # Remove temporal directory. - rm -r ${TMPDIR} - - # NOTE: Don't specify an exit status here. As convenction we do - # this when error messages are triggerd. See `--as-error-line' - # option from `cli_printMessage' functionality. - -} diff --git a/Automation/centos-art.sh-mods/Commons/cli_unsetFunctions.sh b/Automation/centos-art.sh-mods/Commons/cli_unsetFunctions.sh deleted file mode 100755 index 8a31dff..0000000 --- a/Automation/centos-art.sh-mods/Commons/cli_unsetFunctions.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# -# cli_unsetFunctions.sh -- This function unsets functionalities from -# `centos-art.sh' script execution environment. -# -# Copyright (C) 2009-2013 The CentOS Project -# -# 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. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function cli_unsetFunctions { - - # Define export id used to retrive function files. This is the - # same export id used to export functions without the directory - # part. - local EXPORTID=$(basename "$1") - - # Verify suffix value used to retrive function files. Assuming no - # suffix value is passed as second argument to this function, use - # the function name value (CLI_FUNCNAME) as default value. - if [[ $EXPORTID == '' ]];then - cli_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 - # `cli_exportFunctions'. Be sure to limit the list to function - # names that start with the suffix specified only. - local FUNCDEF='' - local FUNCDEFS=$(declare -F | gawk '{ print $3 }' | egrep "^${EXPORTID}") - - # Unset function names from current execution environment. - for FUNCDEF in $FUNCDEFS;do - unset -f $FUNCDEF - done - -}