Blame Manuals/RepoReference/en_US/Directories/trunk/Scripts/Functions/Help.texinfo

b32b45
@subheading Name
b32b45
b32b45
The @code{help} functionlity is part of @command{centos-art.sh} script
561a00
and standardizes documentation tasks related to @emph{The CentOS
561a00
Artwork Repository Reference Manual} in the working copy of CentOS
b32b45
Artwork Repository.
b32b45
b32b45
@subheading Synopsis
b32b45
b32b45
@command{centos-art help [OPTIONS] path/to/dir @dots{}}
b32b45
b32b45
The @file{path/to/dir} parameter specifies what directory structure
b32b45
inside the working copy of CentOS Artwork Repository you want to
b32b45
process. 
b32b45
b32b45
The @code{help} functionality of @command{centos-art.sh} script
b32b45
accepts the following options:
b32b45
b32b45
@table @option
b32b45
@item --quiet
b32b45
b32b45
Supress all output messages except error messages.  When this option
b32b45
is passed, all confirmation requests are supressed as well and a
b32b45
possitive answer is assumed for them, just as if the
b32b45
@option{--answer-yes} option had been provided.
b32b45
b32b45
@item --answer-yes
b32b45
b32b45
Assume `yes' to all confirmation requests.
b32b45
b32b45
@item --dont-commit-changes
b32b45
b32b45
Supress all commit and update actions realized over files, before and
b32b45
after the action itself had took place over files in the working copy.
b32b45
b32b45
@item --search="STRING"
b32b45
b32b45
Go to node pointed by index entry @samp{STRING}.
b32b45
b32b45
@item --edit "path/to/dir"
b32b45
b32b45
Edit documentation entry related to path specified by
b32b45
@file{path/to/dir}. 
b32b45
b32b45
The @file{path/to/dir} must point to any directory inside the
b32b45
repository. When more than one @file{path/to/dir} are passed as
b32b45
non-option arguments to the @command{centos-art.sh} script
b32b45
command-line, they are queued for further edition.  The edition itself
b32b45
takes place through your default text editor (e.g., the one you
b32b45
specified in the @env{EDITOR} environment variable) and the text
b32b45
editor opens one file at time (i.e., the queue of files to edit is not
b32b45
loaded in the text editor.).
b32b45
b32b45
@item --read "path/to/dir"
b32b45
b32b45
Read documentation entry specified by @file{file/to/dir} path.  This
b32b45
option is used internally by @command{centos-art.sh} script to print
b32b45
out the reference you can follow to know more about an error message.
b32b45
b32b45
@item --update
b32b45
b32b45
Update output files rexporting them from the specified backend source
b32b45
files.
b32b45
b32b45
@item --copy "path/to/srcdir" "path/to/dstdir"
b32b45
b32b45
Duplicate documentation entries inside the working copy of CentOS
b32b45
Artwork Repository.
b32b45
b32b45
When documentation entries are copied, only two non-option arguments
b32b45
can be passed to @command{centos-art.sh} script. In this case, the
b32b45
first non-option argument is considered the source location and the
b32b45
second one the target location. Both source location and target
b32b45
location must point to a directory under the working copy or files
b32b45
under @file{trunk/Manuals/Texinfo/Directories} directory structure.
b32b45
b32b45
@item --delete "path/to/dir"
b32b45
b32b45
Delete documentation entries inside the working copy of CentOS
b32b45
Artwork Repository.
b32b45
b32b45
@item --rename "path/to/srcdir" "path/to/dstdir"
b32b45
b32b45
Rename documentation entries inside the working copy of CentOS Artwork
b32b45
Repository.
b32b45
b32b45
When documentation entries are renamed, only two non-option arguments
b32b45
can be passed to @command{centos-art.sh} script. In this case, the
b32b45
first non-option argument is considered the source location and the
b32b45
second one the target location. Both source location and target
b32b45
location must point to a directory under the working copy or files
b32b45
under @file{trunk/Manuals/Texinfo/Directories} directory structure.
b32b45
b32b45
Renaming a repository documentation entries introduce some
b32b45
complications because inclusions, menus, nodes and cross references
b32b45
are built using master path information as reference.  Now, to see
b32b45
what kind of complication we are trying to solve with path
b32b45
syncronization, consider what would happen to document structural
b32b45
definitions (i.e., inlusions, menus, nodes and cross refereces) when a
b32b45
master path that is suddenly renamed to something different.  At this
b32b45
point, if the path information is not updated, we lose connection
b32b45
between the master path and the auxiliar path created to store the
b32b45
related documentation entry, as well as the related structural
b32b45
definitions that will end up pointing to a master path that no longer
b32b45
exist.
b32b45
b32b45
@end table
b32b45
b32b45
When documentation entries are removed (e.g., through
b32b45
@option{--delete} or @option{--rename} options), the
b32b45
@command{centos-art.sh} script takes care of updating nodes, menus and
b32b45
cross references related to documentation entries in order to keep the
b32b45
manual structure in a correct state.
b32b45
b32b45
@subheading Description
b32b45
7a0691
The @code{help} functionality uses Texinfo as documentation backend.
7a0691
Texinfo is a documentation system that can produce both online
7a0691
information and a printed manual from a single source. The @code{help}
7a0691
functionality is the interface the @command{centos-art.sh} script uses
7a0691
to control frequent documenting tasks (e.g., reading, editing, update
7a0691
output files, etc.) in the source files of a Texinfo documentation
7a0691
manual structure.
7a0691
efd1d6
The @code{help} functionality uses the repository directory layout as
efd1d6
reference to describe the conceptual ideas behind its existance. Each
efd1d6
directory inside the repository can be documented, in order to provide
efd1d6
the explanation of what it is for and how automation scripts use it.
16a015
Documentation of each directory happens through ``repository
16a015
documentation entries''.
b32b45
b32b45
@quotation
b32b45
@strong{Caution} When the repository directory layout changes, the
b32b45
documentation layout related must be changed as well in order for both
b32b45
locations to be consistent in their paths. Otherwise, you may end up
b32b45
having documentation entries that point to unexistent directories in
b32b45
the repository.
b32b45
@end quotation
b32b45
974695
Structurely, the @code{help} functionality organizes repository
cf01dc
documentation entries by sections inside a chapter named ``The
cf01dc
repository directories''. Each section is organized through ``Goals'',
974695
``Description'', ``Usage'' and ``See also'' subsections which, in
625291
turn, may be organized through subsubsections so as to describe what
625291
the related repository directory is for. The first three section
625291
(e.g., Goals, Description and Usage) are created in blank for you to
625291
fill with information, but the last one (e.g., See also) is created
974695
automatically and contains a list of links to previous sections.
561a00
561a00
The internal document organization and language used in repository
16a015
documentation entries are both defined through ``document templates''.
16a015
Document templates are organized in the
df36b6
@file{trunk/Scripts/Functions/Help/Templates} directory and are used
df36b6
when a new documentation structure is created and later, when a new
df36b6
documentation entry is created inside it. There is one set of document
df36b6
templates for each language-specific documentation structure
df36b6
supported. Inside each language-specific documentation structure there
df36b6
is one documentation entry for each directory inside the repository.
561a00
561a00
The relation between template files and repository paths is set in the
561a00
@file{repository.conf} file. In this file, all lines begining with a
561a00
@samp{#} character are considered comments. Both comments and empty
561a00
lines are removed from the configuration file before evaluating it, so
561a00
only configuration lines will remain to be evaluated.  Configuration
561a00
lines must be in the form @samp{template = "path-regex"}, where
561a00
@samp{template} is the relative path to section template and
561a00
@samp{"path-regex"} a regular expression describing the path
561a00
information where you want to apply the template on. Empty spaces are
561a00
irrelevant around the equal sign. As example, consider the following
561a00
configuration file:
561a00
561a00
@verbatim
561a00
# This file defines the relation between section templates and
561a00
# repository paths. Here you can customize the section template of
561a00
# specific directories inside the repository. The first match wins.
561a00
# ----------------------------------------------------------------------
561a00
# $Id: repository.conf 3222 2011-06-04 19:35:00Z al $
561a00
# ----------------------------------------------------------------------
561a00
561a00
Directories/section-functions.texinfo   = "(trunk|branches|tags)/Scripts/Functions/[[:alnum:]]+\.texinfo$"
561a00
Directories/section.texinfo             = "(trunk|branches|tags).*\.texinfo$"
561a00
@end verbatim
561a00
7e4b2b
The @code{help} functionality takes the repository documentation
6a85a1
manual in texinfo format as input and produces Info, Pdf, XML,
6a85a1
DocBook, Xhtml and Txt output files in the
6a85a1
@file{trunk/Manuals/RepoReference/$LANG} directory structure, where
6a85a1
@var{$LANG} represents the language of the manual.  The Info, Pdf and
6a85a1
Txt output files are produced through @command{makeinfo} command and
6a85a1
the Xhtml output through @command{texi2html} command.
561a00
c48535
@quotation
2d89b6
@strong{Caution} The DocBook output produced by @command{makeinfo}
a7ca00
(@file{texinfo-4.8-14.el5}) doesn't conform with its @acronym{DTD,
a7ca00
Document Type Definition}. To determine whether the DocBook XML output
a7ca00
conforms its DTD or not, try the following command:
2d89b6
@verbatim
2d89b6
xmllint --valid --noout repository.docbook
2d89b6
@end verbatim
c48535
@end quotation
c48535
34cffc
The Xhtml output produced by @command{texi2html} is customized through
34cffc
common and specific configuration files. Common configuration files
34cffc
are stored in @file{trunk/Manuals/RepoReference} and include
6bbc18
@file{repository.css}, @file{repository-init.pl} and
6bbc18
@file{repository.sed}. Specific configuration files, on the other
6bbc18
hand, are stored inside the language-specific template directory
6bbc18
(e.g., @file{trunk/Scripts/Functions/Help/Templates/$LANG}) which
6bbc18
includes the @file{repository-init.pl}, @file{repository.conf},
6bbc18
@file{repository.sed} files.
6bbc18
6bbc18
The @code{help} functionality takes the @file{trunk/} directory
6bbc18
structure as top level directory for including external files inside
6bbc18
repository documention entries.  This specification is imposed because
6bbc18
the action of exporting different outputs is performed from
6bbc18
@file{@var{$HOME}/artwork} directory structure. There is no obligation
6bbc18
to use this specific directory structure as base location for
6bbc18
exporting Texinfo outputs, it is a matter of convenience. Notice that,
6bbc18
all path information output from @command{centos-art.sh} script does
6bbc18
begin with @file{trunk/} directory structure as top level directory,
6bbc18
as convenction. In that sake, using the @file{@var{$HOME}/artwork}
6bbc18
directory structure as base directory location for including external
6bbc18
files in repository documentation entries provides consistency with
6bbc18
the way @command{centos-art.sh} script outputs path information.
561a00
227f88
Internationalization of document structures produced by @code{help}
227f88
functionality is performed trough document templates and the
227f88
@env{LANG} environment variable.  There might be one repository
227f88
documentation manual for each locale specified by @env{LANG}
227f88
environment variable. When no template is available for a specific
227f88
language, the @code{en_US} templates are used as reference.  Each
227f88
repository documentation manual written in a language other than
227f88
English, must include the @samp{@@documentlanguage} and
227f88
@samp{@@documentencoding} directives in the main document file (e.g.,
227f88
@file{repository.texinfo}) to provide the language and encoding
2f6bac
information, respectively.  The language information provided by
2f6bac
@samp{@@documentlanguage} can be any value specified by ISO-639
2f6bac
language code standard.  The encoding information provided by
2f6bac
@samp{@@documentencoding} can be either @samp{US-ASCII},
2f6bac
@samp{ISO-8859-1}, @samp{ISO-8859-15} or @samp{ISO-8859-2}.  
2f6bac
2f6bac
The encoding information is required in order for Txt and Info outputs
2f6bac
to show special characters, defined through Texinfo special way of
2f6bac
accentuation (e.g., @samp{@@'a}, @samp{@@~n}, etc.), correctly. In
2f6bac
this specific case, to read both Txt and Info files, it is required
2f6bac
that the terminal you are performing the reading action (e.g.,
2f6bac
@command{gnome-terminal}) be encoded with the same value you specified
2f6bac
inside the repository documentation manual. Otherwise, special
2f6bac
characters may not look as expected.  Using Texinfo special way of
2f6bac
accentuation is also required for @command{texi2html} command to
2f6bac
transform special characters to HTML entities (e.g., @samp{á},
2f6bac
@samp{ñ}, etc.).  In the Pdf output, special characters are
2f6bac
printed well most of times with some exceptions (e.g., the @samp{@@'i}
2f6bac
don't replaces the dot over the letter with the accentuation, but put
2f6bac
the accentuation over it.).
561a00
7e4b2b
@quotation
7e4b2b
@strong{Note} Using other codifications but UTF-8 in the terminal
7e4b2b
might be not convenient in some situations. Prevent yourself from
7e4b2b
using Texinfo special way of accentuation and the
7e4b2b
@samp{@@documentencoding} directive when you be writing documentation
3d2104
entries through @code{help} functionality. This will hide special
3d2104
characters in Pdf output and, in XHTML output no entity will be
765349
translated. However, this configuration will let you to read special
3d2104
characters from Info files in UTF-8 terminals.
7803e6
@end quotation
7e4b2b
7e4b2b
Notice that, UTF-8 is the default character codification used by the
7e4b2b
terminal inside The CentOS Distribution. This is the terminal
7e4b2b
configuration we use for executing functionalities of
25248d
@command{centos-art.sh} script and so to print error messages. When a
25248d
run time error occurs, the @command{centos-art.sh} script will suggest
25248d
you to execute a @code{help} command to know more about why the error
7e4b2b
happend.  This @code{help} command will read the information from an
7e4b2b
Info file. If the Info file is codified to be read in an encoding
7e4b2b
different to the one the terminal we are performing the action is set,
25248d
special characters will be wrongly printed; if printed at all. In this
7e4b2b
situation it would be required to change the terminal codification to
25248d
that one set in the Info file before reading the info file.
7e4b2b
558340
Notice also that, the main purpose of using Texinfo as documentation
25248d
backend when writing documentation related to each repository
25248d
directory, is the possibility of producing Info files as output. This
60c668
posibility is used by @command{centos-art.sh} script to build internal
25248d
documentation references to know where and why the error happen.  It
f5e1f1
lets users to type a command immediatly after errors to know more
f5e1f1
about them, once they happen. It is about creating a direct connection
f5e1f1
between the @command{centos-art.sh} script and the conceptual ideas
f5e1f1
behind it.
7e4b2b
b32b45
@subheading Examples
b32b45
b32b45
@table @command
b32b45
@item centos-art help --edit trunk/Identity
b32b45
b32b45
This command edits the documentation entry related to
b32b45
@file{trunk/Identity} directory.
b32b45
b32b45
@item centos-art help --read trunk/Identity
b32b45
b32b45
This command reads the doumentation entry related to
b32b45
@file{trunk/Identity} directory in info format.
b32b45
b32b45
@end table
b32b45
b32b45
@subheading Author
b32b45
b32b45
Written by Alain Reguera Delgado.
b32b45
b32b45
@subheading Reporting bugs
b32b45
b32b45
Report bugs to @email{centos-artwork@@centos.org} mailing list.
b32b45
b32b45
@subheading Copyright
b32b45
b32b45
Copyright @copyright{}  2009, 2010, 2011 The CentOS Project.
b32b45
b32b45
This  is free software.  You may redistribute copies of it under the
b32b45
terms of the @ref{GNU General Public License}.  There is NO WARRANTY,
b32b45
to the extent permitted by law.
b32b45
b32b45
@subheading See also
b32b45
b32b45
@itemize
b32b45
@item @ref{Directories trunk Scripts Functions}
b32b45
@item @ref{Directories trunk Scripts}
b32b45
@item @ref{Directories trunk}
b32b45
@end itemize