From fbd795051a9059b3688cb9e72d9208eaa90eaf17 Mon Sep 17 00:00:00 2001 From: Alain Reguera Delgado Date: Jun 09 2011 03:10:24 +0000 Subject: Add docbook_getEntities.sh. --- diff --git a/Scripts/Functions/Help/Backends/Docbook/docbook_getEntities.sh b/Scripts/Functions/Help/Backends/Docbook/docbook_getEntities.sh new file mode 100755 index 0000000..526c6ae --- /dev/null +++ b/Scripts/Functions/Help/Backends/Docbook/docbook_getEntities.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# +# docbook_getEntities.sh -- This function explores docbook's directory +# structure, takes file paths and transforms them into their related +# entity parts. +# +# Copyright (C) 2009, 2010, 2011 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function docbook_getEntities { + + # Define short options. + local ARGSS='' + + # Define long options. + local ARGSL='name,path,pattern:' + + # Initialize arguments with an empty value and set it as local + # variable to this function scope. + local ARGUMENTS='' + + # Initialize entity related variable as local to avoid conflicts + # outside this function scope. + local ENTITY_NAMES='' + local ENTITY_PATHS='' + + # Initialize name flag (`--name'). This flag specifies whether to + # retrive the name part of the entity or not. + local FLAG_NAME='false' + + # Initialize path flag (`--path'). This flag specifies whether to + # retrive the name part of the entity or not. + local FLAG_PATH='false' + + # Initialize pattern flag (`--pattern'). This flag specifies the + # regular expression pattern applied to docbook list of files. By + # default no reduction is applied to docbook list of files (i.e., + # all docbook files are printed out). + local FLAG_PATTERN='' + + # Redefine ARGUMENTS variable using current positional parameters. + cli_parseArgumentsReDef "$@" + + # Redefine ARGUMENTS variable using getopt output. + cli_parseArguments + + # Redefine positional parameters using ARGUMENTS variable. + eval set -- "$ARGUMENTS" + + # Look for options passed through positional parameters. + while true; do + + case "$1" in + + --name ) + FLAG_NAME='true' + shift 1 + ;; + + --path ) + FLAG_PATH='true' + shift 1 + ;; + + --pattern ) + FLAG_PATTERN="$2" + shift 2 + ;; + + -- ) + shift 1 + break + + esac + + done + + # Build list of all docbook files inside docbook directory + # structure. + local FILE='' + local FILES=$(cli_getFilesList ${@} --pattern="${FLAG_PATTERN}.*\.${FLAG_BACKEND}" --type='f') + + # Loop through all docbook files under docbook directory structure + # to retrive both entity names and entity relative paths. + for FILE in $FILES;do + + # Build entity's name. + ENTITY_NAME=$(echo $FILE | cut -d/ -f 9- \ + | sed -r 's!/!-!'g | tr '[:upper:]' '[:lower:]' \ + | sed "s/\.${FLAG_BACKEND}$//") + + # Build entity's relative path. + ENTITY_PATH=$(echo $FILE | sed -r "s!${MANUAL_BASEDIR}/Entities/!!") + + # Output entity information as specified by options. When no + # option is specified the entity full definition is output. + if [[ $FLAG_NAME == 'true' ]];then + echo "&${ENTITY_NAME};" + elif [[ $FLAG_PATH == 'true' ]];then + echo ${ENTITY_PATH} + else + echo ${ENTITY_NAME} ${ENTITY_PATH} \ + | gawk '{ printf "\t\n", $1, $2}' + fi + + done + +}