From 4580e84859699587530afb4d64da909ab9349f59 Mon Sep 17 00:00:00 2001 From: Alain Reguera Delgado Date: Jun 09 2011 14:58:18 +0000 Subject: Add texinfo.sh --- diff --git a/Scripts/Functions/Help/Backends/Texinfo/texinfo.sh b/Scripts/Functions/Help/Backends/Texinfo/texinfo.sh new file mode 100755 index 0000000..6fb4cba --- /dev/null +++ b/Scripts/Functions/Help/Backends/Texinfo/texinfo.sh @@ -0,0 +1,129 @@ +#!/bin/bash +# +# texinfo.sh -- This function initialize variables and functions +# specific to texinfo backend. +# +# Copyright (C) 2009, 2010, 2011 The CentOS Artwork SIG +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +function texinfo { + + # Define manual backend directory. This is the place where all + # language specific documentation manuals, for the same backend + # documentation system, are stored in. + MANUAL_BACKEND="${MANUAL_BASEDIR}/$(cli_getRepoName ${FLAG_BACKEND} -d)" + + # Redefine manual base directory to refere the place where + # language-specific source files used by texinfo documentation + # backend are stored in. + MANUAL_BASEDIR="${MANUAL_BACKEND}/${MANUAL_LANG}" + + # Define base name for documentation manual files (without + # extension). This is the main file name used to build output + # related files (.info, .pdf, .xml, etc.). + MANUAL_BASEFILE="${MANUAL_BASEDIR}/${MANUAL_NAME}" + + # Define chapter name of directory where repository documentation + # entries will be stored in. + MANUAL_CHAPTER_NAME=$(cli_getRepoName "Directories" -d) + + # Define absolute path to chapter directory where repository + # documentation entries will be stored in. 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: represent the repository's directory + # structure as sections inside a chapter named `Directories' or + # something similar. Subsections and subsubsections will not have + # their own files, they all will be written inside the same + # section file that represents the repository documentation entry. + MANUAL_CHAPTER_DIR=${MANUAL_BACKEND}/${MANUAL_CHAPTER_NAME} + + # Define absolute path to backend template files. + MANUAL_TEMPLATE=${FUNCDIR}/${FUNCDIRNAM}/Templates/$(cli_getCurrentLocale) + + # Verify absolute path to backend template files. If the absolute + # path doesn't exist, use the English language templates. + if [[ ! -d $MANUAL_TEMPLATE ]];then + MANUAL_TEMPLATE=${FUNCDIR}/${FUNCDIRNAM}/Templates/en_US + fi + + # Create documentation structure, if it doesn't exist. + ${FLAG_BACKEND}_createStructure + + # Syncronize changes between repository and working copy. At this + # point, changes in the repository are merged in the working copy + # and changes in the working copy committed up to repository. + cli_syncroRepoChanges ${MANUAL_CHAPTER_DIR} + + # Execute backend functionalities. Notice that there are + # functionalities that need more than one action value in order to + # be executed (e.g., copying, and renaming), functionalities + # that need just one action value to be executed (e.g., + # documentation reading and edition) and functionalities that + # don't need action value at all (e.g., searching, reading and + # updating output files). This way, the execution of backend + # functionalities is splitted here. + if [[ $ACTIONNAM =~ "${FLAG_BACKEND}_(copy|rename|delete)Entry" ]];then + + # Execute backend action names that may need to use more than + # one action value. + ${ACTIONNAM} $@ + + elif [[ $ACTIONNAM =~ "${FLAG_BACKEND}_(search(Index|Node)|updateOutputFiles)" ]];then + + # Execute backend action names that might not need any action + # value as reference to do their work. + $ACTIONNAM $@ + + # Backend action names that don't need to use any action value + # as reference to do their work are of one-pass only. They are + # executed and then the script execution is finished. + exit + + else + + # Execute backend action names that use one action value, only. + for ACTIONVAL in $@;do + + # Define documentation entry. + MANUAL_ENTRY=$(${FLAG_BACKEND}_getEntry $ACTIONVAL) + + # Execute backend action names that may need to use more + # than one action value. + $ACTIONNAM + + done + + fi + + # Commit changes from working copy to central repository only. At + # this point, changes in the repository are not merged in the + # working copy, but chages in the working copy do are committed up + # to repository. + cli_commitRepoChanges ${MANUAL_CHAPTER_DIR} + + # Rebuild output files to propagate recent changes. + ${FLAG_BACKEND}_updateOutputFiles + +}