annotate scripts/generate-ini.py @ 6659:a4715df40299

make-config: use %(here)s in the generated file instead of hardcoding absolute path Restore what paster make-config did until we introduced gearbox in d2aa8b1625a4. The make-config sub command was re-introduced in 6c8af2d22deb but created files with absolute paths.
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 30 May 2017 02:59:45 +0200
parents ff287676b206
children cddff7f0dd08
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 '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
25 }
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 # 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
28 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
29 ('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
30 '''
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 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
32 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
33 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
34 ''',
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 {
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 '[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
37 '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
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 '[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
40 '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
41 '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
42 '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
43 '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
44 '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
45 '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
46 '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
47 '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
48 '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
49 '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
50 },
6145
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
51 '[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
52 '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
53 '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
54 },
6145
b1fc5a98952c test.ini: align some logging-related settings with development.ini
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6038
diff changeset
55 # 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
56 # 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
57 # 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
58 # 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
59 '[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
60 '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
61 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
62 },
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
63 ),
06d5c043e989 ini: add scripts/generate-ini.py for generating all .ini files from template.ini.mako
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
64 ('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
65 '''
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 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
67 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
68 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
69 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
70 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
71 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
72 ''',
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 {
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 '[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
75 '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
76 },
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 '[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
78 '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
79 '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
80 '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
81 '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
82 },
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 '[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
84 '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
85 '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
86 },
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 '[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
88 '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
89 '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
90 },
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 },
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 ),
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
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
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 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
97 # 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
98 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
99 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
100 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
101 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
102 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
103 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
104 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
105
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 # 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
107 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
108 """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
109 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
110 """
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 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
112 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
113 """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
114 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
115 """
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 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
117 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
118 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
119 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
120 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
121 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
122 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
123 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
124 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
125
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 # 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
127 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
128 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
129 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
130
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 # 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
132 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
133
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 # 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
135 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
136 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
137 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
138 '# 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
139 ''.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
140 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
141 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
142 """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
143 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
144 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
145 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
146 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
147 """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
148 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
149 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
150 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
151 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
152 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
153 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
154 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
155 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
156 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
157 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
158 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
159
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 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
161 main()