Blame Manual/repository-html/repository_67.html

010b2d
010b2d
<html>
d1db00
d1db00
organization, and administration of CentOS Artwork Repository.
d1db00
d1db00
Copyright C 2009-2011 Alain Reguera Delgado
010b2d
010b2d
Permission is granted to copy, distribute and/or modify this document
010b2d
under the terms of the GNU Free Documentation License, Version 1.2 or
010b2d
any later version published by the Free Software Foundation; with no
010b2d
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
010b2d
copy of the license is included in the section entitled GNU Free
010b2d
Documentation License.  
010b2d
-->
9bfd15
010b2d
010b2d
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
010b2d
            Karl Berry  <karl@freefriends.org>
010b2d
            Olaf Bachmann <obachman@mathematik.uni-kl.de>
010b2d
            and many others.
010b2d
Maintained by: Many creative people <dev@texi2html.cvshome.org>
010b2d
Send bugs and suggestions to <users@texi2html.cvshome.org>
010b2d
010b2d
-->
010b2d
<head>
9bfd15
<title>CentOS Artwork Repository: 2.63 The trunk/Scripts/Bash/Cli/Functions Directory</title>
010b2d
9bfd15
<meta name="description" content="CentOS Artwork Repository: 2.63 The trunk/Scripts/Bash/Cli/Functions Directory">
9bfd15
<meta name="keywords" content="CentOS Artwork Repository: 2.63 The trunk/Scripts/Bash/Cli/Functions Directory">
010b2d
<meta name="resource-type" content="document">
010b2d
<meta name="distribution" content="global">
010b2d
<meta name="Generator" content="texi2html 1.76">
010b2d
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
010b2d
<style type="text/css">
010b2d
010b2d
@import "/home/centos/artwork/trunk/Identity/Models/Css/Texi2html/common.css";
010b2d
010b2d
a.summary-letter {text-decoration: none}
010b2d
pre.display {font-family: serif}
010b2d
pre.format {font-family: serif}
010b2d
pre.menu-comment {font-family: serif}
010b2d
pre.menu-preformatted {font-family: serif}
010b2d
pre.smalldisplay {font-family: serif; font-size: smaller}
010b2d
pre.smallexample {font-size: smaller}
010b2d
pre.smallformat {font-family: serif; font-size: smaller}
010b2d
pre.smalllisp {font-size: smaller}
010b2d
span.sansserif {font-family:sans-serif; font-weight:normal;}
010b2d
ul.toc {list-style: none}
010b2d
-->
010b2d
</style>
010b2d
010b2d
010b2d
</head>
010b2d
010b2d
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
010b2d
010b2d
9bfd15
[ < ]
9bfd15
[ > ]
010b2d
   
671838
[ << ]
671838
[ Up ]
9bfd15
[ >> ]
010b2d
   
010b2d
   
010b2d
   
010b2d
   
a84624
[Top]
a84624
[Contents]
9bfd15
[Index]
a84624
[ ? ]
010b2d
9bfd15
9bfd15
9bfd15

2.63 The <tt>`trunk/Scripts/Bash/Cli/Functions'</tt> Directory

063806
063806
9bfd15
671838

2.63.1 Goals

063806
9bfd15

The <tt>`trunk/Scripts/Bash/Functions'</tt> directory exists to organize

9bfd15
<tt>`centos-art.sh'</tt> specific functionalities.
9bfd15

063806
9bfd15
671838

2.63.2 Description

f66721
9bfd15

The specific functions of <tt>`centos-art.sh'</tt> script are designed

9bfd15
with "Software Toolbox" philosophy (see (coreutils.info)Toolbox introduction) in mind: each program "should do one
9bfd15
thing well".  Inside <tt>`centos-art.sh'</tt> script, each specific
9bfd15
functionality is considered a program that should do one thing well.
9bfd15
Of course, if you find that they still don't do it, feel free to
9bfd15
improve them in order for them to do so.
9bfd15

9bfd15

The specific functions of <tt>`centos-art.sh'</tt> script are organized

9bfd15
inside specific directories under <tt>`trunk/Scripts/Bash/Functions'</tt>
9bfd15
location. Each specific function directory should be named as the
9bfd15
function it represents, with the first letter in uppercase. For
9bfd15
example, if the function name is render, the specific function
9bfd15
directory for it would be <samp>`trunk/Scripts/Bash/Functions/Render'</samp>.
9bfd15

9bfd15

To better understand how specific functions of <tt>`centos-art.sh'</tt>

9bfd15
script are designed, lets create one function which only goal is to
9bfd15
output different kind of greetings to your screen.
9bfd15

9bfd15

When we create specific functions for <tt>`centos-art.sh'</tt> script it

9bfd15
is crucial to know what these functions will do exactly and if there
9bfd15
is any function that already does what we intend to do. If there is no
9bfd15
one, it is good time to create them then. Otherwise, if
9bfd15
functionalities already available don't do what you exactly expect,
9bfd15
contact their authors and work together to improve them.
9bfd15

9bfd15
Info

Tip

Join CentOS developers mailing list

9bfd15
centos-art@centos.org to share your ideas.
9bfd15

9bfd15
9bfd15

It is also worth to know what global functions and variables do we

9bfd15
have available inside <tt>`centos-art.sh'</tt> script, so advantage can be
9bfd15
taken from them. Global variables are defined inside global function
9bfd15
scripts. Global functions scripts are stored immediatly under
9bfd15
<tt>`trunk/Scripts/Bash/Functions'</tt> directory, in files begining with
9bfd15
<samp>`cli'</samp> prefix.
9bfd15

9bfd15

OK, let's begin with our functionality example.

9bfd15

9bfd15

What function name do we use? Well, lets use greet. Note that

9bfd15
<samp>`hello'</samp> word is not a verb; but an expression, a kind of
9bfd15
greeting, an interjection specifically. In contrast, <samp>`greet'</samp> is a
9bfd15
verb and describes what we do when we say <samp>`Hello!'</samp>, <samp>`Hi!'</samp>,
9bfd15
and similar expressions.
9bfd15

9bfd15

So far, we've gathered the following function information:

9bfd15

9bfd15
Name: greet
9bfd15
Path: trunk/Scripts/Bash/Functions/Greet
9bfd15
File: trunk/Scripts/Bash/Functions/Greet/greet.sh
9bfd15
9bfd15

The <tt>`greet.sh'</tt> function script is the first file

9bfd15
<tt>`centos-art.sh'</tt> script loads when the <samp>`greet'</samp> functionality
9bfd15
is called using commands like <samp>`centos-art greet --hello='World''</samp>.
9bfd15
The <tt>`greet.sh'</tt> function script contains the greet function
9bfd15
definition. 
9bfd15

9bfd15

Inside <tt>`centos-art.sh'</tt> script, as convenction, each function

9bfd15
script has one top commentary, followed by one blank line, and then
9bfd15
one function defintion below it only.
9bfd15

9bfd15

Inside <tt>`centos-art.sh'</tt> script functions, top commentaries have

9bfd15
the following components: the functionality description, one-line for
9bfd15
copyright note with your personal information,  the license under
9bfd15
which the function source code is released --the <tt>`centos-art.sh'</tt>
9bfd15
script is released as GPL, so do all its functions--, the $Id$
9bfd15
keyword of Subversion is later expanded by svn propset
9bfd15
command.
9bfd15

9bfd15

In our greet function example, top commentary for

9bfd15
<tt>`greet.sh'</tt> function script would look like the following:
9bfd15

