Mercurial > hg > MakeItSo
comparison makeitso/main.py @ 0:7a76836b50a7
initial (non-working) commit to makeitso
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Tue, 02 Nov 2010 17:56:14 -0700 |
| parents | |
| children | c2f8464e0395 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:7a76836b50a7 |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 """ | |
| 3 filesystem template interpreter | |
| 4 """ | |
| 5 | |
| 6 import os | |
| 7 import subprocess | |
| 8 import sys | |
| 9 | |
| 10 from optparse import OptionParser | |
| 11 from tempita import Template | |
| 12 | |
| 13 def call(command, *args, **kw): | |
| 14 code = subprocess.call(command, *args, **kw) | |
| 15 if code: | |
| 16 if isinstance(command, basestring): | |
| 17 cmdstr = command | |
| 18 else: | |
| 19 cmdstr = ' '.join(command) | |
| 20 raise SystemExit("Command `%s` exited with code %d" % (cmdstr, code)) | |
| 21 | |
| 22 def template_variables(template): | |
| 23 """return the variables needed for a template""" | |
| 24 raise NotImplementedError | |
| 25 | |
| 26 def main(args=sys.argv[1:]): | |
| 27 | |
| 28 # create option parser | |
| 29 usage = '%prog [options]' | |
| 30 parser = OptionParser(usage, description=__doc__) | |
| 31 parser.add_option('--variables', dest='variables', | |
| 32 help='print the variables in a template') | |
| 33 options, args = parser.parse_args(args) | |
| 34 | |
| 35 # template variables | |
| 36 variables = {} | |
| 37 _vars = [] | |
| 38 _args = [] | |
| 39 for arg in args: | |
| 40 if '=' in arg: | |
| 41 key, value = arg.split('=') | |
| 42 variables[key] = value | |
| 43 else: | |
| 44 _args.append(arg) | |
| 45 args = _args | |
| 46 | |
| 47 # get the content | |
| 48 content = sys.stdin.read() | |
| 49 template = Template(content) | |
| 50 print template.interpolate(**variables) | |
| 51 | |
| 52 | |
| 53 if __name__ == '__main__': | |
| 54 main() |
