Mercurial > kallithea
changeset 6894:94f6b23e52d0
ini: move high level functionality and defaults to inifiles library
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Thu, 14 Sep 2017 02:08:07 +0200 |
parents | d06039dc4ca2 |
children | 163d1c4f2b8b |
files | kallithea/lib/inifile.py scripts/generate-ini.py |
diffstat | 2 files changed, 31 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/inifile.py Thu Sep 14 02:08:06 2017 +0200 +++ b/kallithea/lib/inifile.py Thu Sep 14 02:08:07 2017 +0200 @@ -22,6 +22,7 @@ import logging import re +import os import mako.template @@ -29,6 +30,19 @@ log = logging.getLogger(__name__) +template_file = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(__file__))), + 'kallithea/lib/paster_commands/template.ini.mako') + +default_variables = { + 'database_engine': 'sqlite', + 'http_server': 'waitress', + 'host': '127.0.0.1', + 'port': '5000', + 'uuid': lambda: 'VERY-SECRET', +} + + def expand(template, mako_variable_values, settings): """Expand mako template and tweak it. Not entirely stable for random templates as input, but good enough for our @@ -81,9 +95,11 @@ third_extra = 3 <BLANKLINE> """ + mako_variables = dict(default_variables) + mako_variables.update(mako_variable_values or {}) settings = dict((k, dict(v)) for k, v in settings.items()) # deep copy before mutating - ini_lines = mako.template.Template(template).render(**mako_variable_values) + ini_lines = mako.template.Template(template).render(**mako_variables) def process_section(m): """process a ini section, replacing values as necessary""" @@ -131,3 +147,14 @@ if section_settings) return ini_lines + + +def create(dest_file, mako_variable_values, settings): + """Create an ini file at dest_file""" + with open(template_file, 'rb') as f: + template = f.read().decode('utf-8') + + ini_lines = expand(template, mako_variable_values, settings) + + with open(dest_file, 'wb') as f: + f.write(ini_lines.encode('utf-8'))
--- a/scripts/generate-ini.py Thu Sep 14 02:08:06 2017 +0200 +++ b/scripts/generate-ini.py Thu Sep 14 02:08:07 2017 +0200 @@ -9,17 +9,6 @@ from kallithea.lib import inifile -makofile = 'kallithea/lib/paster_commands/template.ini.mako' - -# the mako variables used in all other ini files and templates -mako_variable_values = { - 'database_engine': 'sqlite', - 'http_server': 'waitress', - 'host': '127.0.0.1', - 'port': '5000', - 'uuid': lambda: 'VERY-SECRET', -} - # files to be generated from the mako template ini_files = [ ('kallithea/tests/test.ini', @@ -69,6 +58,7 @@ 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) @@ -80,8 +70,8 @@ # create ini files for fn, settings in ini_files: print 'updating:', fn - ini_lines = inifile.expand(mako_marked_up, mako_variable_values, settings) - open(fn, 'w').write(ini_lines) + inifile.create(fn, None, settings) + if __name__ == '__main__': main()