9bfd15
#!/bin/bash
9bfd15
#
9bfd15
# greet.sh -- This function outputs different kind of greetings to
9bfd15
# your screen. Use this function to understand how centos-art.sh
9bfd15
# script specific functionalities work.
9bfd15
#
9bfd15
# Copyright (C) YEAR YOURFULLNAME
9bfd15
#
9bfd15
# This program is free software; you can redistribute it and/or modify
9bfd15
# it under the terms of the GNU General Public License as published by
9bfd15
# the Free Software Foundation; either version 2 of the License, or
9bfd15
# (at your option) any later version.
9bfd15
# 
9bfd15
# This program is distributed in the hope that it will be useful, but
9bfd15
# WITHOUT ANY WARRANTY; without even the implied warranty of
9bfd15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
9bfd15
# General Public License for more details.
9bfd15
#
9bfd15
# You should have received a copy of the GNU General Public License
9bfd15
# along with this program; if not, write to the Free Software
9bfd15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
9bfd15
# USA.
9bfd15
# 
9bfd15
# ----------------------------------------------------------------------
9bfd15
# $Id$
9bfd15
# ----------------------------------------------------------------------
9bfd15
9bfd15

After top commentary, separated by one blank line, the greet

9bfd15
function definition would look like the following:
9bfd15

9bfd15
function greet {
f66721
9bfd15
    # Define global variables.
063806
9bfd15
    # Define command-line interface.
9bfd15
    greet_getActions
9bfd15
9bfd15
}
9bfd15
9bfd15

The first definition inside greet function, are global

9bfd15
variables that will be available along greet function execution
9bfd15
environment. This time we didn't use global variable definitions for
9bfd15
greet function execution environment, so we left that section
9bfd15
empty.
9bfd15

9bfd15

Later, we call greet_getActions function to define the

9bfd15
command-line interface of greet functionality. The command-line
9bfd15
interface of greet functionality defines what and how actions
9bfd15
are performed, based on arguments combination passed to
9bfd15
<tt>`centos-art.sh'</tt> script.
9bfd15

9bfd15
function greet_getActions {
9bfd15
9bfd15
    case "$ACTIONNAM" in
9bfd15
9bfd15
        --hello )
9bfd15
            greet_doHello
9bfd15
            ;;
9bfd15
9bfd15
        --bye )
9bfd15
            greet_doBye
9bfd15
            ;;
9bfd15
9bfd15
        * )
9bfd15
            cli_printMessage "`gettext "The option provided is not valid."`"
9bfd15
            cli_printMessage "$(caller)" 'AsToKnowMoreLine'
9bfd15
9bfd15
    esac
9bfd15
9bfd15
}
9bfd15
9bfd15

The ACTIONNAM global variable is defined in <tt>`cli.sh'</tt>

