[TYPO3-doc] New: Use a YAML file "Settings.yml" for configuration in your ReST documentation
Martin Bless
m.bless at gmx.de
Wed Aug 15 09:56:02 CEST 2012
New feature
===========
I've implemented a new feature yesterday that enhances the
capabilities of Sphinx for our TYPO3 ReST documentation projects.
Sphinx is the tool that takes our ReST files as input and builds HTML
or PDF or whatever on output. A standard Sphinx project uses a
'conf.py' file for configuration of the build process. Unfortunately
this ((ansatz)) has some drawbacks. One is that it's potentially
dangerous executable code. And another on is that it may contain
machine specific technical settings that a normal editor shouldn't be
bothered with. So we were looking for a better solution. It is now
available. And here is how it works:
We have agreed on that your documentation starts somewhere in a folder
"Documentation" with the master document "Index.rst". You may now add
a project specific 'Settings.yml' file that is versioned all along
with the project. It goes to the folder where your master document
resides. This is step 1: Add a Settings.yml file:
Step 1
------
SomePackage.git/
|- Documentation/
|- Index.rst
|- Settings.yml
Step 2 (optional)
-----------------
You only need to do step 2 if you're rendering ReST projects locally
for yourself. Then please add a TYPO3 specific codeblock manually to
the end of your 'conf.py'. You can grab the codeblock from [1]
Step 3 (optional)
-----------------
You only need to do step 3 if you're rendering ReST projects locally
for yourself. This means that you have Python, Docutils, Sphinx and so
on installed on your machine as described in [2]. I would encourage
you to do so.
1. Get a snapshot of [3]
2. Go to folder 'ExtendingSphinxForTYPO3' on the command line
3. Run ``python setup.py install`` or
``sudo python setup.py install``. This will add a package
't3sphinx' to your Python interpreter.
Verify that the package is properly installed and find out where your
files reside:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
C:\Users\marble>python
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 ...]
Type "help", "copyright", "credits" or "license" for ... information
>>> import t3sphinx
>>> dir(t3sphinx)
['__builtins__', '__doc__', '__file__', '__name__',
'__package__', '__path__', '__version__', 'os', 'package_dir',
'pathToGlobalYamlSettings', typo3_codeblock_for_conf_py',
'yamlsettings']
>>> t3sphinx.pathToGlobalYamlSettings
'D:\\Python27\\lib\\site-packages\\t3sphinx\\settings\\GlobalSettings.yml'
>>> t3sphinx.typo3_codeblock_for_conf_py
'D:\\Python27\\lib\\site-packages\\t3sphinx\\resources\\typo3_codeblock_for_conf.py'
>>> exit()
C:\Users\marble>
How it works
============
During the Sphinx build process the Python configuration file
'conf.py' is executed. Variables defined there are 'conf.py' module
variables and influence the build process. With the above
modifications we will also create several Yaml files for instructional
and diagnostic purposes. This is what happens:
1. Sphinx proceeds normally and prepares the variables in 'conf.py'.
2. We take those current settings of 'conf.py' and dump them as file
'10_conf_py.yml' in the directory that we have chosen for
logging. See [4] for such a folder on the server or
``Documentation/_make/_not_versioned/`` in your local project.
3. Following ``t3sphinx.pathToGlobalYamlSettings`` we try to find a
global Yaml file 'GlobalSettings.yml'. This is meant to exist
only once on a machine and should be maintained by the
TYPO3 Docteam.
4. We read the 'GlobalSettings.yml' file and dump what we have
parsed from Yaml to '20_GlobalSettings.yml' in our logging
directory.
5. We override values in 'conf.py' with those found in our global
settings file. If values existed they are replaced completely.
This means: there is *no* deep replacement. Instead variables
are replaced completely at the top level.
7. We dump the now current 'conf.py' to ``10_20_conf_py.yml``
in our logging directory.
8. We try to find and read the project specific
``Documentation/Settings.yml`` file.
9. We dump what we have parsed from Yaml to '30_Settings.yml'
in our logging directory.
10. We override values in 'conf.py' with those now found in our
global prject specific settings file 'Settings.yml'.
If values existed they are replaced completely.
This means: there is *no* deep replacement. Instead variables
are replaced or created completely at the top level.
11. We dump the now current 'conf.py' to ``10_20_30_conf_py.yml``
in our logging directory.
``10_20_30_conf_py.yml`` shows the **final settings** that
are actually being used in the Sphinx build process.
In short this means:
====================
- You now may use a ``Documentation/Settings.yml`` file to
selectively define values you otherwise would have written
directly in ``conf.py`` file.
- You only need to specify values you want to be different.
- Watch the logging directory [4] or [6] for instructional and
"diagnostic" Yaml files that tell you what has happened and what can
be done how.
Finally
=======
For question please ask here or in [5].
For feature requests or bug reports create an issure on [5].
Thanks for your attention - and keep the flow!
Martin
[1]
http://git.typo3.org/Documentation/RestTools.git?a=blob;f=ExtendingSphinxForTYPO3/src/t3sphinx/resources/typo3_codeblock_for_conf.py;hb=master
[2] http://wiki.typo3.org/Rest (-> Installation)
[3] http://git.typo3.org/Documentation/RestTools.git
[4] as existing example:
http://srv123.typo3.org/~mbless/git.typo3.org/Documentation/TYPO3/Example/OfficialManual.git.make/
[5] https://forge.typo3.org/projects/tools-rest
[6] local logging directory: Documentation/_make/_not_versioned/
--
Certified TYPO3 Integrator | TYPO3 Documentation Team Member
http://mbless.de
More information about the TYPO3-project-documentation
mailing list