diff --git a/Scripts/Bash/Functions/Manual/help.sh b/Scripts/Bash/Functions/Manual/help.sh deleted file mode 100755 index f0f33d3..0000000 --- a/Scripts/Bash/Functions/Manual/help.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -# -# help.sh -- This function provides documentation features to -# centos-art.sh script. Here we initialize documentation variables and -# call help_getActions functions. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help { - - # Define documentation base directory structure. - MANUALS_DIR[0]='/home/centos/artwork/trunk/Manuals' - MANUALS_DIR[1]=${MANUALS_DIR[0]}/$(cli_getCurrentLocale) - MANUALS_DIR[2]=${MANUALS_DIR[1]}/Texinfo/Repository - MANUALS_DIR[3]=${MANUALS_DIR[1]}/Info/Repository - MANUALS_DIR[4]=${MANUALS_DIR[1]}/Html/Repository - MANUALS_DIR[5]=${MANUALS_DIR[1]}/Plaintext/Repository - - # Define template directory for texinfo files. - MANUALS_DIR[6]=${MANUALS_DIR[0]}/en/Texinfo/Tpl - - # Define location for texinfo files. - MANUALS_FILE[1]=${MANUALS_DIR[2]}/repository.texi - MANUALS_FILE[2]=${MANUALS_DIR[2]}/repository-chapter-menu.texi - MANUALS_FILE[3]=${MANUALS_DIR[2]}/repository-chapter-nodes.texi - - # Define location for texinfo output files. - MANUALS_FILE[4]=${MANUALS_DIR[3]}/repository.info - MANUALS_FILE[5]=${MANUALS_DIR[5]}/repository.txt - - # Define chapter's file names. - MANUALS_FILE[6]=chapter.texi - MANUALS_FILE[7]=chapter-intro.texi - MANUALS_FILE[8]=chapter-menu.texi - MANUALS_FILE[9]=chapter-nodes.texi - - # Define texinfo template to initialize new sections. - MANUALS_FILE[10]=${MANUALS_DIR[6]}/repository-chapter-section.texi - MANUALS_FILE[11]=${MANUALS_DIR[2]}/repository-chapter-index.texi - - # Define documentation entry. - ENTRY=$(help_getEntry) - - # Define directory used to store chapter's documentation entries. - # At this point, we need to take a desition about - # documentation-design, in order to answer the question: How do we - # assign chapters, sections and subsections automatically, based - # on the repository structure? - # - # One solution would be: to use three chapters only to represent - # the repository's first level structure (i.e., trunk, - # branches, and tags) and handle everything else as sections. Sub - # and subsub section will not have their own files, they will be - # written inside section files instead. - ENTRYCHAPTER=$(echo $ENTRY | cut -d / -f-10) - - # Define chapter name for this documentation entry. - CHAPTERNAME=$(basename $ENTRYCHAPTER) - - # Initialize documentation functions and path patterns. - help_getActions - -} diff --git a/Scripts/Bash/Functions/Manual/help_checkChapter.sh b/Scripts/Bash/Functions/Manual/help_checkChapter.sh deleted file mode 100755 index 6422bac..0000000 --- a/Scripts/Bash/Functions/Manual/help_checkChapter.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# -# help_checkChapter.sh -- This function checks chapter structure. If -# it doesn't exist, create it. Inside CentOS Artwork Repository -# chapters are the base structure used to organize documentation. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_checkChapter { - - # Check chapter's directory existence. - if [[ ! -d $ENTRYCHAPTER ]];then - - cli_printMessage "`gettext "The following documentation chapter will be created:"`" - cli_printMessage "$ENTRYCHAPTER" "AsResponseLine" - cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" - - help_updateChaptersFiles - help_updateChaptersMenu - help_updateChaptersNodes - - fi - -} diff --git a/Scripts/Bash/Functions/Manual/help_checkEntry.sh b/Scripts/Bash/Functions/Manual/help_checkEntry.sh deleted file mode 100755 index 4ad11d0..0000000 --- a/Scripts/Bash/Functions/Manual/help_checkEntry.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# -# help_checkEntry.sh -- This function checks the documentation entry -# existence. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_checkEntry { - - # Check entry to edit and create it if it doesn't exist. - if [[ ! -f $ENTRY ]];then - - cli_printMessage "`gettext "The following documentation section will be created:"`" - cli_printMessage "$ENTRY" "AsResponseLine" - cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" - - help_createEntry - - fi - -} diff --git a/Scripts/Bash/Functions/Manual/help_checkLanguageLayout.sh b/Scripts/Bash/Functions/Manual/help_checkLanguageLayout.sh deleted file mode 100755 index e75b9e4..0000000 --- a/Scripts/Bash/Functions/Manual/help_checkLanguageLayout.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# -# help_checkLanguageLayout.sh -- This function checks the language -# layout used to store texinfo documentation inside CentOS Artwork -# Repository. If the language layout doesn't exists inside the -# documentation structure, ask the user to create it. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_checkLanguageLayout { - - if [[ ! -d ${MANUALS_DIR[2]} ]];then - - cli_printMessage "`gettext "The following documentation entry will be created:"`" - cli_printMessage "${MANUALS_DIR[2]}" "AsResponseLine" - cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" - - help_createLanguageLayout - cli_commitRepoChanges - - fi - -} diff --git a/Scripts/Bash/Functions/Manual/help_createEntry.sh b/Scripts/Bash/Functions/Manual/help_createEntry.sh deleted file mode 100755 index 820ffc5..0000000 --- a/Scripts/Bash/Functions/Manual/help_createEntry.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -# help_createEntry.sh -- This function creates a new documentation -# entry based on action value (ACTIONVAL). -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_createEntry { - - # Check chapter structure for this entry. - help_checkChapter - - # Update chapter-menu for this entry. - help_updateMenu - - # Update chapter-nodes (based on chapter-menu). - help_updateNodes - -} diff --git a/Scripts/Bash/Functions/Manual/help_createLanguageLayout.sh b/Scripts/Bash/Functions/Manual/help_createLanguageLayout.sh deleted file mode 100755 index a194ad8..0000000 --- a/Scripts/Bash/Functions/Manual/help_createLanguageLayout.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash -# -# help_createLanguageLayout.sh -- This function creates texinfo's main -# documentation structure for an specific language. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- - -function help_createLanguageLayout { - - # Define variables as local to avoid conflicts outside - local COUNTER=0 - local MESSAGE='' - - # Initialize translation markers for texinfo manual template. - local DOCTPL[0]="`gettext "Set the document's title"`" - local DOCTPL[1]="`gettext "Set the document's subtitle"`" - local DOCTPL[2]="`gettext "Set the document's description"`" - local DOCTPL[3]="`gettext "Set the document's author"`" - - # Request texinfo document initial information. Since the main - # texinfo documentation file (repository.texi) requires language - # specific values (e.g., document title, subtitle, description, - # author, etc.) before they can be used, there is no way to create - # those files automatically without requesting the user for those - # initial information on his/her own language. The requesting - # process is done in English language. - for MESSAGE in "${DOCTPL[@]}";do - cli_printMessage "`gettext "Step"` ${COUNTER}: $MESSAGE:" "AsRequestLine" - read DOCTPL[${COUNTER}] - if [[ ! $DOCTPL[${COUNTER}] =~ '[[:print:]]+' ]];then - cli_printMessage "`gettext "The string entered isn't valid."`" - cli_printMessage "$(caller)" "AsToKnowMoreLine" - fi - COUNTER=$(($COUNTER + 1)) - done - - # At this point all information required to build texinfo document - # has been collected. Leave a message and start creating texinfo - # files based on template. - local LANGNAME=$(cli_getLangName $(cli_getCurrentLocale)) - - # Create language directory to store texinfo document structure. - if [[ ! -d ${MANUALS_DIR[2]} ]];then - mkdir -p ${MANUALS_DIR[2]} - fi - - # Fill texinfo template with entered values and store the result - # as new texinfo document structure. - cat ${MANUALS_DIR[6]}/repository.texi \ - | sed -r "s!=TITLE=!${DOCTPL[0]}!g" \ - | sed -r "s!=SUBTITLE=!${DOCTPL[1]}!g" \ - | sed -r "s!=DESCRIPTION=!${DOCTPL[2]}!g" \ - | sed -r "s!=AUTHOR=!${DOCTPL[3]}!g" \ - | sed -r "s!=LANGUAGE=!$(cli_getLangCodes $(cli_getCurrentLocale))!g" \ - > ${MANUALS_DIR[2]}/repository.texi - - # Copy menu and nodes from template to texinfo document structure. - cp ${MANUALS_DIR[6]}/$(basename ${MANUALS_FILE[2]}) ${MANUALS_DIR[2]}/ - cp ${MANUALS_DIR[6]}/$(basename ${MANUALS_FILE[3]}) ${MANUALS_DIR[2]}/ - cp ${MANUALS_DIR[6]}/$(basename ${MANUALS_FILE[11]}) ${MANUALS_DIR[2]}/ - - # Translate English words. As we are creating texinfo - # documentation from an English template, it is needed to - # translate some words from English to the current language we are - # creating texinfo documentation for. - sed -r -i "s!Index!`gettext "Index"`!" ${MANUALS_FILE[11]} ${MANUALS_FILE[2]} - - # Output action message. - cli_printMessage "`eval_gettext "The \\\"\\\$LANGNAME\\\" documentation structure has been created."`" - -} diff --git a/Scripts/Bash/Functions/Manual/help_editEntry.sh b/Scripts/Bash/Functions/Manual/help_editEntry.sh deleted file mode 100755 index faa3d03..0000000 --- a/Scripts/Bash/Functions/Manual/help_editEntry.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -# -# help_editEntry.sh -- This function edits documentation entry based -# on entry pattern. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_editEntry { - - # Check chapter existence. In order to create/edit a section the - # chapter of that section needs to exist first. If the chapter - # hasn't been created, where are you going to store the section - # files? Put the chapter's checker here. - help_checkChapter - - # Check section existence. - help_checkEntry - - # Use default text editor to edit the documentation entry. - eval $EDITOR $ENTRY - - # Re-build output files to propagate recent changes. - help_updateOutputFiles - -} diff --git a/Scripts/Bash/Functions/Manual/help_getActions.sh b/Scripts/Bash/Functions/Manual/help_getActions.sh deleted file mode 100755 index 0316987..0000000 --- a/Scripts/Bash/Functions/Manual/help_getActions.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -# -# help_getActions.sh -- This function initializes documentation -# functionalities, using action value as reference. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_getActions { - - help_checkLanguageLayout - - case $ACTIONNAM in - - --search ) - help_searchIndex - ;; - - --edit ) - help_editEntry - ;; - - --remove ) - help_removeEntry - ;; - - --update ) - help_updateOutputFiles - ;; - - --read ) - help_searchNode - ;; - - * ) - cli_printMessage "`gettext "The option provided is not valid."`" - cli_printMessage "$(caller)" "AsToKnowMoreLine" - ;; - - esac - -} diff --git a/Scripts/Bash/Functions/Manual/help_getEntry.sh b/Scripts/Bash/Functions/Manual/help_getEntry.sh deleted file mode 100755 index 5b83bd4..0000000 --- a/Scripts/Bash/Functions/Manual/help_getEntry.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# -# help_getEntry.sh -- This function builds a documentation entry based -# on action value (ACTIONVAL) variable. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_getEntry { - - # Define variables as local to avoid conflicts outside. - local DIR='' - local FILE='' - local ENTRY='' - - # Build directory for documenation entry. - DIR=$(echo $ACTIONVAL | sed -r 's!^/home/centos/artwork/!!') - DIR=$(dirname $DIR) - DIR=${MANUALS_DIR[2]}/$DIR - - # Build file for documentation entry. - FILE=$(basename $ACTIONVAL).texi - - # Combine both directory (DIR) and file (FILE) to build entry's - # absolute path. When the entry's absolute path is built for the - # current location, the string "." is returned by dirname and used - # as current directory to store the .texi file. This is not - # desirable because we are using absolute path already and the "." - # string adds another level in the path (e.g., - # /home/centos/artwork/trunk/Manuals/Texinfo/en/./trunk/chapter.texi). - # This extra level in the path confuses the script when it tries - # to find out where the chapter's directory is. In the example - # above, the chapter's directory is "trunk/" not "./". So, remove - # the string './' from entry's absolute path in order to build the - # entry's absolute path correctly. - ENTRY=$(echo $DIR/$FILE | sed -r 's!\./!!') - - # Re-define documentation entry if it is the chapter entry. - # TODO: automate the verification, in order to accept any other - # structure in the first level. - if [[ $ENTRY =~ "(trunk|branches|tags)\.texi$" ]];then - ENTRY=$(echo $ENTRY \ - | sed -r "s/(trunk|branches|tags)\.texi$/\1\/${MANUALS_FILE[7]}/") - fi - - # Output entry's absolute path. - echo $ENTRY - -} diff --git a/Scripts/Bash/Functions/Manual/help_getNode.sh b/Scripts/Bash/Functions/Manual/help_getNode.sh deleted file mode 100755 index 8799ba4..0000000 --- a/Scripts/Bash/Functions/Manual/help_getNode.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -# -# help_getNode.sh -- This function cleans up the action value -# (ACTIONVAL) directory to make a node name from it. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_getNode { - - local NODE=$(echo "$ACTIONVAL" \ - | sed -r 's!^/home/centos/artwork/!!' \ - | sed -r 's!/! !g' | sed -r 's!^[[:space:]]+!!') - - echo "$NODE" -} - diff --git a/Scripts/Bash/Functions/Manual/help_removeEntry.sh b/Scripts/Bash/Functions/Manual/help_removeEntry.sh deleted file mode 100755 index 6dc779d..0000000 --- a/Scripts/Bash/Functions/Manual/help_removeEntry.sh +++ /dev/null @@ -1,143 +0,0 @@ -#!/bin/bash -# -# help_removeEntry.sh -- This function removes a documentation entry -# from your working copy documentation structure. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_removeEntry { - - # Define variables as local to avoid conflicts outside. - local ENTRIES='' - local ENTRIES_COUNTER=0 - local LOCATION='' - - # Check if the entry has been already removed. - if [[ ! -f $ENTRY ]];then - cli_printMessage "`gettext "The following entry doesn't exist:"`" - cli_printMessage "$ENTRY" "AsResponseLine" - cli_printMessage "$(caller)" "AsToKnowMoreLine" - fi - - # Define entries. Start with the one being processed currently. - ENTRIES=$ENTRY - - # Define root location to look for entries. - LOCATION=$(echo $ENTRY | sed -r 's!\.texi$!!') - - # Re-define location to match the chapter's root directory. This - # applies when you try to remove the whole chapter from the - # working copy (e.g., centos-art help --remove=/home/centos/artwork/trunk/). - if [[ $ENTRY =~ "${MANUALS_FILE[7]}$" ]];then - LOCATION=$(dirname $ENTRY) - fi - - # Look for dependent entries. In this context, dependent entries - # are all files ending in .texi which have a directory name that - # matches the file name (without .texi extension) of the entry - # being processed currently. See LOCATION default definition - # above. If location directory doesn't exist it is probably - # because there is no dependent entries. - if [[ -d $LOCATION ]];then - for ENTRY in $(find $LOCATION -name '*.texi');do - ENTRIES="$ENTRIES $ENTRY $(dirname $ENTRY)" - ENTRIES_COUNTER=$(($ENTRIES_COUNTER + 1)) - done - fi - - # Remove duplicated lines from entries list. - ENTRIES=$(echo "$ENTRIES" | tr ' ' "\n" | sort -r | uniq) - - # Show a verification message before doing anything. - cli_printMessage "`ngettext "The following entry will be removed:" \ - "The following entries will be removed:" \ - $ENTRIES_COUNTER`" - - # Show list of affected entries. - for ENTRY in $ENTRIES;do - cli_printMessage "$ENTRY" "AsResponseLine" - done - - cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" - - # Re-define ENTRY using affected entries as reference. - for ENTRY in $ENTRIES;do - - # Show which entry is being removed. - cli_printMessage "$ENTRY" "AsRemovingLine" - - # Remove documentation entry. At this point, documentation - # entry can be under version control or not versioned at all. - # Here we need to decide how to remove documentation entries - # based on whether they are under version control or not. - if [[ "$(cli_getRepoStatus "$ENTRY")" == ' ' ]];then - - # Documentation entry is under version control and clean - # of changes. Only if documentation entry is clean of - # changes we can mark it for deletion. So use subversion's - # `del' command to do so. - eval svn del "$ENTRY" --quiet - - elif [[ "$(cli_getRepoStatus "$ENTRY")" == '?' ]] \ - || [[ "$(cli_getRepoStatus "$ENTRY")" == '' ]] ;then - - # Documentation entry is not under version control, so we - # don't care about changes inside unversioned - # documentation entries at all. If you say centos-art.sh - # script to remove an unversion documentation entry it - # will do so, using convenctional `rm' command. - if [[ -d "$ENTRY" ]];then - rm -r "$ENTRY" - else - rm "$ENTRY" - fi - - else - - # Documentation entry is under version control and it does - # have changes. We don't remove a versioned documentation - # entry with changes. So print a message about it and stop - # script execution. - cli_printMessage "`gettext "The documentation entry cannot be removed."`" 'AsErrorLine' - cli_printMessage "$(caller)" 'AsToKnowMoreLine' - - fi - - # Update section's menu and nodes to reflect the fact that - # documentation entry has been removed. - help_updateMenu "remove-entry" - help_updateNodes - - done - - # Update chapter's menu and nodes in the master texinfo document. - # This is mainly applied when one of the chapters (e.g., trunk/, - # tags/, or branches/) is removed. - if [[ ! -d $ENTRYCHAPTER ]];then - help_updateChaptersMenu 'remove-entry' - help_updateChaptersNodes - fi - - # Update manuals' related output files. - help_updateOutputFiles - -} diff --git a/Scripts/Bash/Functions/Manual/help_searchIndex.sh b/Scripts/Bash/Functions/Manual/help_searchIndex.sh deleted file mode 100644 index c18db53..0000000 --- a/Scripts/Bash/Functions/Manual/help_searchIndex.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# -# help_searchIndex.sh -- This function does an index search inside the -# info document. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_searchIndex { - - # Define search pattern format. - local PATTERN='^[[:alnum:],]+$' - - # Define default search string. - local SEARCH='' - - # Define short options we want to support. - local ARGSS="" - - # Define long options we want to support. - local ARGSL="filter:" - - # Parse arguments using getopt(1) command parser. - cli_doParseArguments - - # reset positional parameters using output from (getopt) argument - # parser. - eval set -- "$ARGUMENTS" - - # Define action to take for each option passed. - while true; do - case "$1" in - --filter ) - SEARCH="$2" - shift 2 - ;; - * ) - break - esac - done - - # Re-define default SEARCH value. If the search string is not - # provided as `--filter' argument, ask user to provide one. - if [[ ! $SEARCH =~ $PATTERN ]];then - cli_printMessage "`gettext "Enter the search pattern"`" "AsRequestLine" - read SEARCH - fi - - # Validate search string using search pattern. - if [[ ! "$SEARCH" =~ $PATTERN ]];then - cli_printMessage "`gettext "The search pattern is not valid."`" 'AsErrorLine' - cli_printMessage "$(caller)" "AsToKnowMoreLine" - fi - - # Perform index search inside documentation info file. - /usr/bin/info --index-search="$SEARCH" --file=${MANUALS_FILE[4]} - -} diff --git a/Scripts/Bash/Functions/Manual/help_searchNode.sh b/Scripts/Bash/Functions/Manual/help_searchNode.sh deleted file mode 100755 index 0b20a6c..0000000 --- a/Scripts/Bash/Functions/Manual/help_searchNode.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -# help_searchNode.sh -- This function does a node search inside the -# info document. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_searchNode { - - # Check entry inside documentation structure. If the entry - # exits use the info reader to open the info file at the - # specified node. Otherwise, ask the user for create it. - if [[ -f "$ENTRY" ]];then - /usr/bin/info --node="$(help_getNode)" --file=${MANUALS_FILE[4]} - else - help_editEntry - fi - -} diff --git a/Scripts/Bash/Functions/Manual/help_updateChaptersFiles.sh b/Scripts/Bash/Functions/Manual/help_updateChaptersFiles.sh deleted file mode 100755 index d857e36..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateChaptersFiles.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# -# help_updateChaptersFiles.sh -- This function updates chapter related -# files. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateChaptersFiles { - - # Define chapter's generic structure. - local CHAPTERBODY="\ - @node $CHAPTERNAME - @chapter $CHAPTERNAME - @cindex $(echo $CHAPTERNAME | tr '[[:upper:]]' '[[:lower:]]') - @include $CHAPTERNAME/${MANUALS_FILE[7]} - @include $CHAPTERNAME/${MANUALS_FILE[8]} - @include $CHAPTERNAME/${MANUALS_FILE[9]}" - - # Remove any space/tabs at the begining of @... lines. - CHAPTERBODY=$(echo "$CHAPTERBODY" | sed -r 's!^[[:space:]]+@!@!') - - # Create directory to store chapter files. - if [[ ! -d $ENTRYCHAPTER ]];then - mkdir $ENTRYCHAPTER - fi - - # Create files to store chapter information. If chapter files - # already exist, they will be re-written and any previous - # information inside them will be lost. - echo "$CHAPTERBODY" > $ENTRYCHAPTER/${MANUALS_FILE[6]} - echo "" > $ENTRYCHAPTER/${MANUALS_FILE[8]} - echo "" > $ENTRYCHAPTER/${MANUALS_FILE[9]} - - # Initialize chapter instroduction using template file. - cp ${MANUALS_DIR[6]}/repository-chapter-intro.texi $ENTRYCHAPTER/${MANUALS_FILE[7]} - sed -r -i \ - -e "s!=GOALS=!`gettext "Goals"`!g" \ - -e "s!=USAGE=!`gettext "Usage"`!g" \ - -e "s!=CONCEPTS=!`gettext "Concepts"`!g" \ - -e "s!=DIRECTORIES=!`gettext "Directories"`!g" \ - $ENTRYCHAPTER/${MANUALS_FILE[7]} -} diff --git a/Scripts/Bash/Functions/Manual/help_updateChaptersMenu.sh b/Scripts/Bash/Functions/Manual/help_updateChaptersMenu.sh deleted file mode 100755 index d3a61b4..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateChaptersMenu.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -# -# help_updateChaptersMenu.sh - This function updates chapter menu. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateChaptersMenu { - - local ACTION=$1 - local MENUCHAPTERS='' - - # Build menu of chapters. The Index node is not included as other - # nodes are. The Index node is defined insde the master texinfo - # file (repository.texi). To create the final .info file - # correctly, the Index line in the menu should remain, even no - # other node exist. - if [[ -f ${MANUALS_FILE[2]} ]];then - MENUCHAPTERS=$(cat ${MANUALS_FILE[2]} \ - | egrep -v "^(@(end )?menu$|\* `gettext "Index"`::.*)$") - fi - - # Re-defined menu of chapters based on action. - case $ACTION in - 'remove-entry' ) - # Remove chapter from menu. - MENUCHAPTERS=$(echo "$MENUCHAPTERS" \ - | egrep -v "^\* ${CHAPTERNAME}::[[:print:]]*$") - ;; - 'update-entry' | * ) - # Update chapter menu using texinfo format. - MENUCHAPTERS="$MENUCHAPTERS - * $CHAPTERNAME::" - ;; - esac - - # Remove opening spaces/tabs and empty line from the menu of - # chapters. Empty lines may occur the first time the menu of - # chapters is created. - MENUCHAPTERS=$(echo "$MENUCHAPTERS" | sed -r 's!^[[:space:]]+!!' \ - | egrep -v '^[[:space:]]*$') - - # Organize menu of chapters alphabetically and verify that no - # duplicated line be included on the list. - MENUCHAPTERS=$(echo "$MENUCHAPTERS" | sort | uniq ) - - # Give format to final menu output. - MENUCHAPTERS="@menu - $MENUCHAPTERS - * `gettext "Index"`:: - @end menu" - - # Strip opening space/tabs from final menu of chapters. - MENUCHAPTERS=$(echo "$MENUCHAPTERS" | sed -r 's!^[[:space:]]+!!' \ - | egrep -v '^[[:space:]]*$') - - # Dump organized menu of chapters into file. - echo "$MENUCHAPTERS" > ${MANUALS_FILE[2]} - -} diff --git a/Scripts/Bash/Functions/Manual/help_updateChaptersNodes.sh b/Scripts/Bash/Functions/Manual/help_updateChaptersNodes.sh deleted file mode 100755 index 2459151..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateChaptersNodes.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# -# help_updateChaptersNodes.sh - This function updates nodes of -# chapters based on menu of chapters. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateChaptersNodes { - - # Build list "nodes of chapters" based on menu of chapters. - local CHAPTERNODES=$(cat ${MANUALS_FILE[2]} \ - | egrep -v '^@(end )?menu$' \ - | egrep -v "^\* `gettext "Index"`::[[:print:]]*$" \ - | sed -r 's!^\* !!' | sed -r 's!::[[:print:]]*$!!g' \ - | sed -r 's! !_!g' | sort | uniq ) - - # Build list of texinfo inclusions to load chapters' nodes. - local FILENODE=$(\ - for CHAPTERNODE in $CHAPTERNODES;do - - INCL=$(echo $CHAPTERNODE | sed -r "s!(${CHAPTERNODE})!\1/chapter\.texi!") - - # Output inclusion line using texinfo format. - echo "@include $INCL" - - done) - - # Dump organized nodes of chapters into file. - echo "$FILENODE" > ${MANUALS_FILE[3]} - -} diff --git a/Scripts/Bash/Functions/Manual/help_updateMenu.sh b/Scripts/Bash/Functions/Manual/help_updateMenu.sh deleted file mode 100755 index 625a04d..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateMenu.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash -# -# help_updateMenu.sh -- This function updates menu lines inside -# texinfo chapters. If this function is called with the -# 'remove-entry' string as first argument, then the menu line related -# to the entry being processed is removed. If this function is called -# with the 'update-entry' string as first argument, then the menu line -# related to the entry being processed is added to the menu. If no -# argument is passed to this function, the 'update-entry' action is -# assumed. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateMenu { - - # Specify which action to do inside chapter's menu. - local ACTION="$1" - - # Build the menu line related to the entry being processed - # currently. - local MENULINE=$(echo "$ENTRY" \ - | cut -d / -f10- \ - | tr '/' ' ' \ - | sed -r "s/(${MANUALS_FILE[7]}|\.texi)$//") - - # Give format to menu line using texinfo style. - MENULINE="* $MENULINE::" - - # Define chapter's menu. Remove `@menu', `@end menu', and empty lines - # from output. - local MENU=$(cat $ENTRYCHAPTER/${MANUALS_FILE[8]} \ - | egrep -v '^[[:space:]]*$' | egrep -v '^@(end )?menu') - - # Re-defined chapter's menu based on action. - case $ACTION in - 'remove-entry' ) - # Remove menu line from chapter's menu. - MENU=$(echo "$MENU" | egrep -v "$MENULINE") - ;; - 'update-entry' | * ) - # Add menu line to chapter's menu. This is the default - # behaivour if no argument is passed to help_updateMenu - # function. - MENU="$MENU - $MENULINE" - ;; - esac - - # Organize menu alphabetically, remove empty and duplicated lines. - # At this point, empty line may occur the first time the menu is - # created, don't let them to scape. - MENU=$(echo "$MENU" | egrep -v '^[[:space:]]*$' | sort | uniq ) - - # Rebuild chapter's menu structure adding '@menu' and '@end menu' - # lines back in menu. - MENU="@menu - $MENU - @end menu" - - # Remove opening spaces/tabs from final menu structure. - MENU=$(echo "$MENU" | sed -r 's!^[[:space:]]+!!g') - - # Dump final menu structure back into chapter's menu file. - echo "$MENU" > $ENTRYCHAPTER/${MANUALS_FILE[8]} - -} diff --git a/Scripts/Bash/Functions/Manual/help_updateNodes.sh b/Scripts/Bash/Functions/Manual/help_updateNodes.sh deleted file mode 100755 index 4e127ea..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateNodes.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -# -# help_updateNodes.sh -- This function updates chapter's nodes -# definition using the chapter's menu as reference. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateNodes { - - # Retrive nodes' entries from chapter-menu.texi file. - local NODES=$(cat $ENTRYCHAPTER/${MANUALS_FILE[8]} \ - | sed -r 's!^\* !!' | sed -r 's!:{1,2}.*$!!g' \ - | egrep -v '^@(end )?menu$' | sed -r 's! !:!g' | sort | uniq) - - # Re-build node structure based on menu information. - for NODE in $NODES;do - - NODE=$(echo $NODE | sed -r 's!:! !g') - SECT=$(echo $NODE | sed -r 's! !/!g') - INCL=$(echo $NODE | sed -r 's! !/!g').texi - CIND=$(echo $NODE) - - # Create an emtpy directory to store texinfo files. - if [[ ! -d ${MANUALS_DIR[2]}/$(dirname $INCL) ]];then - mkdir -p ${MANUALS_DIR[2]}/$(dirname $INCL) - fi - - # Create texinfo section file using its template. - if [[ ! -f ${MANUALS_DIR[2]}/$INCL ]];then - - cp ${MANUALS_FILE[10]} ${MANUALS_DIR[2]}/$INCL - - # Translate template instance. - sed -r -i \ - -e "s!=GOALS=!`gettext "Goals"`!g" \ - -e "s!=USAGE=!`gettext "Usage"`!g" \ - -e "s!=DESCRIPTION=!`gettext "Description"`!g" \ - -e "s!=SEEALSO=!`gettext "See also"`!g" \ - ${MANUALS_DIR[2]}/$INCL - - fi - - # Output node information based on texinfo menu. - echo "@node $NODE" - echo "@section $SECT" - echo "@cindex $CIND" - echo "@include $INCL" - echo "" - - # Dump node information into chapter node file. - done > $ENTRYCHAPTER/${MANUALS_FILE[9]} - -} - diff --git a/Scripts/Bash/Functions/Manual/help_updateOutputFileHtml.sh b/Scripts/Bash/Functions/Manual/help_updateOutputFileHtml.sh deleted file mode 100755 index ef961a4..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateOutputFileHtml.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# -# help_updateOutputFileHtml.sh -- This function updates manuals' html -# related output files. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateOutputFileHtml { - - # Output action message - cli_printMessage "`gettext "Updating manual's html output"`" 'AsResponseLine' - - # Check html output directory - [[ ! -d ${MANUALS_DIR[4]} ]] && mkdir -p ${MANUALS_DIR[4]} - - # Add html output directory into directory stack to make it the - # current working directory. Otherwise texi2html may produce - # incorrect paths to images included. - pushd ${MANUALS_DIR[4]} > /dev/null - - # Update html files. Use texi2html to export from texinfo file - # format to html using CentOS Web default visual style. - texi2html ${MANUALS_FILE[1]} --output=${MANUALS_DIR[4]} --split section \ - --nosec-nav \ - --css-include=/home/centos/artwork/trunk/Identity/Models/Css/Texi2html/stylesheet.css \ - -I=/home/centos/artwork - - # Apply html transformations. Html transformations rely on - # Texi2html default html output. The main goal of these html - # transformations is to build specific html structures that match - # specific css definitions. This way we extend the visual style of - # Texi2html default html output. - sed -r -i \ - -f /home/centos/artwork/trunk/Identity/Models/Css/Texi2html/transformations.sed \ - ${MANUALS_DIR[4]}/*.html - - # Remove html output directory from directory stack. - popd > /dev/null - -} diff --git a/Scripts/Bash/Functions/Manual/help_updateOutputFileInfo.sh b/Scripts/Bash/Functions/Manual/help_updateOutputFileInfo.sh deleted file mode 100755 index 43f7951..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateOutputFileInfo.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# -# help_updateOutputFileInfo.sh -- This function updates manual's info -# output related file. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateOutputFileInfo { - - # Output action message. - cli_printMessage "`gettext "Updating manual's info output"`" 'AsResponseLine' - - # Check info output directory. - [[ ! -d ${MANUALS_DIR[3]} ]] && mkdir -p ${MANUALS_DIR[3]} - - # Update info file. - /usr/bin/makeinfo ${MANUALS_FILE[1]} --output=${MANUALS_FILE[4]} - - # Check info file. If the info file was not created then there are - # errors to fix. - if [[ ! -f ${MANUALS_FILE[4]} ]];then - cli_printMessage "$(caller)" "AsToKnowMoreLine" - fi - - # Compress info file. - bzip2 -f ${MANUALS_FILE[4]} - -} diff --git a/Scripts/Bash/Functions/Manual/help_updateOutputFilePlaintext.sh b/Scripts/Bash/Functions/Manual/help_updateOutputFilePlaintext.sh deleted file mode 100755 index b6bdb1b..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateOutputFilePlaintext.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# -# help_updateOutputFilePlaintext.sh -- This function updates manuals' -# plaintext related output file. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateOutputFilePlaintext { - - # Output action message. - cli_printMessage "`gettext "Updating manual's plaintext output"`" 'AsResponseLine' - - # Check plaintext output directory. - [[ ! -d ${MANUALS_DIR[5]} ]] && mkdir -p ${MANUALS_DIR[5]} - - # Update plaintext output directory. - /usr/bin/makeinfo ${MANUALS_FILE[1]} --output=${MANUALS_FILE[5]} \ - --plaintext - -} diff --git a/Scripts/Bash/Functions/Manual/help_updateOutputFiles.sh b/Scripts/Bash/Functions/Manual/help_updateOutputFiles.sh deleted file mode 100755 index 6a95ed0..0000000 --- a/Scripts/Bash/Functions/Manual/help_updateOutputFiles.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# -# help_updateOutputFiles.sh -- This function updates manuals' related -# output files. -# -# Copyright (C) 2009, 2010 Alain Reguera Delgado -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function help_updateOutputFiles { - - # Add division line to differentiate action output visually. - echo '----------------------------------------------------------------------' - - # Add the working copy root directory to directory stack to make - # path construction correctly. Otherwise, makeinfo may produce - # paths incorrectly. - pushd /home/centos/artwork > /dev/null - - help_updateOutputFileInfo - help_updateOutputFileHtml - help_updateOutputFilePlaintext - - # Remove the working copy root directory from directory stack. - popd > /dev/null - - # Re-define output variable in order for cli_commitRepoChanges - # functionality to receive the correct location to apply - # subversion commands. Inside `help' functionality, the correct - # place to commit changes is not the initial value of ACTIONVAL - # but the directory path where documentation changes take place - # under. - ACTIONVAL=${MANUALS_DIR[0]} - - # Update central repository. Be sure this is the last action - # you perform inside centos-art.sh script flow. - cli_commitRepoChanges - -} diff --git a/Scripts/Bash/Functions/Manual/manual.sh b/Scripts/Bash/Functions/Manual/manual.sh new file mode 100755 index 0000000..f0f33d3 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# +# help.sh -- This function provides documentation features to +# centos-art.sh script. Here we initialize documentation variables and +# call help_getActions functions. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help { + + # Define documentation base directory structure. + MANUALS_DIR[0]='/home/centos/artwork/trunk/Manuals' + MANUALS_DIR[1]=${MANUALS_DIR[0]}/$(cli_getCurrentLocale) + MANUALS_DIR[2]=${MANUALS_DIR[1]}/Texinfo/Repository + MANUALS_DIR[3]=${MANUALS_DIR[1]}/Info/Repository + MANUALS_DIR[4]=${MANUALS_DIR[1]}/Html/Repository + MANUALS_DIR[5]=${MANUALS_DIR[1]}/Plaintext/Repository + + # Define template directory for texinfo files. + MANUALS_DIR[6]=${MANUALS_DIR[0]}/en/Texinfo/Tpl + + # Define location for texinfo files. + MANUALS_FILE[1]=${MANUALS_DIR[2]}/repository.texi + MANUALS_FILE[2]=${MANUALS_DIR[2]}/repository-chapter-menu.texi + MANUALS_FILE[3]=${MANUALS_DIR[2]}/repository-chapter-nodes.texi + + # Define location for texinfo output files. + MANUALS_FILE[4]=${MANUALS_DIR[3]}/repository.info + MANUALS_FILE[5]=${MANUALS_DIR[5]}/repository.txt + + # Define chapter's file names. + MANUALS_FILE[6]=chapter.texi + MANUALS_FILE[7]=chapter-intro.texi + MANUALS_FILE[8]=chapter-menu.texi + MANUALS_FILE[9]=chapter-nodes.texi + + # Define texinfo template to initialize new sections. + MANUALS_FILE[10]=${MANUALS_DIR[6]}/repository-chapter-section.texi + MANUALS_FILE[11]=${MANUALS_DIR[2]}/repository-chapter-index.texi + + # Define documentation entry. + ENTRY=$(help_getEntry) + + # Define directory used to store chapter's documentation entries. + # At this point, we need to take a desition about + # documentation-design, in order to answer the question: How do we + # assign chapters, sections and subsections automatically, based + # on the repository structure? + # + # One solution would be: to use three chapters only to represent + # the repository's first level structure (i.e., trunk, + # branches, and tags) and handle everything else as sections. Sub + # and subsub section will not have their own files, they will be + # written inside section files instead. + ENTRYCHAPTER=$(echo $ENTRY | cut -d / -f-10) + + # Define chapter name for this documentation entry. + CHAPTERNAME=$(basename $ENTRYCHAPTER) + + # Initialize documentation functions and path patterns. + help_getActions + +} diff --git a/Scripts/Bash/Functions/Manual/manual_checkChapter.sh b/Scripts/Bash/Functions/Manual/manual_checkChapter.sh new file mode 100755 index 0000000..6422bac --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_checkChapter.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# +# help_checkChapter.sh -- This function checks chapter structure. If +# it doesn't exist, create it. Inside CentOS Artwork Repository +# chapters are the base structure used to organize documentation. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_checkChapter { + + # Check chapter's directory existence. + if [[ ! -d $ENTRYCHAPTER ]];then + + cli_printMessage "`gettext "The following documentation chapter will be created:"`" + cli_printMessage "$ENTRYCHAPTER" "AsResponseLine" + cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" + + help_updateChaptersFiles + help_updateChaptersMenu + help_updateChaptersNodes + + fi + +} diff --git a/Scripts/Bash/Functions/Manual/manual_checkEntry.sh b/Scripts/Bash/Functions/Manual/manual_checkEntry.sh new file mode 100755 index 0000000..4ad11d0 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_checkEntry.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# +# help_checkEntry.sh -- This function checks the documentation entry +# existence. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_checkEntry { + + # Check entry to edit and create it if it doesn't exist. + if [[ ! -f $ENTRY ]];then + + cli_printMessage "`gettext "The following documentation section will be created:"`" + cli_printMessage "$ENTRY" "AsResponseLine" + cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" + + help_createEntry + + fi + +} diff --git a/Scripts/Bash/Functions/Manual/manual_checkLanguageLayout.sh b/Scripts/Bash/Functions/Manual/manual_checkLanguageLayout.sh new file mode 100755 index 0000000..e75b9e4 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_checkLanguageLayout.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# +# help_checkLanguageLayout.sh -- This function checks the language +# layout used to store texinfo documentation inside CentOS Artwork +# Repository. If the language layout doesn't exists inside the +# documentation structure, ask the user to create it. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_checkLanguageLayout { + + if [[ ! -d ${MANUALS_DIR[2]} ]];then + + cli_printMessage "`gettext "The following documentation entry will be created:"`" + cli_printMessage "${MANUALS_DIR[2]}" "AsResponseLine" + cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" + + help_createLanguageLayout + cli_commitRepoChanges + + fi + +} diff --git a/Scripts/Bash/Functions/Manual/manual_createEntry.sh b/Scripts/Bash/Functions/Manual/manual_createEntry.sh new file mode 100755 index 0000000..820ffc5 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_createEntry.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# +# help_createEntry.sh -- This function creates a new documentation +# entry based on action value (ACTIONVAL). +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_createEntry { + + # Check chapter structure for this entry. + help_checkChapter + + # Update chapter-menu for this entry. + help_updateMenu + + # Update chapter-nodes (based on chapter-menu). + help_updateNodes + +} diff --git a/Scripts/Bash/Functions/Manual/manual_createLanguageLayout.sh b/Scripts/Bash/Functions/Manual/manual_createLanguageLayout.sh new file mode 100755 index 0000000..a194ad8 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_createLanguageLayout.sh @@ -0,0 +1,88 @@ +#!/bin/bash +# +# help_createLanguageLayout.sh -- This function creates texinfo's main +# documentation structure for an specific language. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- + +function help_createLanguageLayout { + + # Define variables as local to avoid conflicts outside + local COUNTER=0 + local MESSAGE='' + + # Initialize translation markers for texinfo manual template. + local DOCTPL[0]="`gettext "Set the document's title"`" + local DOCTPL[1]="`gettext "Set the document's subtitle"`" + local DOCTPL[2]="`gettext "Set the document's description"`" + local DOCTPL[3]="`gettext "Set the document's author"`" + + # Request texinfo document initial information. Since the main + # texinfo documentation file (repository.texi) requires language + # specific values (e.g., document title, subtitle, description, + # author, etc.) before they can be used, there is no way to create + # those files automatically without requesting the user for those + # initial information on his/her own language. The requesting + # process is done in English language. + for MESSAGE in "${DOCTPL[@]}";do + cli_printMessage "`gettext "Step"` ${COUNTER}: $MESSAGE:" "AsRequestLine" + read DOCTPL[${COUNTER}] + if [[ ! $DOCTPL[${COUNTER}] =~ '[[:print:]]+' ]];then + cli_printMessage "`gettext "The string entered isn't valid."`" + cli_printMessage "$(caller)" "AsToKnowMoreLine" + fi + COUNTER=$(($COUNTER + 1)) + done + + # At this point all information required to build texinfo document + # has been collected. Leave a message and start creating texinfo + # files based on template. + local LANGNAME=$(cli_getLangName $(cli_getCurrentLocale)) + + # Create language directory to store texinfo document structure. + if [[ ! -d ${MANUALS_DIR[2]} ]];then + mkdir -p ${MANUALS_DIR[2]} + fi + + # Fill texinfo template with entered values and store the result + # as new texinfo document structure. + cat ${MANUALS_DIR[6]}/repository.texi \ + | sed -r "s!=TITLE=!${DOCTPL[0]}!g" \ + | sed -r "s!=SUBTITLE=!${DOCTPL[1]}!g" \ + | sed -r "s!=DESCRIPTION=!${DOCTPL[2]}!g" \ + | sed -r "s!=AUTHOR=!${DOCTPL[3]}!g" \ + | sed -r "s!=LANGUAGE=!$(cli_getLangCodes $(cli_getCurrentLocale))!g" \ + > ${MANUALS_DIR[2]}/repository.texi + + # Copy menu and nodes from template to texinfo document structure. + cp ${MANUALS_DIR[6]}/$(basename ${MANUALS_FILE[2]}) ${MANUALS_DIR[2]}/ + cp ${MANUALS_DIR[6]}/$(basename ${MANUALS_FILE[3]}) ${MANUALS_DIR[2]}/ + cp ${MANUALS_DIR[6]}/$(basename ${MANUALS_FILE[11]}) ${MANUALS_DIR[2]}/ + + # Translate English words. As we are creating texinfo + # documentation from an English template, it is needed to + # translate some words from English to the current language we are + # creating texinfo documentation for. + sed -r -i "s!Index!`gettext "Index"`!" ${MANUALS_FILE[11]} ${MANUALS_FILE[2]} + + # Output action message. + cli_printMessage "`eval_gettext "The \\\"\\\$LANGNAME\\\" documentation structure has been created."`" + +} diff --git a/Scripts/Bash/Functions/Manual/manual_editEntry.sh b/Scripts/Bash/Functions/Manual/manual_editEntry.sh new file mode 100755 index 0000000..faa3d03 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_editEntry.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# +# help_editEntry.sh -- This function edits documentation entry based +# on entry pattern. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_editEntry { + + # Check chapter existence. In order to create/edit a section the + # chapter of that section needs to exist first. If the chapter + # hasn't been created, where are you going to store the section + # files? Put the chapter's checker here. + help_checkChapter + + # Check section existence. + help_checkEntry + + # Use default text editor to edit the documentation entry. + eval $EDITOR $ENTRY + + # Re-build output files to propagate recent changes. + help_updateOutputFiles + +} diff --git a/Scripts/Bash/Functions/Manual/manual_getActions.sh b/Scripts/Bash/Functions/Manual/manual_getActions.sh new file mode 100755 index 0000000..0316987 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_getActions.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# +# help_getActions.sh -- This function initializes documentation +# functionalities, using action value as reference. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_getActions { + + help_checkLanguageLayout + + case $ACTIONNAM in + + --search ) + help_searchIndex + ;; + + --edit ) + help_editEntry + ;; + + --remove ) + help_removeEntry + ;; + + --update ) + help_updateOutputFiles + ;; + + --read ) + help_searchNode + ;; + + * ) + cli_printMessage "`gettext "The option provided is not valid."`" + cli_printMessage "$(caller)" "AsToKnowMoreLine" + ;; + + esac + +} diff --git a/Scripts/Bash/Functions/Manual/manual_getEntry.sh b/Scripts/Bash/Functions/Manual/manual_getEntry.sh new file mode 100755 index 0000000..5b83bd4 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_getEntry.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# +# help_getEntry.sh -- This function builds a documentation entry based +# on action value (ACTIONVAL) variable. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_getEntry { + + # Define variables as local to avoid conflicts outside. + local DIR='' + local FILE='' + local ENTRY='' + + # Build directory for documenation entry. + DIR=$(echo $ACTIONVAL | sed -r 's!^/home/centos/artwork/!!') + DIR=$(dirname $DIR) + DIR=${MANUALS_DIR[2]}/$DIR + + # Build file for documentation entry. + FILE=$(basename $ACTIONVAL).texi + + # Combine both directory (DIR) and file (FILE) to build entry's + # absolute path. When the entry's absolute path is built for the + # current location, the string "." is returned by dirname and used + # as current directory to store the .texi file. This is not + # desirable because we are using absolute path already and the "." + # string adds another level in the path (e.g., + # /home/centos/artwork/trunk/Manuals/Texinfo/en/./trunk/chapter.texi). + # This extra level in the path confuses the script when it tries + # to find out where the chapter's directory is. In the example + # above, the chapter's directory is "trunk/" not "./". So, remove + # the string './' from entry's absolute path in order to build the + # entry's absolute path correctly. + ENTRY=$(echo $DIR/$FILE | sed -r 's!\./!!') + + # Re-define documentation entry if it is the chapter entry. + # TODO: automate the verification, in order to accept any other + # structure in the first level. + if [[ $ENTRY =~ "(trunk|branches|tags)\.texi$" ]];then + ENTRY=$(echo $ENTRY \ + | sed -r "s/(trunk|branches|tags)\.texi$/\1\/${MANUALS_FILE[7]}/") + fi + + # Output entry's absolute path. + echo $ENTRY + +} diff --git a/Scripts/Bash/Functions/Manual/manual_getNode.sh b/Scripts/Bash/Functions/Manual/manual_getNode.sh new file mode 100755 index 0000000..8799ba4 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_getNode.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# +# help_getNode.sh -- This function cleans up the action value +# (ACTIONVAL) directory to make a node name from it. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_getNode { + + local NODE=$(echo "$ACTIONVAL" \ + | sed -r 's!^/home/centos/artwork/!!' \ + | sed -r 's!/! !g' | sed -r 's!^[[:space:]]+!!') + + echo "$NODE" +} + diff --git a/Scripts/Bash/Functions/Manual/manual_removeEntry.sh b/Scripts/Bash/Functions/Manual/manual_removeEntry.sh new file mode 100755 index 0000000..6dc779d --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_removeEntry.sh @@ -0,0 +1,143 @@ +#!/bin/bash +# +# help_removeEntry.sh -- This function removes a documentation entry +# from your working copy documentation structure. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_removeEntry { + + # Define variables as local to avoid conflicts outside. + local ENTRIES='' + local ENTRIES_COUNTER=0 + local LOCATION='' + + # Check if the entry has been already removed. + if [[ ! -f $ENTRY ]];then + cli_printMessage "`gettext "The following entry doesn't exist:"`" + cli_printMessage "$ENTRY" "AsResponseLine" + cli_printMessage "$(caller)" "AsToKnowMoreLine" + fi + + # Define entries. Start with the one being processed currently. + ENTRIES=$ENTRY + + # Define root location to look for entries. + LOCATION=$(echo $ENTRY | sed -r 's!\.texi$!!') + + # Re-define location to match the chapter's root directory. This + # applies when you try to remove the whole chapter from the + # working copy (e.g., centos-art help --remove=/home/centos/artwork/trunk/). + if [[ $ENTRY =~ "${MANUALS_FILE[7]}$" ]];then + LOCATION=$(dirname $ENTRY) + fi + + # Look for dependent entries. In this context, dependent entries + # are all files ending in .texi which have a directory name that + # matches the file name (without .texi extension) of the entry + # being processed currently. See LOCATION default definition + # above. If location directory doesn't exist it is probably + # because there is no dependent entries. + if [[ -d $LOCATION ]];then + for ENTRY in $(find $LOCATION -name '*.texi');do + ENTRIES="$ENTRIES $ENTRY $(dirname $ENTRY)" + ENTRIES_COUNTER=$(($ENTRIES_COUNTER + 1)) + done + fi + + # Remove duplicated lines from entries list. + ENTRIES=$(echo "$ENTRIES" | tr ' ' "\n" | sort -r | uniq) + + # Show a verification message before doing anything. + cli_printMessage "`ngettext "The following entry will be removed:" \ + "The following entries will be removed:" \ + $ENTRIES_COUNTER`" + + # Show list of affected entries. + for ENTRY in $ENTRIES;do + cli_printMessage "$ENTRY" "AsResponseLine" + done + + cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" + + # Re-define ENTRY using affected entries as reference. + for ENTRY in $ENTRIES;do + + # Show which entry is being removed. + cli_printMessage "$ENTRY" "AsRemovingLine" + + # Remove documentation entry. At this point, documentation + # entry can be under version control or not versioned at all. + # Here we need to decide how to remove documentation entries + # based on whether they are under version control or not. + if [[ "$(cli_getRepoStatus "$ENTRY")" == ' ' ]];then + + # Documentation entry is under version control and clean + # of changes. Only if documentation entry is clean of + # changes we can mark it for deletion. So use subversion's + # `del' command to do so. + eval svn del "$ENTRY" --quiet + + elif [[ "$(cli_getRepoStatus "$ENTRY")" == '?' ]] \ + || [[ "$(cli_getRepoStatus "$ENTRY")" == '' ]] ;then + + # Documentation entry is not under version control, so we + # don't care about changes inside unversioned + # documentation entries at all. If you say centos-art.sh + # script to remove an unversion documentation entry it + # will do so, using convenctional `rm' command. + if [[ -d "$ENTRY" ]];then + rm -r "$ENTRY" + else + rm "$ENTRY" + fi + + else + + # Documentation entry is under version control and it does + # have changes. We don't remove a versioned documentation + # entry with changes. So print a message about it and stop + # script execution. + cli_printMessage "`gettext "The documentation entry cannot be removed."`" 'AsErrorLine' + cli_printMessage "$(caller)" 'AsToKnowMoreLine' + + fi + + # Update section's menu and nodes to reflect the fact that + # documentation entry has been removed. + help_updateMenu "remove-entry" + help_updateNodes + + done + + # Update chapter's menu and nodes in the master texinfo document. + # This is mainly applied when one of the chapters (e.g., trunk/, + # tags/, or branches/) is removed. + if [[ ! -d $ENTRYCHAPTER ]];then + help_updateChaptersMenu 'remove-entry' + help_updateChaptersNodes + fi + + # Update manuals' related output files. + help_updateOutputFiles + +} diff --git a/Scripts/Bash/Functions/Manual/manual_searchIndex.sh b/Scripts/Bash/Functions/Manual/manual_searchIndex.sh new file mode 100644 index 0000000..c18db53 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_searchIndex.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# +# help_searchIndex.sh -- This function does an index search inside the +# info document. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_searchIndex { + + # Define search pattern format. + local PATTERN='^[[:alnum:],]+$' + + # Define default search string. + local SEARCH='' + + # Define short options we want to support. + local ARGSS="" + + # Define long options we want to support. + local ARGSL="filter:" + + # Parse arguments using getopt(1) command parser. + cli_doParseArguments + + # reset positional parameters using output from (getopt) argument + # parser. + eval set -- "$ARGUMENTS" + + # Define action to take for each option passed. + while true; do + case "$1" in + --filter ) + SEARCH="$2" + shift 2 + ;; + * ) + break + esac + done + + # Re-define default SEARCH value. If the search string is not + # provided as `--filter' argument, ask user to provide one. + if [[ ! $SEARCH =~ $PATTERN ]];then + cli_printMessage "`gettext "Enter the search pattern"`" "AsRequestLine" + read SEARCH + fi + + # Validate search string using search pattern. + if [[ ! "$SEARCH" =~ $PATTERN ]];then + cli_printMessage "`gettext "The search pattern is not valid."`" 'AsErrorLine' + cli_printMessage "$(caller)" "AsToKnowMoreLine" + fi + + # Perform index search inside documentation info file. + /usr/bin/info --index-search="$SEARCH" --file=${MANUALS_FILE[4]} + +} diff --git a/Scripts/Bash/Functions/Manual/manual_searchNode.sh b/Scripts/Bash/Functions/Manual/manual_searchNode.sh new file mode 100755 index 0000000..0b20a6c --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_searchNode.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# +# help_searchNode.sh -- This function does a node search inside the +# info document. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_searchNode { + + # Check entry inside documentation structure. If the entry + # exits use the info reader to open the info file at the + # specified node. Otherwise, ask the user for create it. + if [[ -f "$ENTRY" ]];then + /usr/bin/info --node="$(help_getNode)" --file=${MANUALS_FILE[4]} + else + help_editEntry + fi + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateChaptersFiles.sh b/Scripts/Bash/Functions/Manual/manual_updateChaptersFiles.sh new file mode 100755 index 0000000..d857e36 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateChaptersFiles.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# +# help_updateChaptersFiles.sh -- This function updates chapter related +# files. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateChaptersFiles { + + # Define chapter's generic structure. + local CHAPTERBODY="\ + @node $CHAPTERNAME + @chapter $CHAPTERNAME + @cindex $(echo $CHAPTERNAME | tr '[[:upper:]]' '[[:lower:]]') + @include $CHAPTERNAME/${MANUALS_FILE[7]} + @include $CHAPTERNAME/${MANUALS_FILE[8]} + @include $CHAPTERNAME/${MANUALS_FILE[9]}" + + # Remove any space/tabs at the begining of @... lines. + CHAPTERBODY=$(echo "$CHAPTERBODY" | sed -r 's!^[[:space:]]+@!@!') + + # Create directory to store chapter files. + if [[ ! -d $ENTRYCHAPTER ]];then + mkdir $ENTRYCHAPTER + fi + + # Create files to store chapter information. If chapter files + # already exist, they will be re-written and any previous + # information inside them will be lost. + echo "$CHAPTERBODY" > $ENTRYCHAPTER/${MANUALS_FILE[6]} + echo "" > $ENTRYCHAPTER/${MANUALS_FILE[8]} + echo "" > $ENTRYCHAPTER/${MANUALS_FILE[9]} + + # Initialize chapter instroduction using template file. + cp ${MANUALS_DIR[6]}/repository-chapter-intro.texi $ENTRYCHAPTER/${MANUALS_FILE[7]} + sed -r -i \ + -e "s!=GOALS=!`gettext "Goals"`!g" \ + -e "s!=USAGE=!`gettext "Usage"`!g" \ + -e "s!=CONCEPTS=!`gettext "Concepts"`!g" \ + -e "s!=DIRECTORIES=!`gettext "Directories"`!g" \ + $ENTRYCHAPTER/${MANUALS_FILE[7]} +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateChaptersMenu.sh b/Scripts/Bash/Functions/Manual/manual_updateChaptersMenu.sh new file mode 100755 index 0000000..d3a61b4 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateChaptersMenu.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# +# help_updateChaptersMenu.sh - This function updates chapter menu. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateChaptersMenu { + + local ACTION=$1 + local MENUCHAPTERS='' + + # Build menu of chapters. The Index node is not included as other + # nodes are. The Index node is defined insde the master texinfo + # file (repository.texi). To create the final .info file + # correctly, the Index line in the menu should remain, even no + # other node exist. + if [[ -f ${MANUALS_FILE[2]} ]];then + MENUCHAPTERS=$(cat ${MANUALS_FILE[2]} \ + | egrep -v "^(@(end )?menu$|\* `gettext "Index"`::.*)$") + fi + + # Re-defined menu of chapters based on action. + case $ACTION in + 'remove-entry' ) + # Remove chapter from menu. + MENUCHAPTERS=$(echo "$MENUCHAPTERS" \ + | egrep -v "^\* ${CHAPTERNAME}::[[:print:]]*$") + ;; + 'update-entry' | * ) + # Update chapter menu using texinfo format. + MENUCHAPTERS="$MENUCHAPTERS + * $CHAPTERNAME::" + ;; + esac + + # Remove opening spaces/tabs and empty line from the menu of + # chapters. Empty lines may occur the first time the menu of + # chapters is created. + MENUCHAPTERS=$(echo "$MENUCHAPTERS" | sed -r 's!^[[:space:]]+!!' \ + | egrep -v '^[[:space:]]*$') + + # Organize menu of chapters alphabetically and verify that no + # duplicated line be included on the list. + MENUCHAPTERS=$(echo "$MENUCHAPTERS" | sort | uniq ) + + # Give format to final menu output. + MENUCHAPTERS="@menu + $MENUCHAPTERS + * `gettext "Index"`:: + @end menu" + + # Strip opening space/tabs from final menu of chapters. + MENUCHAPTERS=$(echo "$MENUCHAPTERS" | sed -r 's!^[[:space:]]+!!' \ + | egrep -v '^[[:space:]]*$') + + # Dump organized menu of chapters into file. + echo "$MENUCHAPTERS" > ${MANUALS_FILE[2]} + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateChaptersNodes.sh b/Scripts/Bash/Functions/Manual/manual_updateChaptersNodes.sh new file mode 100755 index 0000000..2459151 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateChaptersNodes.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# help_updateChaptersNodes.sh - This function updates nodes of +# chapters based on menu of chapters. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateChaptersNodes { + + # Build list "nodes of chapters" based on menu of chapters. + local CHAPTERNODES=$(cat ${MANUALS_FILE[2]} \ + | egrep -v '^@(end )?menu$' \ + | egrep -v "^\* `gettext "Index"`::[[:print:]]*$" \ + | sed -r 's!^\* !!' | sed -r 's!::[[:print:]]*$!!g' \ + | sed -r 's! !_!g' | sort | uniq ) + + # Build list of texinfo inclusions to load chapters' nodes. + local FILENODE=$(\ + for CHAPTERNODE in $CHAPTERNODES;do + + INCL=$(echo $CHAPTERNODE | sed -r "s!(${CHAPTERNODE})!\1/chapter\.texi!") + + # Output inclusion line using texinfo format. + echo "@include $INCL" + + done) + + # Dump organized nodes of chapters into file. + echo "$FILENODE" > ${MANUALS_FILE[3]} + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateMenu.sh b/Scripts/Bash/Functions/Manual/manual_updateMenu.sh new file mode 100755 index 0000000..625a04d --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateMenu.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# +# help_updateMenu.sh -- This function updates menu lines inside +# texinfo chapters. If this function is called with the +# 'remove-entry' string as first argument, then the menu line related +# to the entry being processed is removed. If this function is called +# with the 'update-entry' string as first argument, then the menu line +# related to the entry being processed is added to the menu. If no +# argument is passed to this function, the 'update-entry' action is +# assumed. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateMenu { + + # Specify which action to do inside chapter's menu. + local ACTION="$1" + + # Build the menu line related to the entry being processed + # currently. + local MENULINE=$(echo "$ENTRY" \ + | cut -d / -f10- \ + | tr '/' ' ' \ + | sed -r "s/(${MANUALS_FILE[7]}|\.texi)$//") + + # Give format to menu line using texinfo style. + MENULINE="* $MENULINE::" + + # Define chapter's menu. Remove `@menu', `@end menu', and empty lines + # from output. + local MENU=$(cat $ENTRYCHAPTER/${MANUALS_FILE[8]} \ + | egrep -v '^[[:space:]]*$' | egrep -v '^@(end )?menu') + + # Re-defined chapter's menu based on action. + case $ACTION in + 'remove-entry' ) + # Remove menu line from chapter's menu. + MENU=$(echo "$MENU" | egrep -v "$MENULINE") + ;; + 'update-entry' | * ) + # Add menu line to chapter's menu. This is the default + # behaivour if no argument is passed to help_updateMenu + # function. + MENU="$MENU + $MENULINE" + ;; + esac + + # Organize menu alphabetically, remove empty and duplicated lines. + # At this point, empty line may occur the first time the menu is + # created, don't let them to scape. + MENU=$(echo "$MENU" | egrep -v '^[[:space:]]*$' | sort | uniq ) + + # Rebuild chapter's menu structure adding '@menu' and '@end menu' + # lines back in menu. + MENU="@menu + $MENU + @end menu" + + # Remove opening spaces/tabs from final menu structure. + MENU=$(echo "$MENU" | sed -r 's!^[[:space:]]+!!g') + + # Dump final menu structure back into chapter's menu file. + echo "$MENU" > $ENTRYCHAPTER/${MANUALS_FILE[8]} + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateNodes.sh b/Scripts/Bash/Functions/Manual/manual_updateNodes.sh new file mode 100755 index 0000000..4e127ea --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateNodes.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# +# help_updateNodes.sh -- This function updates chapter's nodes +# definition using the chapter's menu as reference. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateNodes { + + # Retrive nodes' entries from chapter-menu.texi file. + local NODES=$(cat $ENTRYCHAPTER/${MANUALS_FILE[8]} \ + | sed -r 's!^\* !!' | sed -r 's!:{1,2}.*$!!g' \ + | egrep -v '^@(end )?menu$' | sed -r 's! !:!g' | sort | uniq) + + # Re-build node structure based on menu information. + for NODE in $NODES;do + + NODE=$(echo $NODE | sed -r 's!:! !g') + SECT=$(echo $NODE | sed -r 's! !/!g') + INCL=$(echo $NODE | sed -r 's! !/!g').texi + CIND=$(echo $NODE) + + # Create an emtpy directory to store texinfo files. + if [[ ! -d ${MANUALS_DIR[2]}/$(dirname $INCL) ]];then + mkdir -p ${MANUALS_DIR[2]}/$(dirname $INCL) + fi + + # Create texinfo section file using its template. + if [[ ! -f ${MANUALS_DIR[2]}/$INCL ]];then + + cp ${MANUALS_FILE[10]} ${MANUALS_DIR[2]}/$INCL + + # Translate template instance. + sed -r -i \ + -e "s!=GOALS=!`gettext "Goals"`!g" \ + -e "s!=USAGE=!`gettext "Usage"`!g" \ + -e "s!=DESCRIPTION=!`gettext "Description"`!g" \ + -e "s!=SEEALSO=!`gettext "See also"`!g" \ + ${MANUALS_DIR[2]}/$INCL + + fi + + # Output node information based on texinfo menu. + echo "@node $NODE" + echo "@section $SECT" + echo "@cindex $CIND" + echo "@include $INCL" + echo "" + + # Dump node information into chapter node file. + done > $ENTRYCHAPTER/${MANUALS_FILE[9]} + +} + diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFileHtml.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFileHtml.sh new file mode 100755 index 0000000..ef961a4 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFileHtml.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# +# help_updateOutputFileHtml.sh -- This function updates manuals' html +# related output files. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateOutputFileHtml { + + # Output action message + cli_printMessage "`gettext "Updating manual's html output"`" 'AsResponseLine' + + # Check html output directory + [[ ! -d ${MANUALS_DIR[4]} ]] && mkdir -p ${MANUALS_DIR[4]} + + # Add html output directory into directory stack to make it the + # current working directory. Otherwise texi2html may produce + # incorrect paths to images included. + pushd ${MANUALS_DIR[4]} > /dev/null + + # Update html files. Use texi2html to export from texinfo file + # format to html using CentOS Web default visual style. + texi2html ${MANUALS_FILE[1]} --output=${MANUALS_DIR[4]} --split section \ + --nosec-nav \ + --css-include=/home/centos/artwork/trunk/Identity/Models/Css/Texi2html/stylesheet.css \ + -I=/home/centos/artwork + + # Apply html transformations. Html transformations rely on + # Texi2html default html output. The main goal of these html + # transformations is to build specific html structures that match + # specific css definitions. This way we extend the visual style of + # Texi2html default html output. + sed -r -i \ + -f /home/centos/artwork/trunk/Identity/Models/Css/Texi2html/transformations.sed \ + ${MANUALS_DIR[4]}/*.html + + # Remove html output directory from directory stack. + popd > /dev/null + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFileInfo.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFileInfo.sh new file mode 100755 index 0000000..43f7951 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFileInfo.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# help_updateOutputFileInfo.sh -- This function updates manual's info +# output related file. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateOutputFileInfo { + + # Output action message. + cli_printMessage "`gettext "Updating manual's info output"`" 'AsResponseLine' + + # Check info output directory. + [[ ! -d ${MANUALS_DIR[3]} ]] && mkdir -p ${MANUALS_DIR[3]} + + # Update info file. + /usr/bin/makeinfo ${MANUALS_FILE[1]} --output=${MANUALS_FILE[4]} + + # Check info file. If the info file was not created then there are + # errors to fix. + if [[ ! -f ${MANUALS_FILE[4]} ]];then + cli_printMessage "$(caller)" "AsToKnowMoreLine" + fi + + # Compress info file. + bzip2 -f ${MANUALS_FILE[4]} + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFilePlaintext.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFilePlaintext.sh new file mode 100755 index 0000000..b6bdb1b --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFilePlaintext.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# help_updateOutputFilePlaintext.sh -- This function updates manuals' +# plaintext related output file. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateOutputFilePlaintext { + + # Output action message. + cli_printMessage "`gettext "Updating manual's plaintext output"`" 'AsResponseLine' + + # Check plaintext output directory. + [[ ! -d ${MANUALS_DIR[5]} ]] && mkdir -p ${MANUALS_DIR[5]} + + # Update plaintext output directory. + /usr/bin/makeinfo ${MANUALS_FILE[1]} --output=${MANUALS_FILE[5]} \ + --plaintext + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFiles.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFiles.sh new file mode 100755 index 0000000..6a95ed0 --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFiles.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# +# help_updateOutputFiles.sh -- This function updates manuals' related +# output files. +# +# Copyright (C) 2009, 2010 Alain Reguera Delgado +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function help_updateOutputFiles { + + # Add division line to differentiate action output visually. + echo '----------------------------------------------------------------------' + + # Add the working copy root directory to directory stack to make + # path construction correctly. Otherwise, makeinfo may produce + # paths incorrectly. + pushd /home/centos/artwork > /dev/null + + help_updateOutputFileInfo + help_updateOutputFileHtml + help_updateOutputFilePlaintext + + # Remove the working copy root directory from directory stack. + popd > /dev/null + + # Re-define output variable in order for cli_commitRepoChanges + # functionality to receive the correct location to apply + # subversion commands. Inside `help' functionality, the correct + # place to commit changes is not the initial value of ACTIONVAL + # but the directory path where documentation changes take place + # under. + ACTIONVAL=${MANUALS_DIR[0]} + + # Update central repository. Be sure this is the last action + # you perform inside centos-art.sh script flow. + cli_commitRepoChanges + +}