diff --git a/Scripts/Bash/Cli/Functions/Manual/manual.sh b/Scripts/Bash/Cli/Functions/Manual/manual.sh index e2d82e7..d305b90 100755 --- a/Scripts/Bash/Cli/Functions/Manual/manual.sh +++ b/Scripts/Bash/Cli/Functions/Manual/manual.sh @@ -2,7 +2,7 @@ # # manual.sh -- This function provides documentation features to # centos-art.sh script. Here we initialize documentation variables and -# call manual_getActions functions. +# call manual_getArguments functions. # # Copyright (C) 2009-2011 Alain Reguera Delgado # @@ -27,16 +27,94 @@ function manual { + local ACTIONNAM='' + local ACTIONVAL='' + # Define manuals base directory. This is the place where # documentation manuals base directory structures are stored and # organized in. MANUAL_BASEDIR="${HOME}/artwork/trunk/Manual" - # Define default value to target flag. The target flag (--to) - # controls final destination used by copy related actions. - local FLAG_TO='' + # Interpret arguments and options passed through command-line. + manual_getArguments + + # Redefine positional parameters using ARGUMENTS. At this point, + # option arguments have been removed from ARGUMENTS variable and + # only non-option arguments remain in it. + eval set -- "$ARGUMENTS" + + # Read arguments and build the action value from them. As + # convenction, we use non-option arguments to define the action + # value (ACTIONVAL) variable. + for ACTIONVAL in "$@";do + + if [[ $ACTIONVAL == '--' ]];then + continue + fi + + # Check action value passed through the command-line using + # source directory definition as reference. + cli_checkRepoDirSource + + # Define documentation entry. + ENTRY=$(manual_getEntry) + + # Define documentation entry directory. This is the directory + # where the entry file is stored. + ENTRY_DIR=$(dirname ${ENTRY} | sed -r 's!\.texi$!!') + + # Define documentation entry file (without extension). + ENTRY_FILE=$(basename ${ENTRY} | sed -r 's!\.texi$!!') + + # Define file name for documentation manual. This is the file + # used to initiate the structure of documentation manual. + MANUAL_NAME=repository + + # 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: represent the repository's directory + # structure as sections inside a chapter named Filesystem 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 directory. + MANUAL_CHAPTER_DIR=$(echo $ENTRY | cut -d / -f-7) + + # Define chapter name for the documentation entry we are + # working with. + MANUAL_CHAPTER_NAME=$(basename "$MANUAL_CHAPTER_DIR") + + # Define base name for documentation manual files (without + # extension). This is the main file name used to build texinfo + # related files (.info, .pdf, .xml, etc.). + MANUAL_BASEFILE="${MANUAL_BASEDIR}/${MANUAL_NAME}" + + # Set action preable. + cli_printActionPreamble "${MANUAL_BASEFILE}.texi" '' '' + + # 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_BASEDIR} + + # Execute action name. + if [[ $ACTIONNAM =~ "^${FUNCNAM}_[A-Za-z]+$" ]];then + eval $ACTIONNAM + else + cli_printMessage "`gettext "A valid action is required."`" 'AsErrorLine' + cli_printMessage "$(caller)" 'AsToKnowMoreLine' + fi - # Define command-line interface. - manual_getActions + # 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_BASEDIR} + done } diff --git a/Scripts/Bash/Cli/Functions/Manual/manual_getActions.sh b/Scripts/Bash/Cli/Functions/Manual/manual_getActions.sh deleted file mode 100755 index 4173a5c..0000000 --- a/Scripts/Bash/Cli/Functions/Manual/manual_getActions.sh +++ /dev/null @@ -1,159 +0,0 @@ -#!/bin/bash -# -# manual_getActions.sh -- This function interpretes arguments passed -# to `manual' functionality and calls actions accordingly. -# -# 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_getActions { - - # Define short options we want to support. - local ARGSS="" - - # Define long options we want to support. - local ARGSL="read:,search:,edit:,delete:,update:,copy:,rename:,to:" - - # 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 - - --read ) - ACTIONVAL="$2" - ACTIONNAM="${FUNCNAM}_searchNode" - shift 2 - ;; - - --search ) - ACTIONVAL="$2" - ACTIONNAM="${FUNCNAM}_searchIndex" - shift 2 - ;; - - --edit ) - ACTIONVAL="$2" - ACTIONNAM="${FUNCNAM}_editEntry" - shift 2 - ;; - - --delete ) - ACTIONVAL="$2" - ACTIONNAM="${FUNCNAM}_deleteEntry" - shift 2 - ;; - - --update ) - ACTIONVAL="$2" - ACTIONNAM="${FUNCNAM}_updateOutputFiles" - shift 2 - ;; - - --copy ) - ACTIONVAL="$2" - ACTIONNAM="${FUNCNAM}_copyEntry" - shift 2 - ;; - - --rename ) - ACTIONVAL="$2" - ACTIONNAM="${FUNCNAM}_renameEntry" - shift 2 - ;; - - --to ) - FLAG_TO="$(manual_getEntry "$2")" - shift 2 - ;; - - * ) - # Break options loop. - break - esac - done - - # Check action value passed through the command-line using source - # directory definition as reference. - cli_checkRepoDirSource - - # Define documentation entry. - ENTRY=$(manual_getEntry) - - # Define documentation entry directory. This is the directory - # where the entry file is stored. - ENTRY_DIR=$(dirname ${ENTRY} | sed -r 's!\.texi$!!') - - # Define documentation entry file (without extension). - ENTRY_FILE=$(basename ${ENTRY} | sed -r 's!\.texi$!!') - - # Define file name for documentation manual. This is the file used - # to initiate the structure of documentation manual. - MANUAL_NAME=repository - - # 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: represent the repository's directory - # structure as sections inside a chapter named Filesystem 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 directory. - MANUAL_CHAPTER_DIR=$(echo $ENTRY | cut -d / -f-7) - - # Define chapter name for the documentation entry we are working - # with. - MANUAL_CHAPTER_NAME=$(basename "$MANUAL_CHAPTER_DIR") - - # Define base name for documentation manual files (without - # extension). This is the main file name used to build texinfo - # related files (.info, .pdf, .xml, etc.). - MANUAL_BASEFILE="${MANUAL_BASEDIR}/${MANUAL_NAME}" - - # Set action preable. - cli_printActionPreamble "${MANUAL_BASEFILE}.texi" '' '' - - # Syncronize changes between the working copy and the central - # repository to bring down changes. - cli_syncroRepoChanges ${MANUAL_BASEDIR} - - # Execute action name. - if [[ $ACTIONNAM =~ "^${FUNCNAM}_[A-Za-z]+$" ]];then - eval $ACTIONNAM - else - cli_printMessage "`gettext "A valid action is required."`" 'AsErrorLine' - cli_printMessage "$(caller)" 'AsToKnowMoreLine' - fi - - # Syncronize changes between the working copy and the central - # repository to commit up changes. - cli_commitRepoChanges ${MANUAL_BASEDIR} - -} diff --git a/Scripts/Bash/Cli/Functions/Manual/manual_getArguments.sh b/Scripts/Bash/Cli/Functions/Manual/manual_getArguments.sh new file mode 100755 index 0000000..b75b400 --- /dev/null +++ b/Scripts/Bash/Cli/Functions/Manual/manual_getArguments.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# +# manual_getArguments.sh -- This function interpretes arguments passed +# to `manual' functionality and calls actions accordingly. +# +# 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_getArguments { + + # Define short options we want to support. + local ARGSS="" + + # Define long options we want to support. + local ARGSL="filter,quiet,answer,dont-commit-changes,read,search,edit,update" + + # 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 ) + FLAG_FILTER="$2" + shift 2 + ;; + + --quiet ) + FLAG_QUIET="true" + FLAG_DONT_COMMIT_CHANGES="true" + shift 1 + ;; + + --answer ) + FLAG_ANSWER="$2" + shift 2 + ;; + + --dont-commit-changes ) + FLAG_DONT_COMMIT_CHANGES="true" + shift 1 + ;; + + --read ) + ACTIONNAM="${FUNCNAM}_searchNode" + shift 1 + ;; + + --search ) + ACTIONNAM="${FUNCNAM}_searchIndex" + shift 1 + ;; + + --edit ) + ACTIONNAM="${FUNCNAM}_editEntry" + shift 1 + ;; + + --update ) + ACTIONNAM="${FUNCNAM}_updateOutputFiles" + shift 1 + ;; + + * ) + break + esac + done + + # Redefine ARGUMENTS variable using current positional parameters. + cli_doParseArgumentsReDef "$@" + +} diff --git a/Scripts/Bash/Cli/Functions/Manual/manual_searchNode.sh b/Scripts/Bash/Cli/Functions/Manual/manual_searchNode.sh index e48af6c..29a7b9a 100755 --- a/Scripts/Bash/Cli/Functions/Manual/manual_searchNode.sh +++ b/Scripts/Bash/Cli/Functions/Manual/manual_searchNode.sh @@ -33,7 +33,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=${MANUAL_BASEFILE}.info.bz2 + /usr/bin/info --node="Filesystem $(manual_getNode)" --file=${MANUAL_BASEFILE}.info.bz2 else manual_editEntry fi