Files @ e71216a16853
Branch filter:

Location: kallithea/scripts/generate-ini.py

Thomas De Schampheleire
docs: reorganize index page

Reorganize the index page of the manual into three main sections:
administrator guide, user guide, developer guide. In principle,
administrators, users and developers are independent roles that can be
fulfilled by different people.

'Administrators' install, configure and maintain Kallithea. They have
'admin' privilege in the web interface.

'Users' do not have access to the Kallithea installation files. They can
only access the web interface, and generally do not have 'admin' privilege.
They may be the owner of repositories, repository groups, or user groups,
and as such modify the settings of these objects, even though they cannot
modify the settings of Kallithea itself.

'Developers' modify the Kallithea source code. They may or may not
contribute these changes back to the Kallithea community.



The 'Readme' section is a bit outside of this classification. As it serves
as a basic introduction to Kallithea, it is kept first.

The 'Index' and 'Search' functionality are not really 'part of' the manual,
so should not be under 'Other topics'. Instead they are put at the very top
so they are readily visible.


This commit is only changing the index page. Subsequent commits can move and
split some documentation files in the repository to mirror this structure.
For example, the 'Version control systems support' page has information for
administrators (ini settings and importing existing repositories) as well as
for users (handling Mercurial subrepositories).
#!/usr/bin/env python2
"""
Based on kallithea/lib/paster_commands/template.ini.mako, generate
  development.ini
  kallithea/tests/test.ini
"""

import re

from kallithea.lib import inifile

# files to be generated from the mako template
ini_files = [
    ('development.ini',
        {
            '[server:main]': {
                'host': '0.0.0.0',
            },
            '[app:main]': {
                'debug': 'true',
                'app_instance_uuid': 'development-not-secret',
                'beaker.session.secret': 'development-not-secret',
            },
            '[handler_console]': {
                'formatter': 'color_formatter',
            },
            '[handler_console_sql]': {
                'formatter': 'color_formatter_sql',
            },
            '[logger_routes]': {
                'level': 'DEBUG',
            },
            '[logger_beaker]': {
                'level': 'DEBUG',
            },
            '[logger_templates]': {
                'level': 'INFO',
            },
            '[logger_kallithea]': {
                'level': 'DEBUG',
            },
            '[logger_tg]': {
                'level': 'DEBUG',
            },
            '[logger_gearbox]': {
                'level': 'DEBUG',
            },
            '[logger_whoosh_indexer]': {
                'level': 'DEBUG',
            },
        },
    ),
]


def main():
    # make sure all mako lines starting with '#' (the '##' comments) are marked up as <text>
    makofile = inifile.template_file
    print 'reading:', makofile
    mako_org = open(makofile).read()
    mako_no_text_markup = re.sub(r'</?%text>', '', mako_org)
    mako_marked_up = re.sub(r'\n(##.*)', r'\n<%text>\1</%text>', mako_no_text_markup, flags=re.MULTILINE)
    if mako_marked_up != mako_org:
        print 'writing:', makofile
        open(makofile, 'w').write(mako_marked_up)

    # create ini files
    for fn, settings in ini_files:
        print 'updating:', fn
        inifile.create(fn, None, settings)


if __name__ == '__main__':
    main()