diff --git a/Scripts/Functions/Help/Texinfo/texinfo.sh b/Scripts/Functions/Help/Texinfo/texinfo.sh index 2ce808f..8a63912 100755 --- a/Scripts/Functions/Help/Texinfo/texinfo.sh +++ b/Scripts/Functions/Help/Texinfo/texinfo.sh @@ -27,15 +27,12 @@ function texinfo { - # Define file name (without extension) for documentation manual. - MANUAL_NAME=$(cli_getRepoName "$(basename $MANUAL_TLDIR)" -f) - # Define file extension used by documentation manual source files. MANUAL_EXTENSION='texinfo' - # Define manual base directory. This is where language-specific - # documentation source files are stored in. - MANUAL_BASEDIR="${MANUAL_BACKEND_DIR}/${MANUAL_LANG}" + # Define manual base directory. This is the place where + # language-specific documentation source files are stored in. + MANUAL_BASEDIR="${MANUAL_TLDIR}/${MANUAL_L10N}" # Define base name for documentation manual files (without # extension). This is the main file name used to build output @@ -68,13 +65,18 @@ function texinfo { # section file that represents the repository documentation entry. MANUAL_CHAPTER_DIR=${MANUAL_BASEDIR}/${MANUAL_CHAPTER_NAME} - # Define absolute path to backend template files. - MANUAL_TEMPLATE=${FUNCDIR}/${FUNCDIRNAM}/Texinfo/Templates/${MANUAL_LANG} + # Define absolute path to template directory. + MANUAL_TEMPLATE=${FUNCDIR}/${FUNCDIRNAM}/$(cli_getRepoName \ + $MANUAL_BACKEND -d)/Templates + + # Define absolute path to language-speicific template directory. + MANUAL_TEMPLATE_L10N=${MANUAL_TEMPLATE}/${MANUAL_L10N} - # 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 + # Verify absolute path to language-speicific template directory. + # If it doesn't exist, use English language as default location to + # retrive template files. + if [[ ! -d $MANUAL_TEMPLATE_L10N ]];then + MANUAL_TEMPLATE_L10N=${MANUAL_TEMPLATE}/en_US fi # Create documentation structure, if it doesn't exist. @@ -83,7 +85,7 @@ function texinfo { # 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} + cli_syncroRepoChanges ${MANUAL_BASEDIR} # Execute backend functionalities. Notice that there are # functionalities that need more than one action value in order to @@ -130,7 +132,7 @@ function texinfo { # 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} + cli_commitRepoChanges ${MANUAL_BASEDIR} # Rebuild output files to propagate recent changes. ${MANUAL_BACKEND}_updateOutputFiles diff --git a/Scripts/Functions/Help/Texinfo/texinfo_createChapters.sh b/Scripts/Functions/Help/Texinfo/texinfo_createChapters.sh index 5fb89e0..43b8588 100755 --- a/Scripts/Functions/Help/Texinfo/texinfo_createChapters.sh +++ b/Scripts/Functions/Help/Texinfo/texinfo_createChapters.sh @@ -30,7 +30,7 @@ function texinfo_createChapters { # Define list of chapter templates files used as base to create # the chapters' documentation manual. local FILE='' - local FILES=$(cli_getFilesList ${MANUAL_TEMPLATE} \ + local FILES=$(cli_getFilesList ${MANUAL_TEMPLATE_L10N} \ --pattern='chapter(-menu|-nodes)?\.texinfo' --mindepth='2') # Loop through chapter structures and create them. diff --git a/Scripts/Functions/Help/Texinfo/texinfo_createStructure.sh b/Scripts/Functions/Help/Texinfo/texinfo_createStructure.sh index bf59c64..a8d0d79 100755 --- a/Scripts/Functions/Help/Texinfo/texinfo_createStructure.sh +++ b/Scripts/Functions/Help/Texinfo/texinfo_createStructure.sh @@ -31,21 +31,55 @@ function texinfo_createStructure { # exist, assume it was correctly created in the past. if [[ -d $MANUAL_BASEDIR ]];then return + else + cli_printMessage "`gettext "The manual you provided doesn't exist in your working copy."`" --as-banner-line + cli_printMessage "`gettext "Do you want to create this manual now?"`" --as-yesornorequest-line fi - # Print action message. + # Print separator line. cli_printMessage "-" --as-separator-line - cli_printMessage "`gettext "Creating manual structure."`" - # Create the language-specific directory used to store all files - # related to documentation manual. + # Initialize manual's information (e.g., title, subtitle, abstract). + local MANUAL_TITLE='' + local MANUAL_SUBTITLE='' + local MANUAL_ABSTRACT='' + + # Create manual's top-level directory. This is the place where all + # texinfo documentation manuals is stored in. + if [[ ! -d ${MANUAL_TLDIR} ]];then + + # Use subversion to create the top-level directory. + svn mkdir ${MANUAL_TLDIR} --quiet + + fi + + # Create manual's base directory. This is the place where + # language-specific documentation source files are stored in. svn mkdir ${MANUAL_BASEDIR} --quiet + # Retrive manual's information from standard input. + cli_printMessage "`gettext "Enter manual's title"`" --as-request-line + read MANUAL_TITLE + cli_printMessage "`gettext "Enter manual's subtitle"`" --as-request-line + read MANUAL_SUBTITLE + cli_printMessage "`gettext "Enter manual's abstract"`" --as-request-line + read MANUAL_ABSTRACT + + # Print action message. + cli_printMessage "-" --as-separator-line + cli_printMessage "`gettext "Creating manual's structure in texinfo format."`" + + # Verify manual's information. The title information must be + # non-empty value. + if [[ $MANUAL_TITLE == '' ]];then + cli_printMessage "`gettext "The manual's title cannot be empty."`" --as-error-line + fi + # Define file names required to build the manual. local FILE='' - local FILES=$(cli_getFilesList "${MANUAL_TEMPLATE}" \ + local FILES=$(cli_getFilesList "${MANUAL_TEMPLATE_L10N}" \ --maxdepth='1' \ - --pattern="repository(-menu|-nodes|-index)?\.${MANUAL_EXTENSION}") + --pattern="manual(-menu|-nodes|-index)?\.${MANUAL_EXTENSION}") # Verify manual base file. The manual base file is where the # documentation manual is defined in the backend format. Assuming @@ -53,9 +87,27 @@ function texinfo_createStructure { # created), use texinfo templates for it. for FILE in $FILES;do if [[ ! -f ${MANUAL_BASEDIR}/$(basename ${FILE}) ]];then + + # Be sure the file is inside the working copy and under + # version control. cli_checkFiles ${FILE} -wn - svn cp ${FILE} ${MANUAL_BASEDIR}/$(basename ${FILE}) --quiet - cli_replaceTMarkers ${MANUAL_BASEDIR}/$(basename ${FILE}) + + # Define target file. + local DST=${MANUAL_BASEDIR}/$(basename ${FILE} \ + | sed -r "s!manual!${MANUAL_NAME}!") + + # Copy using subversion to register this action. + svn cp ${FILE} $DST --quiet + + # Expand common translation markers inside target file. + cli_replaceTMarkers $DST + + # Expand specific translation markers inside target file. + sed -r -i -e "s!=MANUAL_NAME=!${MANUAL_NAME}!g" \ + -e "s!=MANUAL_TITLE=!${MANUAL_TITLE}!g" \ + -e "s!=MANUAL_SUBTITLE=!${MANUAL_SUBTITLE}!g" \ + -e "s!=MANUAL_ABSTRACT=!${MANUAL_ABSTRACT}!g" $DST + fi done @@ -73,6 +125,8 @@ function texinfo_createStructure { # 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_BASEDIR} + if [[ ! -d ${MANUAL_TLDIR} ]];then + cli_commitRepoChanges ${MANUAL_TLDIR} + fi } diff --git a/Scripts/Functions/Help/Texinfo/texinfo_makeSeeAlso.sh b/Scripts/Functions/Help/Texinfo/texinfo_makeSeeAlso.sh index 05b8010..9a86ad7 100755 --- a/Scripts/Functions/Help/Texinfo/texinfo_makeSeeAlso.sh +++ b/Scripts/Functions/Help/Texinfo/texinfo_makeSeeAlso.sh @@ -58,7 +58,7 @@ function texinfo_makeSeeAlso { NODECOMPS_TOTAL=$(($NODECOMPS_TOTAL - 1)) done) else - SEEALSO_LIST=$(echo '\\n@item @dots{}') + SEEALSO_LIST=$(echo '\n@item @dots{}') fi # Define the list type and merge its content. diff --git a/Scripts/Functions/Help/Texinfo/texinfo_updateNodes.sh b/Scripts/Functions/Help/Texinfo/texinfo_updateNodes.sh index 5eee612..d9582e2 100755 --- a/Scripts/Functions/Help/Texinfo/texinfo_updateNodes.sh +++ b/Scripts/Functions/Help/Texinfo/texinfo_updateNodes.sh @@ -50,7 +50,7 @@ function texinfo_updateNodes { # file. This is the file that hold the relation between # section template files and repository paths when # documentation entries are created. - local CONFFILE="${MANUAL_TEMPLATE}/${MANUAL_NAME}.conf" + local CONFFILE="${MANUAL_TEMPLATE_L10N}/manual.conf" # Verify existence of configuration file. cli_checkFiles $CONFFILE @@ -88,7 +88,7 @@ function texinfo_updateNodes { | sed -r 's![[:space:]]*!!g' | sed -r 's!^"(.+)"$!\1!') if [[ ${MANUAL_BASEDIR}/${INCL} =~ $CONFRHS ]];then - TEMPLATE="${MANUAL_TEMPLATE}/${CONFLHS}" + TEMPLATE="${MANUAL_TEMPLATE_L10N}/${CONFLHS}" break fi @@ -119,11 +119,11 @@ function texinfo_updateNodes { # Verify existence of chapter-nodes template files. If no # chapter-nodes template is found, stop script execution with # an error message. We cannot continue without it. - cli_checkFiles ${MANUAL_TEMPLATE}/${MANUAL_CHAPTER_NAME}/chapter-nodes.${MANUAL_EXTENSION} + cli_checkFiles ${MANUAL_TEMPLATE_L10N}/${MANUAL_CHAPTER_NAME}/chapter-nodes.${MANUAL_EXTENSION} # Output node information chapter-nodes template file using # the current texinfo menu information. - cat ${MANUAL_TEMPLATE}/${MANUAL_CHAPTER_NAME}/chapter-nodes.${MANUAL_EXTENSION} \ + cat ${MANUAL_TEMPLATE_L10N}/${MANUAL_CHAPTER_NAME}/chapter-nodes.${MANUAL_EXTENSION} \ | sed -r -e "s!=NODE=!${NODE}!g" -e "s!=SECT=!${SECT}!g" \ -e "s!=CIND=!${CIND}!g" -e "s!=INCL=!${INCL}!g" diff --git a/Scripts/Functions/Help/Texinfo/texinfo_updateOutputFileXhtml.sh b/Scripts/Functions/Help/Texinfo/texinfo_updateOutputFileXhtml.sh index 8f52124..b5a0cfb 100755 --- a/Scripts/Functions/Help/Texinfo/texinfo_updateOutputFileXhtml.sh +++ b/Scripts/Functions/Help/Texinfo/texinfo_updateOutputFileXhtml.sh @@ -26,12 +26,12 @@ function texinfo_updateOutputFileXhtml { # Verify initialization files used by texi2html. - cli_checkFiles ${MANUAL_BACKEND_DIR}/${MANUAL_NAME}-init.pl - cli_checkFiles ${MANUAL_TEMPLATE}/${MANUAL_NAME}-init.pl + cli_checkFiles ${MANUAL_TEMPLATE}/manual-init.pl + cli_checkFiles ${MANUAL_TEMPLATE_L10N}/manual-init.pl # Verify transformation files used to modify texi2html output. - cli_checkFiles ${MANUAL_BACKEND_DIR}/${MANUAL_NAME}.sed - cli_checkFiles ${MANUAL_TEMPLATE}/${MANUAL_NAME}.sed + cli_checkFiles ${MANUAL_TEMPLATE}/manual.sed + cli_checkFiles ${MANUAL_TEMPLATE_L10N}/manual.sed # Output action message. cli_printMessage "${MANUAL_BASEFILE}.xhtml.tar.bz2" --as-updating-line @@ -59,10 +59,10 @@ function texinfo_updateOutputFileXhtml { pushd ${MANUAL_NAME}-xhtml > /dev/null # Update xhtml files. Use texi2html to export from texinfo file - # format to xhtml using CentOS Web default visual style. + # format to xhtml using The CentOS Web default visual style. texi2html --lang=$(cli_getCurrentLocale --langcode-only) \ - --init-file=${MANUAL_BACKEND_DIR}/${MANUAL_NAME}-init.pl \ - --init-file=${MANUAL_TEMPLATE}/${MANUAL_NAME}-init.pl \ + --init-file=${MANUAL_TEMPLATE}/manual-init.pl \ + --init-file=${MANUAL_TEMPLATE_L10N}/manual-init.pl \ --output=${MANUAL_BASEDIR}/${MANUAL_NAME}-xhtml \ ${MANUAL_BASEDIR}/${MANUAL_NAME}.${MANUAL_EXTENSION} @@ -79,8 +79,8 @@ function texinfo_updateOutputFileXhtml { # structure to a completly different thing that can be handle # through classed inside CSS definitions. sed -r -i \ - -f ${MANUAL_BACKEND_DIR}/${MANUAL_NAME}.sed \ - -f ${MANUAL_TEMPLATE}/${MANUAL_NAME}.sed \ + -f ${MANUAL_TEMPLATE}/manual.sed \ + -f ${MANUAL_TEMPLATE_L10N}/manual.sed \ ${MANUAL_BASEFILE}-xhtml/*.xhtml # Compress directory structure where xhtml files are stored in. diff --git a/Scripts/Functions/Help/help.sh b/Scripts/Functions/Help/help.sh index 3ed6f7d..3a69c94 100755 --- a/Scripts/Functions/Help/help.sh +++ b/Scripts/Functions/Help/help.sh @@ -31,26 +31,32 @@ function help { # Initialize search option (`--search'). This option is used to # look for documentation inside documentation backends. - FLAG_SEARCH="" + local FLAG_SEARCH="" - # Define manual top level directory. This is where - # backend-specific documentation structures are stored in. - MANUAL_TLDIR="$(cli_getRepoTLDir)/Manuals/TCAR-UG" + # Initialize manual's ID. By default, The CentOS Artwork + # Repository User's Guide is used. This value can be changed + # using the `--manual' option from the command-line. + local FLAG_MANUAL="TCAR-UG" - # Define manual language. - MANUAL_LANG=$(cli_getCurrentLocale) + # Initialize manual's language. + local MANUAL_L10N=$(cli_getCurrentLocale) - # Define default documentation backend. - MANUAL_BACKEND='texinfo' - - # Define backend directory path. This is the place where common - # files to all languages and language-specific directories are - # stored in. - MANUAL_BACKEND_DIR=${MANUAL_TLDIR}/$(cli_getRepoName $MANUAL_BACKEND -d) + # Initialize manual's backend. By default, texinfo is used as + # documentation backend. This value can be changed using the + # `--backend' option from the command-line. + local MANUAL_BACKEND='texinfo' # Interpret option arguments passed through the command-line. ${FUNCNAM}_getOptions + # Initialize manual's backend directory. This is the place where + # the backend specific documentation structure is stored in. + MANUAL_TLDIR="${HOME}/artwork/branches/Manuals/$(cli_getRepoName \ + $MANUAL_BACKEND -d)/${FLAG_MANUAL}" + + # Initialize manual's file name (without extension). + MANUAL_NAME=$(cli_getRepoName "$(basename $FLAG_MANUAL)" -f) + # Redefine positional parameters using ARGUMENTS. At this point, # option arguments have been removed from ARGUMENTS variable and # only non-option arguments remain in it. @@ -63,8 +69,4 @@ function help { # Execute backend-specific actions. ${MANUAL_BACKEND} $@ - # Unset backend-specific functionalities. - cli_unsetFunctions "${FUNCDIR}/${FUNCDIRNAM}/$(cli_getRepoName \ - ${MANUAL_BACKEND} -d)" "${MANUAL_BACKEND}" - } diff --git a/Scripts/Functions/Help/help_getOptions.sh b/Scripts/Functions/Help/help_getOptions.sh index 8b801d7..50e234f 100755 --- a/Scripts/Functions/Help/help_getOptions.sh +++ b/Scripts/Functions/Help/help_getOptions.sh @@ -29,7 +29,7 @@ function help_getOptions { local ARGSS="" # Define long options we want to support. - local ARGSL="quiet,answer-yes,dont-commit-changes,backend:,read,search:,edit,update,copy,delete,rename" + local ARGSL="quiet,answer-yes,dont-commit-changes,backend:,read,search:,edit,update,copy,delete,rename,manual:" # Parse arguments using getopt(1) command parser. cli_parseArguments @@ -63,6 +63,11 @@ function help_getOptions { shift 2 ;; + --manual ) + FLAG_MANUAL=$(cli_getRepoName "$2" -f | tr '[:lower:]' '[:upper:]') + shift 2 + ;; + --search ) ACTIONNAM="searchIndex" FLAG_SEARCH="$2"