annotate rhodecode/bin/rhodecode_config.py @ 4147:1c8f818787b3 rhodecode-2.2.5-gpl

old style: show the full link box on summary page - no overlap or truncation
author Mads Kiilerich <madski@unity3d.com>
date Wed, 02 Jul 2014 19:03:23 -0400
parents 31e119cb02ef
children 7e5f8c12a3fc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
1 # -*- coding: utf-8 -*-
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
2 # This program is free software: you can redistribute it and/or modify
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
3 # it under the terms of the GNU General Public License as published by
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
4 # the Free Software Foundation, either version 3 of the License, or
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
5 # (at your option) any later version.
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
6 #
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
7 # This program is distributed in the hope that it will be useful,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
10 # GNU General Public License for more details.
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
11 #
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
12 # You should have received a copy of the GNU General Public License
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
4011
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
14 """
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
15 rhodecode.bin.rhodecode_config
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
17
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
18 configuration generator for RhodeCode
4011
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
19
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
20 :created_on: Jun 18, 2013
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
21 :author: marcink
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
22 :copyright: (c) 2013 RhodeCode GmbH.
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
23 :license: GPLv3, see LICENSE for more details.
4011
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
24 """
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
25
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
26
4011
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
27 from __future__ import with_statement
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
28 import os
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
29 import sys
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
30 import uuid
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
31 import argparse
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
32 from mako.template import Template
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
33 TMPL = 'template.ini.mako'
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
34 here = os.path.dirname(os.path.abspath(__file__))
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
35
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
36 def argparser(argv):
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
37 usage = (
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
38 "rhodecode-config [-h] [--filename=FILENAME] [--template=TEMPLATE] \n"
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
39 "VARS optional specify extra template variable that will be available in "
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
40 "template. Use comma separated key=val format eg.\n"
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
41 "key1=val1,port=5000,host=127.0.0.1,elements='a\,b\,c'\n"
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
42 )
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
43
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
44 parser = argparse.ArgumentParser(
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
45 description='RhodeCode CONFIG generator with variable replacement',
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
46 usage=usage
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
47 )
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
48
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
49 ## config
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
50 group = parser.add_argument_group('CONFIG')
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
51 group.add_argument('--filename', help='Output ini filename.')
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
52 group.add_argument('--template', help='Mako template file to use instead of '
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
53 'the default builtin template')
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
54 group.add_argument('--raw', help='Store given mako template as raw without '
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
55 'parsing. Use this to create custom template '
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
56 'initially', action='store_true')
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
57 group.add_argument('--show-defaults', help='Show all default variables for '
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
58 'builtin template', action='store_true')
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
59 args, other = parser.parse_known_args()
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
60 return parser, args, other
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
61
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
62
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
63 def _escape_split(text, sep):
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
64 """
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
65 Allows for escaping of the separator: e.g. arg='foo\, bar'
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
66
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
67 It should be noted that the way bash et. al. do command line parsing, those
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
68 single quotes are required. a shameless ripoff from fabric project.
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
69
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
70 """
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
71 escaped_sep = r'\%s' % sep
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
72
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
73 if escaped_sep not in text:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
74 return text.split(sep)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
75
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
76 before, _, after = text.partition(escaped_sep)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
77 startlist = before.split(sep) # a regular split is fine here
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
78 unfinished = startlist[-1]
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
79 startlist = startlist[:-1]
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
80
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
81 # recurse because there may be more escaped separators
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
82 endlist = _escape_split(after, sep)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
83
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
84 # finish building the escaped value. we use endlist[0] becaue the first
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
85 # part of the string sent in recursion is the rest of the escaped value.
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
86 unfinished += sep + endlist[0]
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
87
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
88 return startlist + [unfinished] + endlist[1:] # put together all the parts
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
89
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
90 def _run(argv):
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
91 parser, args, other = argparser(argv)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
92 if not len(sys.argv) > 1:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
93 print parser.print_help()
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
94 sys.exit(0)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
95 # defaults that can be overwritten by arguments
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
96 tmpl_stored_args = {
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
97 'http_server': 'waitress',
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
98 'lang': 'en',
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
99 'database_engine': 'sqlite',
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
100 'host': '127.0.0.1',
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
101 'port': 5000,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4011
diff changeset
102 'error_aggregation_service': None,
4011
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
103 }
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
104 if other:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
105 # parse arguments, we assume only first is correct
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
106 kwargs = {}
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
107 for el in _escape_split(other[0], ','):
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
108 kv = _escape_split(el, '=')
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
109 if len(kv) == 2:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
110 k, v = kv
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
111 kwargs[k] = v
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
112 # update our template stored args
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
113 tmpl_stored_args.update(kwargs)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
114
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
115 # use default that cannot be replaced
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
116 tmpl_stored_args.update({
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
117 'uuid': lambda: uuid.uuid4().hex,
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
118 'here': os.path.abspath(os.curdir),
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
119 })
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
120 if args.show_defaults:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
121 for k,v in tmpl_stored_args.iteritems():
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
122 print '%s=%s' % (k, v)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
123 sys.exit(0)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
124 try:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
125 # built in template
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
126 tmpl_file = os.path.join(here, TMPL)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
127 if args.template:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
128 tmpl_file = args.template
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
129
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
130 with open(tmpl_file, 'rb') as f:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
131 tmpl_data = f.read()
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
132 if args.raw:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
133 tmpl = tmpl_data
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
134 else:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
135 tmpl = Template(tmpl_data).render(**tmpl_stored_args)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
136 with open(args.filename, 'wb') as f:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
137 f.write(tmpl)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
138 print 'Wrote new config file in %s' % (os.path.abspath(args.filename))
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
139
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
140 except Exception:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
141 from mako import exceptions
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
142 print exceptions.text_error_template().render()
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
143
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
144 def main(argv=None):
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
145 """
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
146 Main execution function for cli
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
147
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
148 :param argv:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
149 """
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
150 if argv is None:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
151 argv = sys.argv
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
152
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
153 try:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
154 return _run(argv)
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
155 except Exception:
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
156 raise
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
157
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
158
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
159 if __name__ == '__main__':
4959e22af6ca Added ini config maker with dynamic variable replacements.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
160 sys.exit(main(sys.argv))