@subsection Goals
This section exists to organize files related to @file{centos-art.sh}
script @samp{verify} functionality. The @samp{verify}
functionality of @file{centos-art.sh} script helps you to verify the
workstation configuration you are planning to use as host for your
working copy of CentOS Artwork Repository.
@subsection Description
The first time you download CentOS Artwork Repository you need to
configure your workstation in order to use @file{centos-art.sh}
script. These preliminar configurations are based mainly on auxiliar
RPM packages installation, symbolic links creations, and environment
variables definitions. The @samp{verify} functionality of
@file{centos-art.sh} script guides you through this preliminar
configuration process.
If this is the first time you run @file{centos-art.sh} script, the
appropriate way to use its @samp{verify} functionality is not using
the @file{centos-art.sh} script directly, but the absolute path to
@command{centos-art.sh} script instead (i.e.,
@file{~/artwork/trunk/Scripts/Bash/centos-art.sh}). This is necessary
because @file{centos-art} symbolic link, under @file{~/bin/}
directory, has not been created yet.
@subsubsection Packages
Installation of auxiliar RPM packages provides the software required
to manipulate files inside the repository (e.g., image files,
documentation files, translation files, script files, etc.). Most of
RPM packages @command{centos-art.sh} script uses are shipped with
CentOS distribution, and can be installed from CentOS base repository.
The only exception is @samp{inkscape}, the package we use to
manipulate SVG files. The @samp{inkscape} package is not inside
CentOS distribution so it needs to be installed from third party
repositories.
@quotation
@strong{Note} Configuration of third party repositories inside CentOS
distribution is described in CentOS wiki, specifically in the
following URL:
@url{http://wiki.centos.org/AdditionalResources/Repositories}
@end quotation
Before installing packages, the @file{centos-art.sh} script uses
@command{sudo} to request root privileges to execute @command{yum}
installation functionality. If your user isn't defined as a
privileged user---at least to run @command{yum} commands--- inside
@file{/etc/sudoers} configuration file, you will not be able to
perform package installation tasks as set in @file{centos-art.sh}
script @samp{verify} functionality.
Setting sudo privileges to users is an administrative task you have to
do by yourself. If you don't have experience with @command{sudo}
command, please read its man page running the command: @command{man
sudo}. This reading will be very useful, and with some practice, you
will be able to configure your users to have @command{sudo}
privileges.
@subsubsection Links
Creation of symbolic links helps us to alternate between different
implementations of @file{centos-art.sh} script-line (e.g.,
@file{centos-art.sh}, for Bash implementation; @file{centos-art.py},
for Python implementation; @file{centos-art.pl}, for Perl
implementation; and so on for other implementations). The
@file{centos-art.sh} script-line definition takes place inside your
personal binary (@file{~/bin/}) directory in order to make the script
implementation ---the one that @file{centos-art} links to--- available
to @var{PATH} environment variable.
Creation of symbolic links helps us to reuse components from repository
working copy. For example, color information files maintained inside
your working copy must never be duplicated inside program-specific
configuration directories that uses them in your workstation (e.g.,
Gimp, Inkscape, etc.). Instead, a symbolic link must be created for
each one of them, from program-specific configuration directories to
files in the working copy. In this configuration, when someone
commits changes to color information files up to central repository,
they---the changes committed--- will be immediatly available to your
programs the next time you update your working copy ---the place
inside your workstation those color information files are stored---.
Creation of symbolic links helps us to make @file{centos-art.sh}
script functionalities available outside @file{trunk/} repository
directory structure, but at its same level in repository tree. This is
useful if you need to use the ``render'' functionality of
@command{centos-art.sh} under @file{branches/} repository directory
structure as you usually do inside @file{trunk/} repository directory
structure. As consequence of this configuration, automation scripts
cannot be branched under @file{branches/Scripts} directory structure.
@subsubsection Environment variables
Definition of environemnt variables helps us to set default values to
our user session life. The user session environment variable defintion
takes place in the user's @file{~/.bash_profile} file. The
@samp{verify} functionality of @file{centos-art.sh} script doesn't
modify your @file{~/.bash_profile} file.
The @samp{verify} functionality of @file{centos-art.sh} script
evaluates the following environment variables:
@table @env
@item EDITOR
Default text editor.
The @file{centos-art.sh} script uses default text @env{EDITOR} to edit
pre-commit subversion messages, translation files, configuration
files, script files, and similar text-based files.
If @env{EDITOR} environment variable is not set, @file{centos-art.sh}
script uses @file{/usr/bin/vim} as default text editor. Otherwise, the
following values are recognized by @file{centos-art.sh} script:
@itemize
@item @file{/usr/bin/vim}
@item @file{/usr/bin/emacs}
@item @file{/usr/bin/nano}
@end itemize
If no one of these values is set in @env{EDITOR} environment variable,
@file{centos-art.sh} uses @file{/usr/bin/vim} text editor by default.
@item TEXTDOMAIN
Default domain used to retrieve translated messages. This variable is
set in @file{initFunctions.sh} and shouldn't be changed.
@item TEXTDOMAINDIR
Default directory used to retrieve translated messages. This variable
is set in @file{initFunctions.sh} and shouldn't be changed.
@item LANG
Default locale information.
This variable is initially set in the configuration process of CentOS
distribution installer (i.e., Anaconda), specifically in the
@samp{Language} step; or once installed using the
@command{system-config-language} tool.
The @file{centos-art.sh} script uses the @var{LANG} environment
variable to know in which language the script messages are printed
out.
@item TZ
Default time zone representation.
This variable is initially set in the configuration process of CentOS
distribution installer (i.e., Anaconda), specifically in the
@samp{Date and time} step; or once installed using the
@command{system-config-date} tool.
The @file{centos-art.sh} script doesn't use the @var{TZ} environment
variable information at all. Instead, this variable is used by the
system shell to show the time information according to your phisical
location on planet Earth.
Inside your computer, the time information is firstly set in the BIOS
clock (which may need correction), and later in the configuration
process of CentOS distribution installer (or later, by any of the
related configuration tools inside CentOS distribution). Generally,
setting time information is a straight-forward task and configuration
tools available do cover most relevant location. However, if you need
a time precision not provided by the configuration tools available
inside CentOS distribution then, using @var{TZ} variable may be
necessary.
@quotation
@strong{Convenction} In order to keep changes syncronized between
central repository and its working copies: configure both repository
server and workstations (i.e., the place where each working copy is
set on) to use Coordinated Universal Time (UTC) as base time
representation. Later, correct the time information for your specific
location using time zone correction.
@end quotation
The format of @var{TZ} environment variable is described in
@file{tzset(3)} manual page.
@end table
@subsection Usage
@table @command
@item centos-art verify --packages
Verify required packages your workstation needs in order to run the
@file{centos-art.sh} script correctly. If there are missing packages,
the @file{centos-art.sh} script asks you to confirm their
installation. When installing packages, the @file{centos-art.sh}
script uses the @command{yum} application in order to achieve the
task.
In case all packages required by @file{centos-art.sh} script are
already installed in your workstation, the message @samp{The required
packages are already installed.} is output for you to know.
@item centos-art verify --links
Verify required links your workstation needs in order to run the
centos-art command correctly. If any required link is missing, the
@command{centos-art.sh} script asks you to confirm their installation.
To install required links, the @command{centos-art.sh} script uses the
@command{ln} command.
In case all links required by @file{centos-art.sh} script are already
created in your workstation, the message @samp{The required links are
already installed.} is output for you to know.
In case a regular file exists with the same name of a required link,
the @file{centos-art.sh} script outputs the @samp{Already exists as
regular file.} message when listing required links that will be
installed. Of course, as there is already a regular file where must be
a link, no link is created. In such cases the @file{centos-art.sh}
script will fall into a continue installation request for that missing
link. To end this continue request you can answer @samp{No}, or
remove the existent regular file to let @file{centos-art.sh} script
install the link on its place.
@item centos-art verify --environment
@itemx centos-art verify --environment --filter='regex'
Output a brief description of environment variables used by
@file{centos-art.sh} script.
If @samp{--filter} option is provided, output is reduced as defined in
the @samp{regex} regular expression value. If @samp{--filter} option
is specified but @samp{regex} value is not, the @file{centos-art.sh}
script outputs information as if @samp{--filter} option had not been
provided at all.
@end table
@subsection See also
@menu
* Filesystem trunk Scripts Bash::
@comment --- Removed(* Filesystem trunk Scripts Bash Functions::) ---
@end menu