<sect1 id="repository-history-2012">
<title>2012's</title>
<para>
&TCAR; development was eventually stopped at November 2011
until July 2012 when we needed to make the
<command>centos-art.sh</command> script a bit more
customizable than it presently was. For example, it was
considered as a need that functionalities inside the
<command>centos-art.sh</command> script must be not just
conceived independent one another but reusable in different
contexts as well.
</para>
<sect2 id="repository-history-2012-UpdateLocales">
<title>Make Localization Of <command>centos-art.sh</command>
Script Specific To Different Contexts</title>
<para>
The procedure used to locale messages inside the
<command>centos-art.sh</command> script had to be re-designed
in order to accept such pluggable behavior into the script. We
couldn't publish unique <filename>centos-art.sh.po</filename>
and <filename>centos-art.sh.mo</filename> files because they
may contain different information in different contexts. For
example, if you are using the <function>render</function> and
<function>help</function> functionalities you only need
translation messages for them and not those from other
functionalities that may exist in the central repository but
you didn't download nor use into your working copy.
</para>
<para>
One solution for this could be to have independent PO files
for each functionality of <command>centos-art.sh</command>
script which are combined to create the final PO and MO files
that <application>gettext</application> uses to retrive
translated strings when <command>centos-art.sh</command>
script is running. For this solution to be effective, you must
be selective about the functionalities and locales directories
you download into your working copy. For example, if you want
to use the render functionality and its locale messages only,
you must download the required directories and exclude others.
</para>
<note>
<para>
In case you don't want to be selective and download the whole
repository, the creation of the
<filename>centos-art.sh.po</filename>,
<filename>centos-art.sh.pot</filename> and
<filename>centos-art.sh.mo</filename> files will occur
automatically the first time you run the
<function>prepare</function> functionality (which require the
<function>locale</function> functionality to be available), or
later, by running the following command:
<screen>centos-art locale trunk/Scripts/Bash --update</screen>
</para>
<para>
For more information about the <function>prepare</function>
and <function>locale</function> functionalities, see <xref
linkend="scripts-bash-locale" /> and <xref
linkend="scripts-bash-prepare" /> respectively.
</para>
</note>
<para>
As shown in <xref linkend="repository-history-2012-2" />, both
<function>Commons</function> and <function>Locales</function>
functionalities will always be required directories. The
<function>Commons</function> directory contains the common
functionalities and the <function>Locales</function> directory
contains the standard procedures you need to run in order to
build the final <filename>centos-art.sh.mo</filename> file
used by <application>gettext</application> to retrive
translation strings when the <command>centos-art.sh</command>
script is running. Remember that
<filename>centos-art.sh.pot</filename>,
<filename>centos-art.sh.po</filename> files aren't under
version control and they are built by combining each
funtionality message.po file into a PO and later a MO file.
</para>
<example id="repository-history-2012-2">
<title>Directory structure of a rendering-only context</title>
<screenshot>
<screeninfo>Directory structure of a rendering-only context</screeninfo>
<mediaobject>
<textobject>
<programlisting>
/home/centos/Projects/artwork/trunk/
|-- Locales/
| `-- Scripts/
| `-- Bash/
| `-- es_ES/
| |-- Functions/
| | |-- Commons/
| | | |-- messages.po
| | | `-- messages.pot
| | |-- Locales/
| | | |-- messages.po
| | | `-- messages.pot
| | `-- Render/
| | |-- messages.po
| | `-- messages.pot
| |-- LC_MESSAGES/
| | `-- centos-art.sh.mo
| |-- centos-art.sh.po
| `-- centos-art.sh.pot
`-- Scripts/
`-- Bash/
|-- Functions/
| |-- Commons/
| |-- Locales/
| `-- Render/
`-- centos-art.sh
</programlisting>
</textobject>
</mediaobject>
</screenshot>
</example>
<para>
A practical example of using the solution described above may
be found when you are working on the corporate identity of
&TCP; and then need to start a new corporate identity project
for another organization. You want to keep the directory
structure of &TCAR; and its automation tool, the
<command>centos-art.sh</command> script. Your new project
requires you to introduce new functionalities to
<command>centos-art.sh</command> which don't fit the needs of
&TCP; (e.g., you want to introduce a
<function>report</function> functionality to mesure how much
connect time do you consume through your PPP internface.) or
you just want to keep the directory structure of your new
project as simple as possible.
</para>
<para>
To go through this it is possible to mix specific parts of
different central repositories into one single working copy.
This is the working copy you'll use to manage your new
project. In <xref linkend="repository-history-2012-1" />, we
see how the <filename class="directory">Render</filename>,
<filename class="directory">Locales</filename> and <filename
class="directory">Commons</filename> directories which come
from the &TCAR; has been integrated into the working copy of
your new project.
</para>
<example id="repository-history-2012-1">
<title>Mixing automation functionalities.</title>
<screenshot>
<screeninfo>Mixing automation functionalities.</screeninfo>
<mediaobject>
<textobject>
<programlisting>
/home/al/Projects/Myapp/trunk/
|-- Locales/
| `-- Scripts/
| `-- Bash/
| `-- es_ES/
| |-- Functions/
| | |-- Commons/ <--| from https://projects.centos.org/svn/artwork/
| | | |-- messages.po
| | | `-- messages.pot
| | |-- Locales/ <--| from https://projects.centos.org/svn/artwork/
| | | |-- messages.po
| | | `-- messages.pot
| | |-- Render/ <--| from https://projects.centos.org/svn/artwork/
| | | |-- messages.po
| | | `-- messages.pot
| | `-- Report/
| | |-- messages.po
| | `-- messages.pot
| |-- LC_MESSAGES/
| | `-- myapp.sh.mo
| |-- myapp.sh.po
| `-- myapp.sh.pot
`-- Scripts/
`-- Bash/
|-- Functions/
| |-- Commons/ <--| from https://projects.centos.org/svn/artwork/
| |-- Locales/ <--| from https://projects.centos.org/svn/artwork/
| |-- Render/ <--| from https://projects.centos.org/svn/artwork/
| `-- Report/
`-- myapp.sh
</programlisting>
</textobject>
</mediaobject>
</screenshot>
</example>
<para>
At this point, your working copy contains files from two
different central repositories. One repository provides the
files of your new organization project and the other one
provides the files related to the <function>render</function>
functionality from &TCAR;. In this environment, all updates
commited to the <filename class="directory">Render</filename>,
<filename class="directory">Locales</filename> and <filename
class="directory">Commons</filename> directories at &TCAR;
will be available to you too, the next time you update your
working copy. Likewise, if you change something in any of
these directories and commit your changes, your changes will
be available to poeple working in &TCAR; the next time they
update their working copies.
</para>
<para>
Understanding the need of mixing different central
repositories into a single working copy is an important step
for reusing the functionalities that come with centos-art.sh
script, but it is not enough if you want to customize the
information produced by it. By default, the centos-art.sh
script uses information related to &TCP;. You probably need to
change this if you are producing images to a different
organization than &TCP;. For example, some of the information
you might need to change would be the copyright holder,
brands, domain names, mailing lists, and so forth. To change
this information you need to duplicate the file
<filename>centos-art.sh</filename> and rename it to something
else. Later, you need to edit the renamed version and change
variables inside according your needs. In <xref
linkend="repository-history-2012-1" />, we used the name
<command>myapp.sh</command> instead of
<command>centos-art.sh</command> so the information we set
inside it could reflect the specific needs that motivated the
creation of a new project without affecting those from &TCP;.
</para>
<para>
Most of the information you need to change in your duplicated
version of <filename>centos-art.sh</filename> file is
controlled by a set of read-only variables. You modify these
variables here and they will be available all along the script
execution time. For example, you can change the value of
<varname>CLI_WRKCOPY</varname> variable inside your duplicated
version of <filename>centos-art.sh</filename> to change the
absolute path you use to store your working copy.
</para>
</sect2>
<sect2 id="repository-history-2012-UnifyCommonFunctionalities">
<title>Unify Common Functionalities Into One Single File</title>
<para>
...
</para>
</sect2>
</sect1>