9bfd15
function script and contains the value passed before the equal sign
9bfd15
(i.e., <samp>`='</samp>) in the second command-line argument of
9bfd15
<tt>`centos-art.sh'</tt> script. For example, if the second command-line
9bfd15
argument is <samp>`--hello='World''</samp>, the value of ACTIONNAM
9bfd15
variable would be <samp>`--hello'</samp>.  Using this configuration let us
9bfd15
deside which action to perform based on the action name passed to
9bfd15
<tt>`centos-art.sh'</tt> script as second argument. 
9bfd15

9bfd15

The greet function definition makes available two valid

9bfd15
greetings through <samp>`--hello'</samp> and <samp>`--bye'</samp> options.  If no
9bfd15
one of them is provided as second command-line argument, the <samp>`*'</samp>
9bfd15
case is evaluated instead. 
9bfd15

9bfd15

The <samp>`*'</samp> case and its two lines further on should always be

9bfd15
present in <tt>`_getActions.sh'</tt> function scripts, no matter what
9bfd15
specific functionality you are creating. This convenction helps the
9bfd15
user to find out documentation about current functionality in use,
9bfd15
when no valid action is provided.
9bfd15

9bfd15

The greet_doHello and greet_doBye function definitions

9bfd15
are the core of greet specific functionality.  In such function
9bfd15
definitions we set what our greet function really does: to
9bfd15
output different kinds of greetings.
9bfd15

9bfd15
function greet_doHello {
9bfd15
9bfd15
    cli_printMessage "`gettext "Hello"` $ACTIONVAL"
9bfd15
9bfd15
}
9bfd15
9bfd15

The greet_doHello function definition is stored in

9bfd15
<tt>`greet_doHello.sh'</tt> function script. 
9bfd15

9bfd15
function greet_doBye {
9bfd15
9bfd15
    cli_printMessage "`gettext "Goodbye"` $ACTIONVAL"
9bfd15
9bfd15
}
9bfd15
9bfd15

The greet_doBye function definition is stored in the

9bfd15
<tt>`greet_doBye.sh'</tt> function script. 
9bfd15

9bfd15

Both <tt>`greet_doHello.sh'</tt> and <tt>`greet_doBye.sh'</tt> function

9bfd15
scripts are stored inside greet function directory path (i.e.
9bfd15
<tt>`trunk/Scripts/Bash/Functions/Greet'</tt>).
9bfd15

9bfd15

The ACTIONVAL global variable is defined in <tt>`cli.sh'</tt>

9bfd15
function script and contains the value passed after the equal sign
9bfd15
(i.e., <samp>`='</samp>) in the second command-line argument of
9bfd15
<tt>`centos-art.sh'</tt> script. For example, if the second command-line
9bfd15
argument is <samp>`--hello='World''</samp>, the value of ACTIONVAL
9bfd15
variable would be <samp>`World'</samp> without quotes.
9bfd15

9bfd15

Let's see how greet specific functionality files are organzied

9bfd15
under greet function directory. To see file organization we use
9bfd15
the tree command:
9bfd15

9bfd15
trunk/Scripts/Bash/Functions/Greet
9bfd15
|-- greet_doBye.sh
9bfd15
|-- greet_doHello.sh
9bfd15
|-- greet_getActions.sh
9bfd15
`-- greet.sh
9bfd15
9bfd15

To try the greet specific functionality we've just created,

9bfd15
pass the function name (i.e., <samp>`greet'</samp>) as first argument to
9bfd15
<tt>`centos-art.sh'</tt> script, and any of the valid options as second
9bfd15
argument. Some examples are illustrated below:
9bfd15

9bfd15
[centos@projects ~]$ centos-art greet --hello='World'
9bfd15
Hello World
9bfd15
[centos@projects ~]$ centos-art greet --bye='World'
9bfd15
Goodbye World
9bfd15
[centos@projects ~]$ 
9bfd15
9bfd15

The word <samp>`World'</samp> in the examples above can be anything. In fact,

9bfd15
change it to have a little fun.
9bfd15

9bfd15

Now that we have a specific function that works as we expect, it is

9bfd15
time to document it.  To document greet specific functionality,
9bfd15
we use its directory path and the manual functionality
9bfd15
(-- Removed(pxref:trunk Scripts Bash Functions Manual) --) of <tt>`centos-art.sh'</tt>
9bfd15
script, just as the following command illustrates: 
9bfd15

9bfd15
centos-art manual --edit=trunk/Scripts/Bash/Functions/Greet
9bfd15
9bfd15

To have a well documented function helps user to understand how your

9bfd15
function really works, and how it should be used.  When no valid
9bfd15
action is passed to a function, the <tt>`centos-art.sh'</tt> script uses
9bfd15
the function documentation entry as vehicle to communicate which the
9bfd15
valid functions are. When no documentation entry exists for a
9bfd15
function, the <tt>`centos-art.sh'</tt> script informs that no
9bfd15
documentation entry exists for such function and requests user to
9bfd15
create it right at that time.
9bfd15

9bfd15

Now that we have documented our function, it is time to translate its

9bfd15
output messages to different languages. To translate specific
9bfd15
functionality output messages to different languages we use the
9bfd15
locale functionality (-- Removed(pxref:trunk Scripts Bash Functions
9bfd15
Locale) --) of <tt>`centos-art.sh'</tt> script, just as the following command
9bfd15
illustrates:
9bfd15

9bfd15
centos-art locale --edit
9bfd15
9bfd15
Warning

Warning

To translate output messages in different languages,

9bfd15
your system locale information --as in LANG environment
9bfd15
variable-- must be set to that locale you want to produce translated
9bfd15
messages for. For example, if you want to produce translated messages
9bfd15
for Spanish language, your system locale information must be set to
9bfd15
<samp>`es_ES.UTF-8'</samp>, or similar, first.
9bfd15

9bfd15
9bfd15

Well, it seems that our example is rather complete by now.

9bfd15

9bfd15

In greet function example we've described so far, we only use

9bfd15
cli_printMessage global function in action specific function
9bfd15
definitions in order to print messages, but more interesting things
9bfd15
can be achieved inside action specific function definitions.  For
9bfd15
example, if you pass a directory path as action value in second
9bfd15
argument, you could retrive a list of files from therein, and process
9bfd15
them. If the list of files turns too long or you just want to control
9bfd15
which files to process, you could add the third argument in the form
9bfd15
<samp>`--filter='regex''</samp> and reduce the amount of files to process
9bfd15
using a regular expression pattern.
9bfd15

9bfd15

The greet function described in this section may serve you as

9bfd15
an introduction to understand how specific functionalities work inside
9bfd15
<tt>`centos-art.sh'</tt> script. With some of luck this introduction will
9bfd15
also serve you as motivation to create your own <tt>`centos-art.sh'</tt>
9bfd15
script specific functionalities.
9bfd15

9bfd15

By the way, the greet functionality doesn't exist inside

9bfd15
<tt>`centos-art.sh'</tt> script yet. Would you like to create it?
9bfd15

9bfd15
9bfd15
671838

2.63.3 Usage

f66721
9bfd15
9bfd15
9bfd15

2.63.3.1 Global variables

9bfd15
9bfd15

The following global variables of <tt>`centos-art.sh'</tt> script, are

9bfd15
available for you to use inside specific functions:
9bfd15

9bfd15
9bfd15
<u>Variable:</u> TEXTDOMAIN
9bfd15
9bfd15
9bfd15

Default domain used to retrieve translated messages. This value is set

9bfd15
in <tt>`initFunctions.sh'</tt> and shouldn't be changed.
9bfd15

9bfd15
9bfd15
9bfd15
<u>Variable:</u> TEXTDOMAINDIR
9bfd15
9bfd15
9bfd15

Default directory used to retrieve translated messages. This value is

9bfd15
set in <tt>`initFunctions.sh'</tt> and shouldn't be changed.
9bfd15

9bfd15
9bfd15
9bfd15
<u>Variable:</u> FUNCNAM
9bfd15
9bfd15
9bfd15

Define function name.

9bfd15

9bfd15

Function names associate sets of actions. There is one set of actions

9bfd15
for each unique function name inside <tt>`centos-art.sh'</tt> script.
9bfd15

9bfd15

Dunction names are passed as first argument in <tt>`centos-art.sh'</tt>

9bfd15
command-line interface. For example, in the command <samp>`centos-art
9bfd15
render --entry=path/to/dir --filter=regex'</samp>, the ACTION passed to
9bfd15
<tt>`centos-art.sh'</tt> script is <samp>`render'</samp>.
9bfd15

9bfd15

When first argument is not provided, the <tt>`centos-art.sh'</tt> script

9bfd15
immediatly ends its execution.
9bfd15

9bfd15
9bfd15
9bfd15
<u>Variable:</u> FUNCDIR
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
<u>Variable:</u> FUNCDIRNAME
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
<u>Variable:</u> FUNCSCRIPT
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
<u>Variable:</u> FUNCCONFIG
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
9bfd15
<u>Variable:</u> ACTIONNAM
9bfd15
9bfd15
9bfd15

Define action name.

9bfd15

9bfd15

Each action name identifies an specific action to perform, inside an

9bfd15
specific function.
9bfd15

9bfd15

Action name names aare passed as second argument in

9bfd15
<tt>`centos-art.sh'</tt> command-line interface. For example, in the
9bfd15
command <samp>`centos-art render --entry=path/to/dir --filter=regex'</samp>,
9bfd15
the ACTIONNAM passed to <tt>`centos-art.sh'</tt> script is
9bfd15
<samp>`--entry'</samp>.
9bfd15

9bfd15

When second argument is not provided, the <tt>`centos-art.sh'</tt> script

9bfd15
immediatly ends its execution.
9bfd15

9bfd15
9bfd15
9bfd15
<u>Variable:</u> ACTIONVAL
9bfd15
9bfd15
9bfd15

Define action value.

9bfd15

9bfd15

Action values are associated to just one action name. Action values

9bfd15
contain the working copy entry over which its associated action will be
9bfd15
performed in.  Working copy entries can be files or directories inside
9bfd15
the working copy.
9bfd15

9bfd15
9bfd15
9bfd15
<u>Variable:</u> REGEX
9bfd15
9bfd15
9bfd15

Define regular expression used as pattern to build the list of files

9bfd15
to process.
9bfd15

9bfd15

By default, REGEX variable is set to .+ to match all

9bfd15
files.
9bfd15

9bfd15

Functions that need to build a list of files to process use the option

9bfd15
<samp>`--filter'</samp> to redefine REGEX variable default value, and
9bfd15
so, control the amount of files to process.
9bfd15

9bfd15
9bfd15
9bfd15
<u>Variable:</u> ARGUMENTS
9bfd15
9bfd15
9bfd15

Define optional arguments.

9bfd15

9bfd15

Optional arguments, inside <tt>`centos-art.sh'</tt> script, are considered

9bfd15
as all command-line arguments passed to <tt>`centos-art.sh'</tt> script,
9bfd15
from third argument position on. For example, in the command
9bfd15
<samp>`centos-art render --entry=path/to/dir --filter=regex'</samp> , the
9bfd15
optional arguments are from <samp>`--filter=regex'</samp> argument on.
9bfd15

9bfd15

Optional arguments are parsed using getopt command through

9bfd15
the following base construction: 
9bfd15

9bfd15
# Define short options we want to support.
9bfd15
local ARGSS=""
9bfd15
9bfd15
# Define long options we want to support.
9bfd15
local ARGSL="filter:,to:"
9bfd15
9bfd15
# Parse arguments using getopt(1) command parser.
9bfd15
cli_doParseArguments
9bfd15
9bfd15
# Reset positional parameters using output from (getopt) argument
9bfd15
# parser.
9bfd15
eval set -- "$ARGUMENTS"
9bfd15
9bfd15
# Define action to take for each option passed.
9bfd15
while true; do
9bfd15
    case "$1" in
9bfd15
        --filter )
9bfd15
            REGEX="$2" 
9bfd15
            shift 2
9bfd15
            ;;
9bfd15
        --to )
9bfd15
            TARGET="$2" 
9bfd15
            shift 2
9bfd15
            ;;
9bfd15
        * )
9bfd15
            break
9bfd15
    esac
9bfd15
done
9bfd15
9bfd15

Optional arguments provide support to command options inside

9bfd15
<tt>`centos-art.sh'</tt> script. For instance, consider the Subversion
9bfd15
(svn) command, where there are many options (e.g.,
9bfd15
<samp>`copy'</samp>, <samp>`delete'</samp>, <samp>`move'</samp>, etc), and inside each
9bfd15
option there are several modifiers (e.g., <samp>`--revision'</samp>,
9bfd15
<samp>`--message'</samp>, <samp>`--username'</samp>, etc.) that can be combined one
9bfd15
another in their short or long variants. 
9bfd15

9bfd15

The ARGUMENTS variable is used to store arguments passed from

9bfd15
command-line for later use inside <tt>`centos-art.sh'</tt> script. Storing
9bfd15
arguments is specially useful when we want to run a command with some
9bfd15
specific options from them. Consider the following command:
9bfd15

9bfd15
centos-art path --copy=SOURCE --to=TARGET --message="The commit message goes here." --username='johndoe'
9bfd15
9bfd15

In the above command, the <samp>`--message'</samp>, and <samp>`--username'</samp>

9bfd15
options are specific to svn copy command. In such cases,
9bfd15
options are not interpreted by <tt>`centos-art.sh'</tt> script itself.
9bfd15
Instead, the <tt>`centos-art.sh'</tt> script uses getopt to
9bfd15
retrive them and store them in the ARGUMENTS variable for later
9bfd15
use, as described in the following command:
9bfd15

9bfd15
# Build subversion command to duplicate locations inside the
9bfd15
# workstation.
9bfd15
eval svn copy $SOURCE $TARGET --quiet $ARGUMENTS
9bfd15
9bfd15

When getopt parses ARGUMENTS, we may use short options

9bfd15
(e.g., <samp>`-m'</samp>) or long options (e.g., <samp>`--message'</samp>). When
9bfd15
we use short options, arguments are separated by one space from the
9bfd15
option (e.g., <samp>`-m 'This is a commit message.''</samp>).  When we use
9bfd15
long options arguments are separated by an equal sign (<samp>`='</samp>)
9bfd15
(e.g., <samp>`--message='This is a commit message''</samp>).
9bfd15

9bfd15

In order for getopt to parse ARGUMENTS correctly, it

9bfd15
is required to provide the short and long definition of options that
9bfd15
will be passed or at least supported by the command performing the
9bfd15
final action the function script exists for.
9bfd15

9bfd15

As convenction, inside <tt>`centos-art.sh'</tt> script, short option

9bfd15
definitions are set in the ARGSS variable; and long option
9bfd15
definitions are set in the ARGSL variable.
9bfd15

9bfd15

When you define short and long options, it may be needed to define

9bfd15
which of these option arguments are required and which not. To define
9bfd15
an option argument as required, you need to set one colon <samp>`:'</samp>
9bfd15
after the option definition (e.g., <samp>`-o m: -l message:'</samp>).  On
9bfd15
the other hand, to define an option argument as not required, you need
9bfd15
to set two colons <samp>`::'</samp> after the option definition (e.g.,
9bfd15
<samp>`-o m:: -l message::'</samp>).
9bfd15

9bfd15
9bfd15
9bfd15
<u>Variable:</u> EDITOR
9bfd15
9bfd15
9bfd15

Default text editor.

9bfd15

9bfd15

The <tt>`centos-art.sh'</tt> script uses default text EDITOR to edit

9bfd15
pre-commit subversion messages, translation files, configuration
9bfd15
files, script files, and similar text-based files.
9bfd15

9bfd15

If EDITOR environment variable is not set, <tt>`centos-art.sh'</tt>

9bfd15
script uses <tt>`/usr/bin/vim'</tt> as default text editor. Otherwise, the
9bfd15
following values are recognized by <tt>`centos-art.sh'</tt> script:
9bfd15

063806
    9bfd15
  • <tt>`/usr/bin/vim'</tt>
  • 9bfd15
  • <tt>`/usr/bin/emacs'</tt>
  • 9bfd15
  • <tt>`/usr/bin/nano'</tt>
  • 063806
    063806
    9bfd15

    If no one of these values is set in EDITOR environment variable,

    9bfd15
    <tt>`centos-art.sh'</tt> uses <tt>`/usr/bin/vim'</tt> text editor by default. 
    9bfd15

    063806
    9bfd15
    9bfd15
    9bfd15

    2.63.3.2 Global functions

    9bfd15
    9bfd15

    Function scripts stored directly under

    9bfd15
    <tt>`trunk/Scripts/Bash/Functions/'</tt> directory are used to define
    9bfd15
    global functions.  Global functions can be used inside action specific
    9bfd15
    functionalities and or even be reused inside themselves. This section
    9bfd15
    provides introductory information to global functions you can use
    9bfd15
    inside <tt>`centos-art.sh'</tt> script.
    9bfd15

    9bfd15
    9bfd15
    <u>Function:</u> cli_checkActionArguments
    9bfd15
    9bfd15
    9bfd15

    Validate action value (ACTIONVAL) variable.

    9bfd15

    9bfd15

    The action value variable can take one of the following values:

    9bfd15

    9bfd15
      9bfd15
    1. Path to one directory inside the local working copy,
    2. 9bfd15
    3. Path to one file inside the local working copy,
    4. 9bfd15
      9bfd15
      9bfd15

      If another value different from that specified above is passed to

      9bfd15
      action value variable, the <tt>`centos-art.sh'</tt> script prints an error
      9bfd15
      message and ends script execution.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_checkFiles FILE [TYPE]
      9bfd15
      9bfd15
      9bfd15

      Verify file existence.

      9bfd15

      9bfd15

      cli_checkFiles receives a FILE absolute path and performs

      9bfd15
      file verification as specified in TYPE.  When TYPE is not
      9bfd15
      specified, cli_checkFiles verifies FILE existence, no
      9bfd15
      matter what kind of file it be.  If TYPE is specified, use one
      9bfd15
      of the following values:
      9bfd15

      9bfd15
      9bfd15
      <samp>`d'</samp>
      9bfd15
      <samp>`directory'</samp>
      9bfd15

      Ends script execution if FILE is not a directory.

      9bfd15

      9bfd15

      When you verify directories with cli_checkFiles, if directory doesn't

      9bfd15
      exist, <tt>`centos-art.sh'</tt> script asks you for confirmation in order
      9bfd15
      to create that directory. If you answer positively,
      9bfd15
      <tt>`centos-art.sh'</tt> script creates that directory and continues
      9bfd15
      script flows normally. Otherwise, if you answer negatively,
      9bfd15
      <tt>`centos-art.sh'</tt> ends script execution with an error and
      9bfd15
      documentation message.
      9bfd15

      9bfd15
      9bfd15
      <samp>`f'</samp>
      9bfd15
      <samp>`regular-file'</samp>
      9bfd15

      Ends script execution if FILE is not a regular file.

      9bfd15

      9bfd15
      <samp>`h'</samp>
      9bfd15
      <samp>`symbolic-link'</samp>
      9bfd15

      Ends script execution if FILE is not a symbolic link.

      9bfd15

      9bfd15
      <samp>`x'</samp>
      9bfd15
      <samp>`execution'</samp>
      9bfd15

      Ends script execution if FILE is not executable.

      9bfd15

      9bfd15
      <samp>`fh'</samp>
      9bfd15

      Ends script execution if FILE is neither a regular file nor a

      9bfd15
      symbolic link.
      9bfd15

      9bfd15
      <samp>`fd'</samp>
      9bfd15

      Ends script execution if FILE is neither a regular file nor a

      9bfd15
      directory.
      9bfd15

      9bfd15
      <samp>`isInWorkingCopy'</samp>
      9bfd15

      Ends script execution if FILE is not inside the working copy.

      9bfd15

      9bfd15
      9bfd15
      9bfd15

      As default behaviour, if FILE passes all verifications,

      9bfd15
      <tt>`centos-art.sh'</tt> script continues with its normal flow. 
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_commitRepoChanges [LOCATION]
      9bfd15
      9bfd15
      9bfd15

      Syncronize changes between repository and working copy.

      9bfd15

      9bfd15

      The cli_commitRepoChanges function brings changes from the

      9bfd15
      central repository down to the working copy--using svn
      9bfd15
      update--, checks the working copy changes--using svn
      9bfd15
      status command--, prints status report--using both svn
      9bfd15
      update and svn status commands output, and finally, commits
      9bfd15
      recent changes from the working copy up to the repository--using
      9bfd15
      svn commit command--.
      9bfd15

      9bfd15

      Previous to commit the working copy changes up to the central

      9bfd15
      repository, the cli_commitRepoChanges function asks you to
      9bfd15
      verify changes--using svn diff command--, and later,
      9bfd15
      another confirmation question is shown to be sure you really want to
      9bfd15
      commit changes up to central repository.
      9bfd15

      9bfd15

      If LOCATION argument is not specified, the value of

      9bfd15
      ACTIONVAL variable is used as reference instead.
      9bfd15

      9bfd15
      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      --> Bringing changes from the repository into the working copy
      9bfd15
      --> Checking changes in the working copy
      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      Added           0 file from the repository.
      9bfd15
      Deleted         0 file from the repository.
      9bfd15
      Updated         0 file from the repository.
      9bfd15
      Conflicted      0 file from the repository.
      9bfd15
      Merged          0 file from the repository.
      9bfd15
      Modified        4 files from the working copy.
      9bfd15
      Unversioned     0 file from the working copy.
      9bfd15
      Deleted         0 file from the working copy.
      9bfd15
      Added           0 file from the working copy.
      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      9bfd15

      Figure 2.3: The cli_commitRepoChanges function output.

      9bfd15
      9bfd15

      9bfd15

      Call the cli_commitRepoChanges function before or/and after

      9bfd15
      calling functions that modify files or directories inside the working
      9bfd15
      copy as you may need to.  
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_doParseArguments
      9bfd15
      9bfd15
      9bfd15

      Redefine arguments (ARGUMENTS) global variable using

      9bfd15
      getopt command output. For more information about how to use
      9bfd15
      cli_doParseArguments function, see ARGUMENTS variable
      9bfd15
      description above.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_doParseArgumentsReDef $@
      9bfd15
      9bfd15
      9bfd15

      Initialize/reset arguments (ARGUMENTS) global variable using

      9bfd15
      positional parameters variable ($@) as reference.
      9bfd15

      9bfd15

      When we work inside function definitions, positional parameters are

      9bfd15
      reset to the last function definition positional parameters.  If you
      9bfd15
      need to redefine positional parameters from one specific function, you
      9bfd15
      need to call cli_doParseArgumentsReDef with the positional
      9bfd15
      parameters variable ($@), set as first argument, to that
      9bfd15
      specific function you want to redefine positional parameters at.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getArguments
      9bfd15
      9bfd15
      9bfd15

      Initialize function name (FUNCNAM), action name

      9bfd15
      (ACTIONNAM), and action value (ACTIONVAL) global
      9bfd15
      variables, using positional parameters passed in $@ variable.
      9bfd15

      9bfd15

      The cli_getArguments function is called from cli.sh

      9bfd15
      function script, using cli function positional parameters
      9bfd15
      (i.e., the positional parameters passed as arguments in the
      9bfd15
      command-line) as first function argument. 
      9bfd15

      9bfd15

      Once command-line positional parameters are accesible to

      9bfd15
      <tt>`centos-art.sh'</tt> script execution evironment,
      9bfd15
      cli_getArguments uses regular expression to retrive
      9bfd15
      action variables from first and second argument. The first argument
      9bfd15
      defines the value used as function name (FUNCNAM), and the
      9bfd15
      second argument defines both values used as action name
      9bfd15
      (ACTIONNAM) and action value (ACTIONVAL), respectively.
      9bfd15

      9bfd15

      The first argument is a word in lower case. This word specifies the

      9bfd15
      name of the functionality you want to use (e.g., <samp>`render'</samp> to
      9bfd15
      render images, <samp>`manual'</samp> to work on documentation, and so on.)
      9bfd15

      9bfd15

      The second argument has a long option style (e.g.,

      9bfd15
      <samp>`--option=value'</samp>). The <samp>`--option'</samp> represents the action name
      9bfd15
      (ACTIONNAM), and the characters inbetween the equal sign
      9bfd15
      (<samp>`='</samp>) and the first space character, are considered as the action
      9bfd15
      value (ACTIONVAL). In order to provide action values with space
      9bfd15
      characters inbetween you need to enclose action value with quotes like
      9bfd15
      in <samp>`--option='This is long value with spaces inbetween''</samp>.
      9bfd15
      Generally, action values are used to specify paths over which the
      9bfd15
      action name acts on.
      9bfd15

      9bfd15

      Once action related variables (i.e., FUNCNAM, ACTIONNAM,

      9bfd15
      and ACTIONVAL) are defined and validated,
      9bfd15
      cli_getArguments shifts the positional arguments to remove the
      9bfd15
      first two arguments passed (i.e., those used to retrive action related
      9bfd15
      variables) and redefine the arguments (ARGUMENTS) global
      9bfd15
      variable with the new positional parameters information.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getFunctions
      9bfd15
      9bfd15
      9bfd15

      Initialize funtionalities supported by <tt>`centos-art.sh'</tt> script.

      9bfd15

      9bfd15

      Functionalities supported by <tt>`centos-art.sh'</tt> script are organized

      9bfd15
      in functionality directories under
      9bfd15
      <tt>`trunk/Scripts/Bash/Functions/'</tt> directory. Each functionality
      9bfd15
      directory stores function scripts to the functionality such directory
      9bfd15
      was created for. Function scripts contain function definitions.
      9bfd15
      Function definitions contain several commands focused on achieving one
      9bfd15
      specific task only (i.e., the one such functionality was created for).
      9bfd15

      9bfd15

      In order for <tt>`centos-art.sh'</tt> script to recognize a functionality,

      9bfd15
      such functionality needs to be stored under
      9bfd15
      <tt>`trunk/Scripts/Bash/Functions/'</tt> in a directory written
      9bfd15
      capitalized (i.e., the whole name is written in lowercase except the
      9bfd15
      first character which is in uppercase). The directory where one
      9bfd15
      specific functionality is stored is known as the <samp>`functionality
      9bfd15
      directory'</samp>. 
      9bfd15

      9bfd15

      Inside each functionality directory, the functionalty itself is

      9bfd15
      implemented through function scripts. Function scripts are organized
      9bfd15
      in files independently one another and written in <samp>`camelCase'</samp>
      9bfd15
      format with the function name as prefix.  Separation between prefix
      9bfd15
      and description is done using underscore (<samp>`_'</samp>) character.
      9bfd15

      9bfd15

      In order for <tt>`centos-art.sh'</tt> script to load functionalities

      9bfd15
      correctly, function definition inside function scripts should be set
      9bfd15
      using the <samp>`function'</samp> reserved word, just as in the following
      9bfd15
      example:
      9bfd15

      9bfd15
      function prefix_doSomething {
      9bfd15
      9bfd15
          # Do something here...
      9bfd15
      9bfd15
      }
      9bfd15
      9bfd15

      The above function definition is just a convenction we use, in order

      9bfd15
      to make identification of function names easier read and automate by
      9bfd15
      <tt>`centos-art.sh'</tt> script initialization commands, once
      9bfd15
      <tt>`centos-art.sh'</tt> script determines which functionality directory
      9bfd15
      to use.  Specifically, in order to initialize and export functions,
      9bfd15
      <tt>`centos-art.sh'</tt> script executes all function scripts inside the
      9bfd15
      functionality directory, and later grep on them using a
      9bfd15
      regular expression pattern, where the <samp>`function'</samp> reserved word is
      9bfd15
      used as reference to retrive the function names and export them to
      9bfd15
      <tt>`centos-art.sh'</tt> script execution environment, and so, make
      9bfd15
      function definitions --from function scripts inside the functionality
      9bfd15
      directory-- available for further calls.
      9bfd15

      9bfd15

      If the functionality specified in the command-line first argument

      9bfd15
      doesn't have a functionality directory, <tt>`centos-art.sh'</tt> script
      9bfd15
      considers the functionality provided in the command-line as invalid
      9bfd15
      functionality and immediatly stops script execution with an error
      9bfd15
      message.
      9bfd15

      9bfd15

      In order to keep visual consistency among function scripts, please

      9bfd15
      consider using the following function script design model as template
      9bfd15
      for your own function scripts:
      9bfd15

      9bfd15
      #!/bin/bash
      9bfd15
      #
      9bfd15
      # prefix_doSomething.sh -- This function illustrates function scripts
      9bfd15
      # design model you can use to create your own function scripts inside
      9bfd15
      # centos-art.sh script.
      9bfd15
      #
      9bfd15
      # Copyright (C) YEAR YOURFULLNAME
      9bfd15
      #
      9bfd15
      # This program is free software; you can redistribute it and/or modify
      9bfd15
      # it under the terms of the GNU General Public License as published by
      9bfd15
      # the Free Software Foundation; either version 2 of the License, or
      9bfd15
      # (at your option) any later version.
      9bfd15
      # 
      9bfd15
      # This program is distributed in the hope that it will be useful, but
      9bfd15
      # WITHOUT ANY WARRANTY; without even the implied warranty of
      9bfd15
      # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      9bfd15
      # General Public License for more details.
      9bfd15
      #
      9bfd15
      # You should have received a copy of the GNU General Public License
      9bfd15
      # along with this program; if not, write to the Free Software
      9bfd15
      # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
      9bfd15
      # USA.
      9bfd15
      # 
      9bfd15
      # ----------------------------------------------------------------------
      9bfd15
      # $Id$
      9bfd15
      # ----------------------------------------------------------------------
      9bfd15
      9bfd15
      function prefix_doSomething {
      9bfd15
      9bfd15
          # Do something here...
      9bfd15
      9bfd15
      }
      9bfd15
      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getCountryCodes [FILTER]
      9bfd15
      9bfd15
      9bfd15

      Output country codes supported by <tt>`centos-art.sh'</tt> script.

      9bfd15

      9bfd15

      The cli_getCountryCodes function outputs a list with country

      9bfd15
      codes as defined in ISO3166 standard. When FILTER is provided,
      9bfd15
      cli_getCountryCodes outputs country codes that match
      9bfd15
      FILTER regular expression pattern.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getCountryName [FILTER]
      9bfd15
      9bfd15
      9bfd15

      Outputs country name supported by <tt>`centos-art.sh'</tt> script.

      9bfd15

      9bfd15

      The cli_getCountryName function reads one language locale code

      9bfd15
      in the format LL_CC and outputs the name of its related country as in
      9bfd15
      ISO3166. If filter is specified, cli_getCountryName returns the
      9bfd15
      country name that matches the locale code specified in FILTER,
      9bfd15
      exactly.
      9bfd15

      9bfd15
       
      9bfd15
      9bfd15
      <u>Function:</u> cli_getCurrentLocale
      9bfd15
      9bfd15
      9bfd15

      Output current locale used by <tt>`centos-art.sh'</tt> script.

      9bfd15

      9bfd15

      The cli_getCurrentLocale function uses LANG environment

      9bfd15
      variable to build a locale pattern that is later applied to
      9bfd15
      cli_getLocales function output in order to return the current
      9bfd15
      locale that <tt>`centos-art.sh'</tt> script works with. 
      9bfd15

      9bfd15

      The current locale information, returned by

      9bfd15
      cli_getCurrentLocale, is output from more specific to less
      9bfd15
      specific. For example, if <samp>`en_GB'</samp> locale exists in
      9bfd15
      cli_getLocales function output, the <samp>`en_GB'</samp> locale would
      9bfd15
      take precedence before <samp>`en'</samp> locale.
      9bfd15

      9bfd15

      Locale precedence selection is quite important in order to define the

      9bfd15
      locale type we use for message translations. For example, if
      9bfd15
      <samp>`en_GB'</samp> is used, we are also saying that the common language
      9bfd15
      specification for English language (i.e., <samp>`en'</samp>) is no longer
      9bfd15
      used. Instead, we are using English non-common country-specific
      9bfd15
      language specifications like <samp>`en_AU'</samp>, <samp>`en_BW'</samp>, <samp>`en_GB'</samp>,
      9bfd15
      <samp>`en_US'</samp>, etc., for message translations.  
      9bfd15

      9bfd15

      Use cli_getCurrentLocale function to know what current locale

      9bfd15
      information to use inside <tt>`centos-art.sh'</tt> script.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getFilesList [LOCATION]
      9bfd15
      9bfd15
      9bfd15

      Output list of files to process.

      9bfd15

      9bfd15

      The cli_getFilesList function uses LOCATION variable as

      9bfd15
      source location to build a list of files just as specified by regular
      9bfd15
      expression (REGEX) global variable. Essentially, what the
      9bfd15
      cli_getFilesList function does is using find command
      9bfd15
      to look for files in the location (LOCATION) just as posix-egrep
      9bfd15
      regular expression (REGEX) specifies. 
      9bfd15

      9bfd15

      If LOCATION is not specified when cli_getFilesList

      9bfd15
      function is called, the action value (ACTIONVAL) global variable
      9bfd15
      is used as location value instead.
      9bfd15

      9bfd15

      By default, if the regular expression (REGEX) global variable is

      9bfd15
      not redefined after its first definition in the cli function,
      9bfd15
      all files that match default regular expression value (i.e.,
      9bfd15
      <samp>`.+'</samp>) will be added to the list of files to process. Otherwise,
      9bfd15
      if you redefine the regular expression global variable after its first
      9bfd15
      definition in the cli function and before calling
      9bfd15
      cli_getFilesList function, the last value you specifed is used
      9bfd15
      instead.
      9bfd15

      9bfd15

      When you need to customize the regular expression (REGEX) global

      9bfd15
      variable value inside a function, do not redefine the global variable
      9bfd15
      (at least you be absolutly convinced you need to).  Instead, set the
      9bfd15
      regular expression global variable as <samp>`local'</samp> to the function you
      9bfd15
      need a customized regular expression value for.  If we don't redefine
      9bfd15
      the regular expression global variable as local to the function, or
      9bfd15
      use another name for the regular expression variable (which is not
      9bfd15
      very convenient in order to keep the amount of names to remember low),
      9bfd15
      you may experiment undesired concantenation issues that make your
      9bfd15
      regular expression to be something different from that you expect them
      9bfd15
      to be, specially if the function where you are doing the variable
      9bfd15
      redefinition is called several times during the same script execution.
      9bfd15

      9bfd15

      As result, the cli_getFilesList re-defines the value of

      9bfd15
      FILES variable with the list of files the find command
      9bfd15
      returned. As example, consider the following construction:
      9bfd15

      9bfd15
      function prefix_doSomething {
      9bfd15
      9bfd15
          # Initialize the list of files to process.
      9bfd15
          local FILES=''
      9bfd15
      9bfd15
          # Initialize location.
      9bfd15
          local LOCATION=/home/centos/artwork/trunk/Identity/Themes/Models/Default
      9bfd15
      9bfd15
          # Re-define regular expression to match scalable vector graphic
      9bfd15
          # files only. Note how we use the global value of REGEX to build a
      9bfd15
          # new local REGEX value here.
      9bfd15
          local REGEX="${REGEX}.*\.(svgz|svg)"
      9bfd15
      9bfd15
          # Redefine list of files to process.
      9bfd15
          cli_getFilesList $LOCATION
      9bfd15
      9bfd15
          # Process list of files.
      9bfd15
          for FILE in $FILES;do
      9bfd15
              cli_printMessages "$FILE" 'AsResponseLine'
      9bfd15
              # Do something else here on...
      9bfd15
          done
      9bfd15
      9bfd15
      }
      9bfd15
      9bfd15
      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getLangCodes [FILTER]
      9bfd15
      9bfd15
      9bfd15

      Outputs language codes supported by <tt>`centos-art.sh'</tt> script.

      9bfd15

      9bfd15

      cli_getLangCodes function outputs a list of language codes as

      9bfd15
      defined in ISO639 standard. When FILTER is provided,
      9bfd15
      cli_getLangCodes outputs language codes that match FILTER
      9bfd15
      regular expression pattern.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getLangName [FILTER]
      9bfd15
      9bfd15
      9bfd15

      Outputs language names supported by <tt>`centos-art.sh'</tt> script.

      9bfd15

      9bfd15

      cli_getLangName function reads one language locale code in the

      9bfd15
      format LL_CC and outputs the language related name as in ISO639. If
      9bfd15
      filter is specified, cli_getLangName returns the language name
      9bfd15
      that matches the locale code specified in FILTER, exactly.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getLocales
      9bfd15
      9bfd15
      9bfd15

      Output locale codes supported by <tt>`centos-art.sh'</tt> script.

      9bfd15

      9bfd15

      Occasionally, you use cli_getLocales function to add locale

      9bfd15
      information in non-common country-specific language (<samp>`LL_CC'</samp>)
      9bfd15
      format for those languages (e.g., <samp>`bn_IN'</samp>, <samp>`pt_BR'</samp>, etc.)
      9bfd15
      which locale differences cannot be solved using common language
      9bfd15
      specifications (<samp>`LL'</samp>) into one unique common locale specification
      9bfd15
      (e.g., <samp>`bn'</samp>, <samp>`pt'</samp>, etc.).  
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getRepoName NAME TYPE
      9bfd15
      9bfd15
      9bfd15

      Sanitate file names.

      9bfd15

      9bfd15

      Inside <tt>`centos-art.sh'</tt> script, specific functionalities rely both

      9bfd15
      in cli_getRepoName and repository file system organization to
      9bfd15
      achieve their goals.  Consider cli_getRepoName function as
      9bfd15
      central place to manage file name convenctions for other functions
      9bfd15
      inside <tt>`centos-art.sh'</tt> script.
      9bfd15

      9bfd15
      Important

      Important

      cli_getRepoName function doesn't verify file

      9bfd15
      or directory existence, for that purpose use cli_checkFiles
      9bfd15
      function instead.
      9bfd15

      9bfd15
      9bfd15

      The NAME variable contains the file name or directory name you

      9bfd15
      want to sanitate.
      9bfd15

      9bfd15

      The TYPE variable specifies what type of sanitation you want to

      9bfd15
      perform on NAME. The TYPE can be one of the following
      9bfd15
      values:
      9bfd15

      9bfd15
      9bfd15
      <samp>`d'</samp>
      9bfd15
      <samp>`directory'</samp>
      9bfd15

      Sanitate directory NAMEs.

      9bfd15

      9bfd15
      <samp>`f'</samp>
      9bfd15
      <samp>`regular-file'</samp>
      9bfd15

      Sanitate regular file NAMEs.

      9bfd15

      9bfd15
      9bfd15
      9bfd15

      Use cli_getRepoName function to sanitate file names and

      9bfd15
      directory names before their utilization. 
      9bfd15

      9bfd15

      Use cli_getRepoName when you need to change file name

      9bfd15
      convenctions inside <tt>`centos-art.sh'</tt> script. 
      9bfd15

      9bfd15

      When we change file name convenctions inside cli_getRepoName

      9bfd15
      what we are really changing is the way functions interpret repository
      9bfd15
      file system organization. Notice that when we change a file name
      9bfd15
      (e.g., a function name), it is necessary to update all files where
      9bfd15
      such file name is placed on. This may require a massive substitution
      9bfd15
      inside the repository, each time we change name convenctions in the
      9bfd15
      repository (-- Removed(pxref:trunk Scripts Bash Functions Path) --, for more
      9bfd15
      information).
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getRepoStatus [LOCATION]
      9bfd15
      9bfd15
      9bfd15

      Request repository status.

      9bfd15

      9bfd15

      This function requests the status of a LOCATION inside the

      9bfd15
      working copy using the svn status command and returns the
      9bfd15
      first character in the output line, just as described in svn
      9bfd15
      help status. If LOCATION is not a regular file or a directory,
      9bfd15
      inside the working copy, the <tt>`centos-art.sh'</tt> script prints a
      9bfd15
      message and ends its execution.
      9bfd15

      9bfd15

      Use this function to perform verifications based a repository

      9bfd15
      LOCATION status.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getTemporalFile NAME
      9bfd15
      9bfd15
      9bfd15

      Output absolute path to temporal file NAME.

      9bfd15

      9bfd15

      The cli_getTemporalFile function uses <tt>`/tmp'</tt> directory as

      9bfd15
      source location to store temporal files, the <tt>`centos-art.sh'</tt>
      9bfd15
      script name, and a random identification string to let you run more
      9bfd15
      than one <tt>`centos-art.sh'</tt> script simultaneously on the same user
      9bfd15
      session.  For example, due the following temporal file defintion:
      9bfd15

      9bfd15
      cli_getTemporalFile $FILE
      9bfd15
      9bfd15

      If FILE name is <tt>`instance.svg'</tt> and the unique random string

      9bfd15
      is <samp>`f16f7b51-ac12-4b7f-9e66-72df847f12de'</samp>, the final temporal
      9bfd15
      file, built from previous temporal file definition, would be:
      9bfd15

      9bfd15
      /tmp/centos-art.sh-f16f7b51-ac12-4b7f-9e66-72df847f12de-instance.svg
      9bfd15
      9bfd15

      When you use the cli_getTemporalFile function to create

      9bfd15
      temporal files, be sure to remove temporal files created once you've
      9bfd15
      ended up with them.  For example, consider the following construction:
      9bfd15

      9bfd15
      for FILE in $FILES;do
      9bfd15
      9bfd15
          # Initialize temporal instance of file.
      9bfd15
          INSTANCE=$(cli_getTemporalFile $FILE)
      9bfd15
      9bfd15
          # Do something ... 
      9bfd15
      9bfd15
          # Remove temporal instance of file.
      9bfd15
          if [[ -f $INSTANCE ]];then
      9bfd15
              rm $INSTANCE
      9bfd15
          fi
      9bfd15
      9bfd15
      done
      9bfd15
      9bfd15

      Use the cli_getTemporalFile function whenever you need to

      9bfd15
      create temporal files inside <tt>`centos-art.sh'</tt> script.
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_getThemeName
      9bfd15
      9bfd15
      9bfd15

      Output theme name.

      9bfd15

      9bfd15

      In order for cli_getThemeName function to extract theme name

      9bfd15
      correctly, the ACTIONVAL variable must contain a directory path
      9bfd15
      under <tt>`trunk/Identity/Themes/Motifs/'</tt> directory structure.
      9bfd15
      Otherwise, cli_getThemeName returns an empty string.  
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      <u>Function:</u> cli_printMessage MESSAGE [FORMAT]
      9bfd15
      9bfd15
      9bfd15

      Define standard output message definition supported by

      9bfd15
      <tt>`centos-art.sh'</tt> script.
      9bfd15

      9bfd15

      When FORMAT is not specified, cli_printMessage outputs

      9bfd15
      information just as it was passed in MESSAGE variable.
      9bfd15
      Otherwise, FORMAT can take one of the following values:
      9bfd15

      9bfd15
      9bfd15
      <samp>`AsHeadingLine'</samp>
      9bfd15

      To print heading messages.

      9bfd15

      ----------------------------------------------------------------------
      9bfd15
      $MESSAGE
      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsWarningLine'</samp>
      9bfd15

      To print warning messages.

      9bfd15

      ----------------------------------------------------------------------
      9bfd15
      WARNING: $MESSAGE
      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsNoteLine'</samp>
      9bfd15

      To print note messages.

      9bfd15

      ----------------------------------------------------------------------
      9bfd15
      NOTE: $MESSAGE
      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsUpdatingLine'</samp>
      9bfd15

      To print <samp>`Updating'</samp> messages on two-columns format.

      9bfd15

      Updating        $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsRemovingLine'</samp>
      9bfd15

      To print <samp>`Removing'</samp> messages on two-columns format.

      9bfd15

      Removing        $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsCheckingLine'</samp>
      9bfd15

      To print <samp>`Checking'</samp> messages on two-columns format.

      9bfd15

      Checking        $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsCreatingLine'</samp>
      9bfd15

      To print <samp>`Creating'</samp> messages on two-columns format.

      9bfd15

      Creating        $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsSavedAsLine'</samp>
      9bfd15

      To print <samp>`Saved as'</samp> messages on two-columns format.

      9bfd15

      Saved as        $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsLinkToLine'</samp>
      9bfd15

      To print <samp>`Linked to'</samp> messages on two-columns format.

      9bfd15

      Linked to       $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsMovedToLine'</samp>
      9bfd15

      To print <samp>`Moved to'</samp> messages on two-columns format.

      9bfd15

      Moved to        $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsTranslationLine'</samp>
      9bfd15

      To print <samp>`Translation'</samp> messages on two-columns format.

      9bfd15

      Translation     $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsConfigurationLine'</samp>
      9bfd15

      To print <samp>`Configuration'</samp> messages on two-columns format.

      9bfd15

      Configuration   $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsResponseLine'</samp>
      9bfd15

      To print response messages on one-column format.

      9bfd15

      --> $MESSAGE
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsRequestLine'</samp>
      9bfd15

      To print request messages on one-column format. Request messages

      9bfd15
      output messages with one colon (<samp>`:'</samp>) and without trailing newline
      9bfd15
      (<samp>`\n'</samp>) at message end.
      9bfd15

      $MESSAGE:
      9bfd15
      9bfd15
      9bfd15
      <samp>`AsYesOrNoRequestLine'</samp>
      9bfd15

      To print <samp>`yes or no'</samp> request messages on one-column format. If

      9bfd15
      something different from <samp>`y'</samp> is answered (when using
      9bfd15
      en_US.UTF-8 locale), script execution ends immediatly.  
      9bfd15

      9bfd15
      $MESSAGE [y/N]:
      9bfd15
      9bfd15

      When we use <tt>`centos-art.sh'</tt> script in a locale different from

      9bfd15
      en_US.UTF-8, confirmation answer may be different from
      9bfd15
      <samp>`y'</samp>. For example, if you use es_ES.UTF-8 locale, the
      9bfd15
      confirmation question would look like:
      9bfd15

      9bfd15
      $MESSAGE [s/N]:
      9bfd15
      9bfd15

      and the confirmation answer would be <samp>`s'</samp>, as it is on Spanish

      9bfd15
      <samp>`sí'</samp> word.
      9bfd15

      9bfd15

      Definition of which confirmation word to use is set on translation

      9bfd15
      messages for your specific locale information. -- Removed(xref:trunk Scripts
      9bfd15
      Bash Functions Locale) --, for more information about locale-specific
      9bfd15
      translation messages.
      9bfd15

      9bfd15
      9bfd15
      <samp>`AsToKnowMoreLine'</samp>
      9bfd15

      To standardize <samp>`to know more, run the following command:'</samp>

      9bfd15
      messages. When the <samp>`AsToKnowMoreLine'</samp> option is used, the
      9bfd15
      MESSAGE value should be set to "$(caller)". caller
      9bfd15
      is a Bash builtin that returns the context of the current subroutine
      9bfd15
      call. <samp>`AsToKnowMoreLine'</samp> option uses caller builtin
      9bfd15
      output to build documentation entries dynamically.
      9bfd15

      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      To know more, run the following command:
      9bfd15
      centos-art manual --read='path/to/dir'
      9bfd15
      ----------------------------------------------------------------------
      9bfd15
      9bfd15

      Use <samp>`AsToKnowMoreLine'</samp> option after errors and for intentional

      9bfd15
      script termination. 
      9bfd15

      9bfd15
      9bfd15
      <samp>`AsRegularLine'</samp>
      9bfd15

      To standardize regular messages on one-column format.

      9bfd15

      9bfd15

      When MESSAGE contains a colon inside (e.g., <samp>`description:

      9bfd15
      message'</samp>), the cli_printMessage function outputs MESSAGE
      9bfd15
      on two-columns format. 
      9bfd15

      9bfd15
      9bfd15
      9bfd15

      Use cli_printMessage function whenever you need to output

      9bfd15
      information from <tt>`centos-art.sh'</tt> script.
      9bfd15

      9bfd15
      Info

      Tip

      To improve two-columns format, change the following file:

      9bfd15

      trunk/Scripts/Bash/Styles/output_forTwoColumns.awk
      9bfd15
      9bfd15
      9bfd15
      9bfd15
      9bfd15
      9bfd15

      2.63.3.3 Specific functions

      9bfd15
      9bfd15

      The following specific functions of <tt>`centos-art.sh'</tt> script, are

      9bfd15
      available for you to use:
      9bfd15

      9bfd15
      9bfd15
      9bfd15
      671838

      2.63.4 See also

      063806
      9bfd15
      9bfd15
      2.61 The <tt>`trunk/Scripts/Bash'</tt> Directory  
      9bfd15
      9bfd15
      063806
      063806
      010b2d
      9bfd15
      [ < ]
      9bfd15
      [ > ]
      010b2d
         
      671838
      [ << ]
      9bfd15
      [ Up ]
      9bfd15
      [ >> ]
      010b2d
      010b2d

      010b2d
       <font size="-1">
      9bfd15
        This document was generated on March, 8 2011 using texi2html 1.76.
      010b2d
       </font>
      010b2d
       
      010b2d
      010b2d

      010b2d
      </body>
      010b2d
      </html>