diff --git a/Scripts/Bash/Functions/Manual/manual.sh b/Scripts/Bash/Functions/Manual/manual.sh index 73b55ee..ff211a9 100755 --- a/Scripts/Bash/Functions/Manual/manual.sh +++ b/Scripts/Bash/Functions/Manual/manual.sh @@ -27,44 +27,15 @@ function manual { + # Define manuals base directory. This is the place where + # documentation manuals base directory structures are stored and + # organized in. + MANUAL_BASEDIR="${HOME}/artwork/trunk/Manuals" + # Define default value to target flag. The target flag (--to) # controls final destination used by copy related actions. local FLAG_TO='' - # Define documentation base directory structure. - MANUALS_DIR[0]='/home/centos/artwork/trunk/Manuals' - MANUALS_DIR[1]=${MANUALS_DIR[0]}/Repository/$(cli_getCurrentLocale) - MANUALS_DIR[2]=${MANUALS_DIR[1]}/Texinfo - MANUALS_DIR[3]=${MANUALS_DIR[1]}/Info - MANUALS_DIR[4]=${MANUALS_DIR[1]}/Html - MANUALS_DIR[5]=${MANUALS_DIR[1]}/Plaintext - MANUALS_DIR[7]=${MANUALS_DIR[1]}/Pdf - - # Define storing directory of Texinfo template files. Texinfo - # template files are set inside English directory structure and - # reused by other languages by means of translation markers and - # gettext translation messages. - MANUALS_DIR[6]=${MANUALS_DIR[0]}/Repository/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 command-line interface. manual_getActions diff --git a/Scripts/Bash/Functions/Manual/manual_checkChapter.sh b/Scripts/Bash/Functions/Manual/manual_checkChapter.sh index 6e60275..afb57de 100755 --- a/Scripts/Bash/Functions/Manual/manual_checkChapter.sh +++ b/Scripts/Bash/Functions/Manual/manual_checkChapter.sh @@ -28,10 +28,10 @@ function manual_checkChapter { # Check chapter's directory existence. - if [[ ! -d $ENTRYCHAPTER ]];then + if [[ ! -d $MANUAL_DIR_CHAPTER ]];then cli_printMessage "`gettext "The following documentation chapter will be created:"`" - cli_printMessage "$ENTRYCHAPTER" "AsResponseLine" + cli_printMessage "$MANUAL_DIR_CHAPTER" "AsResponseLine" cli_printMessage "`gettext "Do you want to continue?"`" "AsYesOrNoRequestLine" manual_updateChaptersFiles diff --git a/Scripts/Bash/Functions/Manual/manual_deleteCrossReferences.sh b/Scripts/Bash/Functions/Manual/manual_deleteCrossReferences.sh index 3bb727f..53f4c65 100755 --- a/Scripts/Bash/Functions/Manual/manual_deleteCrossReferences.sh +++ b/Scripts/Bash/Functions/Manual/manual_deleteCrossReferences.sh @@ -36,9 +36,9 @@ function manual_deleteCrossReferences { # Build the node string using global entry (ENTRY) variable being # processed currently. local NODE=$(echo "$ENTRY" \ - | cut -d / -f10- \ + | cut -d / -f8- \ | tr '/' ' ' \ - | sed -r "s/(${MANUALS_FILE[7]}|\.texi)$//") + | sed -r "s/(chapter-intro\.texi|\.texi)$//") # Define regular expression patterns for texinfo cross reference # commands. @@ -64,9 +64,12 @@ function manual_deleteCrossReferences { # sanitate missing cross refereces before info file is created, # errors are displayed since makeinfo don't produce info output # with broken cross refereces. - sed -r -i \ - -e "s!${PATTERN[0]}!${REPLACE[0]}!Mg" \ - -e "s!${PATTERN[1]}!${REPLACE[1]}!g" \ - $(find ${MANUALS_DIR[2]} -mindepth 3 -name '*.texi') + local ENTRIES=$(cli_getFilesList "${MANUAL_DIR}" '.*\.texi') + if [[ $ENTRIES != '' ]];then + sed -r -i \ + -e "s!${PATTERN[0]}!${REPLACE[0]}!Mg" \ + -e "s!${PATTERN[1]}!${REPLACE[1]}!g" \ + $ENTRIES + fi } diff --git a/Scripts/Bash/Functions/Manual/manual_deleteEntry.sh b/Scripts/Bash/Functions/Manual/manual_deleteEntry.sh index 9a371a1..e9f4bb3 100755 --- a/Scripts/Bash/Functions/Manual/manual_deleteEntry.sh +++ b/Scripts/Bash/Functions/Manual/manual_deleteEntry.sh @@ -1,7 +1,7 @@ #!/bin/bash # # manual_deleteEntry.sh -- This function removes a documentation entry -# from your working copy documentation structure. +# from documentation directory structure. # # Copyright (C) 2009-2011 Alain Reguera Delgado # @@ -26,49 +26,59 @@ function manual_deleteEntry { - # Define variables as local to avoid conflicts outside. local ENTRIES='' + local ENTRYSTATUS='' local LOCATION='' # Check if the entry has been already removed. cli_checkFiles $ENTRY 'f' - # 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$!!') # Redefine 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 manual --delete=/home/centos/artwork/trunk/). - if [[ $ENTRY =~ "${MANUALS_FILE[7]}$" ]];then + if [[ $ENTRY =~ "chapter-intro\.texi$" ]];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. + # Define list of dependent entries. Dependent entries are stored + # inside a directory with the same name of the entry you are + # trying to remove. If such directory location doesn't exists, the + # related entry doesn't have dependent entries either. if [[ -d $LOCATION ]];then - for ENTRY in $(find $LOCATION -name '*.texi');do - ENTRIES="$ENTRIES $ENTRY $(dirname "$ENTRY")" - done + ENTRIES=$(cli_getFilesList $LOCATION ".*\.texi") fi - - # Remove duplicated lines from entries list. + + # Add entry being currently processed to list of files to precess. + ENTRIES="${ENTRIES} ${ENTRY}" + + # Remove duplicated lines from entries list, be sure there is just + # one path per line and they are ordered in reverse. At this + # point, it is hard to find duplicated lines since the list of + # entries is built from files and it is not possible to have two + # files in the very same directory using the same name exactly, so + # this could be considered a bit paranoid. ~:-) ENTRIES=$(echo "$ENTRIES" | tr ' ' "\n" | sort -r | uniq) # Print action preamble. cli_printActionPreamble "$ENTRIES" 'doDelete' 'AsResponseLine' - # Redefine ENTRY using affected entries as reference. + # Process list of entries. for ENTRY in $ENTRIES;do + # Define the versioning status of entry. + if [[ -d $(dirname $ENTRY)/.svn ]];then + ENTRYSTATUS=$(cli_getRepoStatus "$ENTRY") + else + # At this point we don't know what the entry versioning + # status is, so consider the entry an unversion file. + ENTRYSTATUS='?' + fi + # Verify entry inside the working copy. - if [[ $(cli_getRepoStatus "$ENTRY") =~ '^(\?)?$' ]];then + if [[ "$ENTRYSTATUS" =~ '^(\?)?$' ]];then # Print action message. cli_printMessage "$ENTRY" "AsDeletingLine" @@ -87,14 +97,14 @@ function manual_deleteEntry { # 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 + if [[ "$ENTRYSTATUS" == ' ' ]];then # Documentation entry is under version control and there # is no change to be committed up to central repository. # We are safe to schedule it for deletion. svn del "$ENTRY" --quiet - elif [[ "$(cli_getRepoStatus "$ENTRY")" == '?' ]];then + elif [[ "$ENTRYSTATUS" == '?' ]];then # Documentation entry is not under version control, so we # don't care about changes inside it. If you say @@ -118,9 +128,12 @@ function manual_deleteEntry { # 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 + if [[ ! -d $MANUAL_DIR_CHAPTER ]];then manual_updateChaptersMenu 'remove-entry' manual_updateChaptersNodes fi + # Update documentation output-related files. + manual_updateOutputFiles + } diff --git a/Scripts/Bash/Functions/Manual/manual_getActions.sh b/Scripts/Bash/Functions/Manual/manual_getActions.sh index df99a44..5b7f2f3 100755 --- a/Scripts/Bash/Functions/Manual/manual_getActions.sh +++ b/Scripts/Bash/Functions/Manual/manual_getActions.sh @@ -26,14 +26,11 @@ function manual_getActions { - # Verify language layout. - manual_checkLanguageLayout - # Define short options we want to support. local ARGSS="" # Define long options we want to support. - local ARGSL="read:,search:,edit:,delete:,update,copy:,to:" + local ARGSL="read:,search:,edit:,delete:,update:,copy:,to:" # Parse arguments using getopt(1) command parser. cli_doParseArguments @@ -47,82 +44,43 @@ function manual_getActions { case "$1" in --read ) - - # Define action value passed through the command-line. ACTIONVAL="$2" - - # Define action name using action value as reference. ACTIONNAM="${FUNCNAM}_searchNode" - - # Rotate positional parameters. shift 2 ;; --search ) - - # Define action value passed through the command-line. ACTIONVAL="$2" - - # Define action name using action value as reference. ACTIONNAM="${FUNCNAM}_searchIndex" - - # Rotate positional parameters. shift 2 ;; --edit ) - - # Define action value passed through the command-line. ACTIONVAL="$2" - - # Define action name using action value as reference. ACTIONNAM="${FUNCNAM}_editEntry" - - # Rotate positional parameters. shift 2 ;; --delete ) - - # Define action value passed through the command-line. ACTIONVAL="$2" - - # Define action name. ACTIONNAM="${FUNCNAM}_deleteEntry" - - # Rotate positional parameters. shift 2 ;; --update ) - - # Execute action name. There is no need of action - # value here, so let's execute the action right now. - manual_updateOutputFiles - - # End script execution flow. There is nothing else to - # do after updating documentation output. - exit + ACTIONVAL="$2" + ACTIONNAM="${FUNCNAM}_updateOutputFiles" + shift 2 ;; --copy ) - - # Define action value passed through the command-line. ACTIONVAL="$2" - - # Define action name using action value as reference. ACTIONNAM="${FUNCNAM}_copyEntry" - - # Rotate positional parameters. shift 2 ;; --to ) - - # Redefine target flag. FLAG_TO="$2" - - # Rotate positional parameters. shift 2 ;; @@ -139,25 +97,37 @@ function manual_getActions { # Define documentation entry. ENTRY=$(manual_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? + # Define directory for documentation manual. This is the place the + # specific documentation manual we are working with is stored in. + MANUAL_DIR=$(echo $ENTRY | cut -d / -f-7) + + # Define directory to store 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? + # and also, how such design could be adapted to changes in 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 + # One solution would be: represent the repository's first level + # structure in three chapters only (i.e., trunk, branches, and + # tags) and handle everything else inside them 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) + MANUAL_DIR_CHAPTER=$(echo $ENTRY | cut -d / -f-8) + + # Define chapter name for the documentation entry we are working + # with. + MANUAL_CHA_NAME=$(basename "$MANUAL_DIR_CHAPTER") - # Define chapter name for this documentation entry. - CHAPTERNAME=$(basename "$ENTRYCHAPTER") + # Define base name for documentation manual files. This is the + # main file name used to build texinfo related files (.info, .pdf, + # .xml, etc.). + MANUAL_BASEFILE=$(echo $ENTRY | cut -d / -f-7) + MANUAL_BASEFILE=${MANUAL_BASEFILE}/$(cli_getRepoName "${MANUAL_BASEFILE}" 'f') # Syncronize changes between the working copy and the central # repository to bring down changes. - cli_commitRepoChanges ${MANUALS_DIR[0]} + cli_commitRepoChanges ${MANUAL_DIR} # Execute action name. if [[ $ACTIONNAM =~ "^${FUNCNAM}_[A-Za-z]+$" ]];then @@ -169,6 +139,6 @@ function manual_getActions { # Syncronize changes between the working copy and the central # repository to commit up changes. - cli_commitRepoChanges "${MANUALS_DIR[0]}" + cli_commitRepoChanges ${MANUAL_DIR} } diff --git a/Scripts/Bash/Functions/Manual/manual_getEntry.sh b/Scripts/Bash/Functions/Manual/manual_getEntry.sh index 146e456..f974b32 100755 --- a/Scripts/Bash/Functions/Manual/manual_getEntry.sh +++ b/Scripts/Bash/Functions/Manual/manual_getEntry.sh @@ -29,8 +29,6 @@ function manual_getEntry { # Define variables as local to avoid conflicts outside. - local DIR='' - local FILE='' local ENTRY='' local LOCATION='' @@ -43,48 +41,41 @@ function manual_getEntry { LOCATION="$ACTIONVAL" fi - # Build directory to store documenation entry. - DIR=$(echo $LOCATION | sed -r 's!^/home/centos/artwork/!!') - DIR=$(dirname "$DIR") - DIR=${MANUALS_DIR[2]}/$DIR + # Define relative path of entry, from trunk directory on. + ENTRY=$(echo $LOCATION | sed -r "s!^${HOME}/artwork/!!") - # Build file for documentation entry. Notice that directory - # structure convenction is not used here through cli_getRepoName. - # This is because documentation structures mirror other directory - # structures inside the repository. So, if we are documenting - # trunk/Identity/Brands/ directory we don't want to have the - # trunk/Identity/brands.texi documentation entry, but - # trunk/Identity/Brands.texi in order to reflect the fact that we - # are documenting a directory structure. Something similar occurs - # with files, but using repository file convenction instead. This - # way we just use basename to find out the last component in the - # path without sanitation. We assume it has been already - # sanitated. - FILE=$(basename "$LOCATION").texi + # Verify the entry relative path to find out which documentation + # manual we are acting on. As convenction, whatever documentation + # entry you provide outside trunk/Manuals/ directory structure is + # considered as you are documenting the repository directory + # structure. Otherwise, if an entry inside trunk/Manuals/ is + # provided, the directory structure provided is used as default + # documentation manual for actions like `--create' and `--update' + # to take place on. Other options like `--edit', `--delete' and + # `--read' cannot be applied to paths provided is inside + # trunk/Manuals/ such actions made manually. + if [[ ${ENTRY} =~ '^trunk/Manuals/.+$' ]];then + ENTRY=$(echo ${ENTRY} | sed 's!trunk/Manuals/!!') + else + ENTRY=$(dirname Repository/${ENTRY})/$(basename $LOCATION).texi + fi - # 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 cli_getRepoName - # 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 entry to set absolute path to manuals base directory + # structure. + ENTRY=${MANUAL_BASEDIR}/${ENTRY} - # Re-define documentation entry if it is the chapter entry. + # Re-define documentation entry to handle chapter entries. Chapter + # entries are handled inside the chapter it refers to, not outside + # it. To store chapter-specific information, the special file + # chapter-intro.texi is used inside the chapter. # 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]}/") + if [[ ${ENTRY} =~ "(trunk|branches|tags)\.texi$" ]];then + ENTRY=$(echo ${ENTRY} \ + | sed -r "s/(trunk|branches|tags)\.texi$/\1\/chapter-intro.texi/") fi # Output entry's absolute path. - echo $ENTRY + echo ${ENTRY} } diff --git a/Scripts/Bash/Functions/Manual/manual_restoreCrossReferences.sh b/Scripts/Bash/Functions/Manual/manual_restoreCrossReferences.sh index febda70..fb8ece9 100755 --- a/Scripts/Bash/Functions/Manual/manual_restoreCrossReferences.sh +++ b/Scripts/Bash/Functions/Manual/manual_restoreCrossReferences.sh @@ -40,7 +40,7 @@ function manual_restoreCrossReferences { # Build the node string using global entry (ENTRY) variable being # processed currently. local NODE=$(echo "$ENTRY" \ - | cut -d / -f10- \ + | cut -d / -f8- \ | tr '/' ' ' \ | sed -r "s/(${MANUALS_FILE[7]}|\.texi)$//") @@ -67,9 +67,12 @@ function manual_restoreCrossReferences { # documentation entry, they represent, can be recreated in the # future and, at that time, the link wouldn't be broken any more, # so we need to be aware of this. - sed -r -i \ - -e "s!${PATTERN[0]}!${REPLACE[0]}!Mg" \ - -e "s!${PATTERN[1]}!${REPLACE[1]}!g" \ - $(find ${MANUALS_DIR[2]} -mindepth 3 -name '*.texi') + local ENTRIES=$(cli_getFilesList "${MANUAL_DIR}" '.*\.texi') + if [[ $ENTRIES != '' ]];then + sed -r -i \ + -e "s!${PATTERN[0]}!${REPLACE[0]}!Mg" \ + -e "s!${PATTERN[1]}!${REPLACE[1]}!g" \ + $ENTRIES + fi } diff --git a/Scripts/Bash/Functions/Manual/manual_searchIndex.sh b/Scripts/Bash/Functions/Manual/manual_searchIndex.sh index 812529f..09b9238 100644 --- a/Scripts/Bash/Functions/Manual/manual_searchIndex.sh +++ b/Scripts/Bash/Functions/Manual/manual_searchIndex.sh @@ -26,51 +26,6 @@ function manual_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]} + /usr/bin/info --index-search="$FLAG_FILTER" --file=${MANUAL_BASEFILE}.info.bz2 } diff --git a/Scripts/Bash/Functions/Manual/manual_searchNode.sh b/Scripts/Bash/Functions/Manual/manual_searchNode.sh index d7269ed..e3adba5 100755 --- a/Scripts/Bash/Functions/Manual/manual_searchNode.sh +++ b/Scripts/Bash/Functions/Manual/manual_searchNode.sh @@ -30,7 +30,7 @@ function manual_searchNode { # 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="$(manual_getNode)" --file=${MANUALS_FILE[4]} + /usr/bin/info --node="$(manual_getNode)" --file=${MANUAL_BASEFILE}.info.bz2 else manual_editEntry fi diff --git a/Scripts/Bash/Functions/Manual/manual_updateChaptersFiles.sh b/Scripts/Bash/Functions/Manual/manual_updateChaptersFiles.sh index a0fe763..6a38b6e 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateChaptersFiles.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateChaptersFiles.sh @@ -28,34 +28,29 @@ function manual_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]}" + @node $MANUAL_CHA_NAME + @chapter $MANUAL_CHA_NAME + @cindex $(echo $MANUAL_CHA_NAME | tr '[[:upper:]]' '[[:lower:]]') + @include $MANUAL_CHA_NAME/chapter-intro.texi + @include $MANUAL_CHA_NAME/chapter-menu.texi + @include $MANUAL_CHA_NAME/chapter-nodes.texi" # 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 + if [[ ! -d $MANUAL_DIR_CHAPTER ]];then + mkdir $MANUAL_DIR_CHAPTER 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]} + echo "$CHAPTERBODY" > $MANUAL_DIR_CHAPTER/chapter.texi + echo "" > $MANUAL_DIR_CHAPTER/chapter-menu.texi + echo "" > $MANUAL_DIR_CHAPTER/chapter-nodes.texi # 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]} + cp ${FUNCCONFIG}/manual-cha-intro.texi $MANUAL_DIR_CHAPTER/chapter-intro.texi + } diff --git a/Scripts/Bash/Functions/Manual/manual_updateChaptersMenu.sh b/Scripts/Bash/Functions/Manual/manual_updateChaptersMenu.sh index ed8095c..c3ec336 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateChaptersMenu.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateChaptersMenu.sh @@ -33,46 +33,46 @@ function manual_updateChaptersMenu { # 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"`::.*)$") + if [[ -f ${MANUAL_BASEFILE}-menu.texi ]];then + MENUCHAPTERS=$(cat ${MANUAL_BASEFILE}-menu.texi \ + | egrep -v "^(@(end )?menu$|\* 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:]]*$") + MENUCHAPTERS=$(echo "${MENUCHAPTERS}" \ + | egrep -v "^\* ${MANUAL_CHA_NAME}::[[:print:]]*$") ;; 'update-entry' | * ) # Update chapter menu using texinfo format. - MENUCHAPTERS="$MENUCHAPTERS - * $CHAPTERNAME::" + MENUCHAPTERS="${MENUCHAPTERS} + * ${MANUAL_CHA_NAME}::" ;; 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:]]+!!' \ + 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 ) + MENUCHAPTERS=$(echo "${MENUCHAPTERS}" | sort | uniq ) # Give format to final menu output. MENUCHAPTERS="@menu - $MENUCHAPTERS - * `gettext "Index"`:: + ${MENUCHAPTERS} + * Index:: @end menu" # Strip opening space/tabs from final menu of chapters. - MENUCHAPTERS=$(echo "$MENUCHAPTERS" | sed -r 's!^[[:space:]]+!!' \ + MENUCHAPTERS=$(echo "${MENUCHAPTERS}" | sed -r 's!^[[:space:]]+!!' \ | egrep -v '^[[:space:]]*$') # Dump organized menu of chapters into file. - echo "$MENUCHAPTERS" > ${MANUALS_FILE[2]} + echo "${MENUCHAPTERS}" > ${MANUAL_BASEFILE}-menu.texi } diff --git a/Scripts/Bash/Functions/Manual/manual_updateChaptersNodes.sh b/Scripts/Bash/Functions/Manual/manual_updateChaptersNodes.sh index 146718d..7ebfe77 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateChaptersNodes.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateChaptersNodes.sh @@ -27,7 +27,7 @@ function manual_updateChaptersNodes { # Build list "nodes of chapters" based on menu of chapters. - local CHAPTERNODES=$(cat ${MANUALS_FILE[2]} \ + local CHAPTERNODES=$(cat ${MANUAL_BASEFILE}-menu.texi \ | egrep -v '^@(end )?menu$' \ | egrep -v "^\* `gettext "Index"`::[[:print:]]*$" \ | sed -r 's!^\* !!' | sed -r 's!::[[:print:]]*$!!g' \ @@ -35,9 +35,9 @@ function manual_updateChaptersNodes { # Build list of texinfo inclusions to load chapters' nodes. local FILENODE=$(\ - for CHAPTERNODE in $CHAPTERNODES;do + for CHAPTERNODE in ${CHAPTERNODES};do - INCL=$(echo $CHAPTERNODE | sed -r "s!(${CHAPTERNODE})!\1/chapter\.texi!") + INCL=$(echo ${CHAPTERNODE} | sed -r "s!(${CHAPTERNODE})!\1/chapter\.texi!") # Output inclusion line using texinfo format. echo "@include $INCL" @@ -45,6 +45,6 @@ function manual_updateChaptersNodes { done) # Dump organized nodes of chapters into file. - echo "$FILENODE" > ${MANUALS_FILE[3]} + echo "$FILENODE" > ${MANUAL_BASEFILE}-nodes.texi } diff --git a/Scripts/Bash/Functions/Manual/manual_updateMenu.sh b/Scripts/Bash/Functions/Manual/manual_updateMenu.sh index e9766c0..b147742 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateMenu.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateMenu.sh @@ -38,16 +38,16 @@ function manual_updateMenu { # Build the menu line related to the entry being processed # currently. local MENULINE=$(echo "$ENTRY" \ - | cut -d / -f10- \ + | cut -d / -f8- \ | tr '/' ' ' \ - | sed -r "s/(${MANUALS_FILE[7]}|\.texi)$//") + | sed -r "s/(chapter-intro\.texi|\.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]} \ + local MENU=$(cat $MANUAL_DIR_CHAPTER/chapter-menu.texi \ | egrep -v '^[[:space:]]*$' | egrep -v '^@(end )?menu') # Re-defined chapter's menu based on action. @@ -80,6 +80,6 @@ function manual_updateMenu { MENU=$(echo "$MENU" | sed -r 's!^[[:space:]]+!!g') # Dump final menu structure back into chapter's menu file. - echo "$MENU" > $ENTRYCHAPTER/${MANUALS_FILE[8]} + echo "$MENU" > $MANUAL_DIR_CHAPTER/chapter-menu.texi } diff --git a/Scripts/Bash/Functions/Manual/manual_updateNodes.sh b/Scripts/Bash/Functions/Manual/manual_updateNodes.sh index 6232193..9f5bf43 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateNodes.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateNodes.sh @@ -27,7 +27,7 @@ function manual_updateNodes { # Retrive nodes' entries from chapter-menu.texi file. - local NODES=$(cat $ENTRYCHAPTER/${MANUALS_FILE[8]} \ + local NODES=$(cat $MANUAL_DIR_CHAPTER/chapter-menu.texi \ | sed -r 's!^\* !!' | sed -r 's!:{1,2}.*$!!g' \ | egrep -v '^@(end )?menu$' | sed -r 's! !:!g' | sort | uniq) @@ -39,24 +39,14 @@ function manual_updateNodes { 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") + # Create an empty directory to store texinfo files. + if [[ ! -d ${MANUAL_DIR}/$(dirname "$INCL") ]];then + mkdir -p ${MANUAL_DIR}/$(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 - + if [[ ! -f ${MANUAL_DIR}/$INCL ]];then + cp ${FUNCCONFIG}/manual-section.texi ${MANUAL_DIR}/$INCL fi # Output node information based on texinfo menu. @@ -67,7 +57,7 @@ function manual_updateNodes { echo "" # Dump node information into chapter node file. - done > $ENTRYCHAPTER/${MANUALS_FILE[9]} + done > $MANUAL_DIR_CHAPTER/chapter-nodes.texi } diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFileHtml.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFileHtml.sh index 5c84f29..326ac00 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateOutputFileHtml.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFileHtml.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# manual_updateOutputFileHtml.sh -- This function updates manuals' html -# related output files. +# manual_updateOutputFileHtml.sh -- This function exports +# documentation manual to HTML format. # # Copyright (C) 2009-2011 Alain Reguera Delgado # @@ -26,20 +26,20 @@ function manual_updateOutputFileHtml { - # Output action message - cli_printMessage "`gettext "Updating manual's html output"`" 'AsResponseLine' + # Output action message. + cli_printMessage "${MANUAL_BASEFILE}-html" 'AsUpdatingLine' # Check html output directory - [[ ! -d ${MANUALS_DIR[4]} ]] && mkdir -p ${MANUALS_DIR[4]} + [[ ! -d ${MANUAL_BASEFILE}-html ]] && mkdir -p ${MANUAL_BASEFILE}-html # 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 + pushd ${MANUAL_BASEFILE}-html > /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 \ + texi2html ${MANUAL_BASEFILE}.texi --output=${MANUAL_BASEFILE}-html --split section \ --nosec-nav \ --css-include=/home/centos/artwork/trunk/Identity/Models/Css/Texi2html/stylesheet.css \ -I=/home/centos/artwork @@ -51,7 +51,7 @@ function manual_updateOutputFileHtml { # Texi2html default html output. sed -r -i \ -f /home/centos/artwork/trunk/Identity/Models/Css/Texi2html/transformations.sed \ - ${MANUALS_DIR[4]}/*.html + ${MANUAL_BASEFILE}-html/*.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 index 2e3f57e..0dd59b7 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateOutputFileInfo.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFileInfo.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# manual_updateOutputFileInfo.sh -- This function updates manual's info -# output related file. +# manual_updateOutputFileInfo.sh -- This function exports +# documentation manual to info format. # # Copyright (C) 2009-2011 Alain Reguera Delgado # @@ -27,21 +27,14 @@ function manual_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]} + cli_printMessage "${MANUAL_BASEFILE}.info.bz2" 'AsUpdatingLine' # 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 + /usr/bin/makeinfo ${MANUAL_BASEFILE}.texi --output=${MANUAL_BASEFILE}.info # Compress info file. - bzip2 -f ${MANUALS_FILE[4]} + if [[ $? -eq 0 ]];then + bzip2 -f ${MANUAL_BASEFILE}.info + fi } diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFilePdf.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFilePdf.sh index 8b0a78a..ff2caac 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateOutputFilePdf.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFilePdf.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# manual_updateOutputFilePdf.sh -- This function updates manuals' pdf -# related output file. +# manual_updateOutputFilePdf.sh -- This function exports documentation +# manual to PDF format. # # Copyright (C) 2009-2011 Alain Reguera Delgado # @@ -27,11 +27,10 @@ function manual_updateOutputFilePdf { # Output action message. - cli_printMessage "`gettext "Updating manual's pdf output"`" 'AsResponseLine' - - # Check plaintext output directory. - [[ ! -d ${MANUALS_DIR[7]} ]] && mkdir -p ${MANUALS_DIR[7]} + cli_printMessage "${MANUAL_BASEFILE}.pdf" 'AsUpdatingLine' # Update plaintext output directory. - /usr/bin/texi2pdf ${MANUALS_FILE[1]} --output=${MANUALS_DIR[7]} --quiet + /usr/bin/texi2pdf --quiet \ + ${MANUAL_BASEFILE}.texi --output=${MANUAL_BASEFILE}.pdf + } diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFilePlaintext.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFilePlaintext.sh index 6adae1f..9847825 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateOutputFilePlaintext.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFilePlaintext.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# manual_updateOutputFilePlaintext.sh -- This function updates manuals' -# plaintext related output file. +# manual_updateOutputFilePlaintext.sh -- This function exports +# documentation manual to plain-text format. # # Copyright (C) 2009-2011 Alain Reguera Delgado # @@ -27,13 +27,10 @@ function manual_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]} + cli_printMessage "${MANUAL_BASEFILE}.txt" 'AsUpdatingLine' # Update plaintext output directory. - /usr/bin/makeinfo ${MANUALS_FILE[1]} --output=${MANUALS_FILE[5]} \ - --plaintext + /usr/bin/makeinfo --plaintext \ + ${MANUAL_BASEFILE}.texi --output=${MANUAL_BASEFILE}.txt } diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFileXml.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFileXml.sh new file mode 100755 index 0000000..e6e70ab --- /dev/null +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFileXml.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# manual_updateOutputFileXml.sh -- This function exports documentation +# manual to XML format. +# +# Copyright (C) 2009-2011 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 manual_updateOutputFileXml { + + # Output action message. + cli_printMessage "${MANUAL_BASEFILE}.xml" 'AsUpdatingLine' + + # Update plaintext output directory. + /usr/bin/makeinfo --xml \ + ${MANUAL_BASEFILE}.texi --output=${MANUAL_BASEFILE}.xml \ + +} diff --git a/Scripts/Bash/Functions/Manual/manual_updateOutputFiles.sh b/Scripts/Bash/Functions/Manual/manual_updateOutputFiles.sh index 48f2d3a..9535ccb 100755 --- a/Scripts/Bash/Functions/Manual/manual_updateOutputFiles.sh +++ b/Scripts/Bash/Functions/Manual/manual_updateOutputFiles.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# manual_updateOutputFiles.sh -- This function updates manuals' related -# output files. +# manual_updateOutputFiles.sh -- This function exports documentation +# manual to different output formats. # # Copyright (C) 2009-2011 Alain Reguera Delgado # @@ -26,7 +26,10 @@ function manual_updateOutputFiles { - # Add division line to differentiate action output visually. + # Verify documentation manual base file structure. + cli_checkFiles ${MANUAL_BASEFILE}.texi 'f' + + # Ouput separator line. cli_printMessage '-' 'AsSeparatorLine' # Add the working copy root directory to directory stack to make @@ -36,10 +39,14 @@ function manual_updateOutputFiles { manual_updateOutputFileInfo manual_updateOutputFileHtml + manual_updateOutputFileXml manual_updateOutputFilePdf manual_updateOutputFilePlaintext # Remove the working copy root directory from directory stack. popd > /dev/null + # Output separator. + cli_printMessage "-" 'AsSeparatorLine' + }