annotate scripts/generate-ini.py @ 6596:304aae43194c

gearbox: fix setup-db failure when db is created for the first time (Issue #272) The port to TG2 in e1ab82613133 replaced pylonsconfig.init_app for gearbox commands with middleware setup code. That introduced reading of the database for commands that don't need a database - for example the command for creating databases ... which thus failed. To fix that, move the middleware setup with database access so it only is run for gearbox command that requires a db session. There is apparently no need for a direct replacement for pylonsconfig.init_app .
author Mads Kiilerich <mads@kiilerich.com>
date Fri, 14 Apr 2017 21:30:42 +0200
parents fc6b1b0e1096
children ff287676b206
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
1 #!/usr/bin/env python2
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
2 """
6555
213085032127 gearbox: make a make-config sub-command available again
Mads Kiilerich <madski@unity3d.com>
parents: 6377
diff changeset
3 Based on kallithea/lib/paster_commands/template.ini.mako, generate
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
4 development.ini
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
5 kallithea/tests/test.ini
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
6 """
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
7
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
8 import re
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
9
6555
213085032127 gearbox: make a make-config sub-command available again
Mads Kiilerich <madski@unity3d.com>
parents: 6377
diff changeset
10 makofile = 'kallithea/lib/paster_commands/template.ini.mako'
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
11
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
12 # the mako conditionals used in all other ini files and templates
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
13 selected_mako_conditionals = set([
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
14 "database_engine == 'sqlite'",
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
15 "http_server == 'waitress'",
6377
d89d586b26ae Merge stable
Mads Kiilerich <mads@kiilerich.com>
parents: 6214
diff changeset
16 "error_aggregation_service == 'appenlight'",
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
17 "error_aggregation_service == 'sentry'",
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
18 ])
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
19
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
20 # the mako variables used in all other ini files and templates
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
21 mako_variable_values = {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
22 'host': '127.0.0.1',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
23 'port': '5000',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
24 'here': '%(here)s',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
25 'uuid()': '${app_instance_uuid}',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
26 }
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
27
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
28 # files to be generated from the mako template
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
29 ini_files = [
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
30 ('kallithea/tests/test.ini',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
31 '''
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
32 Kallithea - config for tests:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
33 initial_repo_scan = true
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
34 sqlalchemy and kallithea_test.sqlite
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
35 custom logging
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
36
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
37 The %(here)s variable will be replaced with the parent directory of this file
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
38 ''',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
39 {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
40 '[server:main]': {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
41 'port': '4999',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
42 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
43 '[app:main]': {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
44 'initial_repo_scan': 'true',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
45 'app_instance_uuid': 'test',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
46 'show_revision_number': 'true',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
47 'beaker.cache.sql_cache_short.expire': '1',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
48 'beaker.session.secret': '{74e0cd75-b339-478b-b129-07dd221def1f}',
6038
9358211ee144 tests: move test data to top level 'data' folder - make grepping in kallithea/ easier
Mads Kiilerich <madski@unity3d.com>
parents: 5769
diff changeset
49 'cache_dir': '%(here)s/../../data/test/cache',
9358211ee144 tests: move test data to top level 'data' folder - make grepping in kallithea/ easier
Mads Kiilerich <madski@unity3d.com>
parents: 5769
diff changeset
50 'index_dir': '%(here)s/../../data/test/index',
9358211ee144 tests: move test data to top level 'data' folder - make grepping in kallithea/ easier
Mads Kiilerich <madski@unity3d.com>
parents: 5769
diff changeset
51 'archive_cache_dir': '%(here)s/../../data/test/tarballcache',
9358211ee144 tests: move test data to top level 'data' folder - make grepping in kallithea/ easier
Mads Kiilerich <madski@unity3d.com>
parents: 5769
diff changeset
52 'beaker.cache.data_dir': '%(here)s/../../data/test/cache/data',
9358211ee144 tests: move test data to top level 'data' folder - make grepping in kallithea/ easier
Mads Kiilerich <madski@unity3d.com>
parents: 5769
diff changeset
53 'beaker.cache.lock_dir': '%(here)s/../../data/test/cache/lock',
6214
f973b866fffc Turbogears2 migration: use sqlalchemy.url iso sqlalchemy.db1.url
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6145
diff changeset
54 'sqlalchemy.url': 'sqlite:///%(here)s/kallithea_test.sqlite',
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
55 },
6145
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
56 '[handler_console]': {
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
57 'level': 'DEBUG',
6145
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
58 'formatter': 'color_formatter',
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
59 },
6145
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
60 # The 'handler_console_sql' block is very similar to the one in
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
61 # development.ini, but without the explicit 'level=DEBUG' setting:
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
62 # it causes duplicate sqlalchemy debug logs, one through
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
63 # handler_console_sql and another through another path.
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
64 '[handler_console_sql]': {
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
65 'formatter': 'color_formatter_sql',
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
66 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
67 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
68 ),
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
69 ('development.ini',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
70 '''
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
71 Kallithea - Development config:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
72 listening on *:5000
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
73 sqlite and kallithea.db
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
74 initial_repo_scan = true
6573
fc6b1b0e1096 ini: set 'debug' only in one place
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6555
diff changeset
75 debug = true
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
76 verbose and colorful logging
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
77
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
78 The %(here)s variable will be replaced with the parent directory of this file
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
79 ''',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
80 {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
81 '[server:main]': {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
82 'host': '0.0.0.0',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
83 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
84 '[app:main]': {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
85 'initial_repo_scan': 'true',
6573
fc6b1b0e1096 ini: set 'debug' only in one place
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6555
diff changeset
86 'debug': 'true',
5536
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
87 'app_instance_uuid': 'development-not-secret',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
88 'beaker.session.secret': 'development-not-secret',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
89 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
90 '[handler_console]': {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
91 'level': 'DEBUG',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
92 'formatter': 'color_formatter',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
93 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
94 '[handler_console_sql]': {
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
95 'level': 'DEBUG',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
96 'formatter': 'color_formatter_sql',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
97 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
98 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
99 ),
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
100 ]
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
101
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
102
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
103 def main():
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
104 # make sure all mako lines starting with '#' (the '##' comments) are marked up as <text>
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
105 print 'reading:', makofile
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
106 mako_org = file(makofile).read()
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
107 mako_no_text_markup = re.sub(r'</?%text>', '', mako_org)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
108 mako_marked_up = re.sub(r'\n(##.*)', r'\n<%text>\1</%text>', mako_no_text_markup, flags=re.MULTILINE)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
109 if mako_marked_up != mako_org:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
110 print 'writing:', makofile
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
111 file(makofile, 'w').write(mako_marked_up)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
112
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
113 # select the right mako conditionals for the other less sophisticated formats
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
114 def sub_conditionals(m):
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
115 """given a %if...%endif match, replace with just the selected
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
116 conditional sections enabled and the rest as comments
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
117 """
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
118 conditional_lines = m.group(1)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
119 def sub_conditional(m):
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
120 """given a conditional and the corresponding lines, return them raw
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
121 or commented out, based on whether conditional is selected
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
122 """
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
123 criteria, lines = m.groups()
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
124 if criteria not in selected_mako_conditionals:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
125 lines = '\n'.join((l if not l or l.startswith('#') else '#' + l) for l in lines.split('\n'))
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
126 return lines
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
127 conditional_lines = re.sub(r'^%(?:el)?if (.*):\n((?:^[^%\n].*\n|\n)*)',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
128 sub_conditional, conditional_lines, flags=re.MULTILINE)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
129 return conditional_lines
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
130 mako_no_conditionals = re.sub(r'^(%if .*\n(?:[^%\n].*\n|%elif .*\n|\n)*)%endif\n',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
131 sub_conditionals, mako_no_text_markup, flags=re.MULTILINE)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
132
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
133 # expand mako variables
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
134 def pyrepl(m):
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
135 return mako_variable_values.get(m.group(1), m.group(0))
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
136 mako_no_variables = re.sub(r'\${([^}]*)}', pyrepl, mako_no_conditionals)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
137
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
138 # remove utf-8 coding header
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
139 base_ini = re.sub(r'^## -\*- coding: utf-8 -\*-\n', '', mako_no_variables)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
140
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
141 # create ini files
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
142 for fn, desc, settings in ini_files:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
143 print 'updating:', fn
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
144 ini_lines = re.sub(
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
145 '# Kallithea - config file generated with kallithea-config *#\n',
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
146 ''.join('# %-77s#\n' % l.strip() for l in desc.strip().split('\n')),
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
147 base_ini)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
148 def process_section(m):
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
149 """process a ini section, replacing values as necessary"""
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
150 sectionname, lines = m.groups()
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
151 if sectionname in settings:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
152 section_settings = settings[sectionname]
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
153 def process_line(m):
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
154 """process a section line and update value if necessary"""
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
155 setting, value = m.groups()
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
156 line = m.group(0)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
157 if setting in section_settings:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
158 line = '%s = %s' % (setting, section_settings[setting])
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
159 if '$' not in value:
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
160 line = '#%s = %s\n%s' % (setting, value, line)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
161 return line.rstrip()
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
162 lines = re.sub(r'^([^#\n].*) = ?(.*)', process_line, lines, flags=re.MULTILINE)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
163 return sectionname + '\n' + lines
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
164 ini_lines = re.sub(r'^(\[.*\])\n((?:(?:[^[\n].*)?\n)*)', process_section, ini_lines, flags=re.MULTILINE)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
165 file(fn, 'w').write(ini_lines)
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
166
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
167 if __name__ == '__main__':
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
168 main()