Mercurial > hg > MakeItSo
comparison makeitso/makeitso.py @ 9:a77630b2b491
* add commandline to print commandlines
* add commandline option to print all variables
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Thu, 11 Nov 2010 18:19:44 -0800 |
| parents | ac78e26cd568 |
| children | a6fd93354f23 |
comparison
equal
deleted
inserted
replaced
| 8:157df8d1c3ed | 9:a77630b2b491 |
|---|---|
| 9 import sys | 9 import sys |
| 10 | 10 |
| 11 from optparse import OptionParser | 11 from optparse import OptionParser |
| 12 from tempita import Template | 12 from tempita import Template |
| 13 | 13 |
| 14 # URL of this file | |
| 15 location = 'http://k0s.org/mozilla/hg/MakeItSo/raw-file/tip/makeitso/makeitso.py' | |
| 16 | |
| 17 # regular expressions for finding the shebang | |
| 14 shebang_re = '#!.*makeitso.*' | 18 shebang_re = '#!.*makeitso.*' |
| 15 shebang_re = re.compile(shebang_re) | 19 shebang_re = re.compile(shebang_re) |
| 16 | 20 |
| 17 class MissingVariablesException(Exception): | 21 class MissingVariablesException(Exception): |
| 18 def __init__(self, message, missing): | 22 def __init__(self, message, missing): |
| 78 if missing: | 82 if missing: |
| 79 # TODO: add a switch for interactive or not | 83 # TODO: add a switch for interactive or not |
| 80 variables.update(read_variables(missing)) | 84 variables.update(read_variables(missing)) |
| 81 print >> fp, template.substitute(**variables) | 85 print >> fp, template.substitute(**variables) |
| 82 | 86 |
| 87 def invocation(url, **variables): | |
| 88 """returns a string appropriate for TTW invocation""" | |
| 89 variables_string = ' '.join(['%s=%s' % (i,j) for i,j in variables.items()]) | |
| 90 return 'python <(curl %s) %s %s' % (location, url, variables_string) | |
| 83 | 91 |
| 84 def main(args=sys.argv[1:]): | 92 def main(args=sys.argv[1:]): |
| 85 | 93 |
| 86 # create option parser | 94 # create option parser |
| 87 usage = '%prog [options]' | 95 usage = '%prog [options] template <template> <...>' |
| 88 parser = OptionParser(usage, description=__doc__) | 96 parser = OptionParser(usage, description=__doc__) |
| 89 parser.add_option('--variables', dest='variables', action='store_true', | 97 parser.add_option('--commandline', dest='commandline', |
| 98 action='store_true', default=False, | |
| 99 help="print the commandline to invoke this script TTW") | |
| 100 parser.add_option('--variables', dest='variables', | |
| 101 action='store_true', default=False, | |
| 90 help='print the variables in a template') | 102 help='print the variables in a template') |
| 91 options, args = parser.parse_args(args) | 103 options, args = parser.parse_args(args) |
| 92 | 104 |
| 105 # print the variables for the templates | |
| 93 if options.variables: | 106 if options.variables: |
| 94 variables = template_variables() # TODO: pass template | 107 |
| 108 # makes no sense without a template | |
| 109 if not args: | |
| 110 parser.print_usage() | |
| 111 parser.exit() | |
| 112 | |
| 113 # find all variables | |
| 114 variables = set() | |
| 115 for arg in args: | |
| 116 content = file(arg).read() | |
| 117 template = Template(content) | |
| 118 variables.update(template_variables(template)) | |
| 119 | |
| 120 # print them | |
| 121 for variable in variables: | |
| 122 print variable | |
| 95 return | 123 return |
| 96 | 124 |
| 97 # template variables | 125 # template variables |
| 98 variables = {} | 126 variables = {} |
| 99 _vars = [] | 127 _vars = [] |
| 104 variables[key] = value | 132 variables[key] = value |
| 105 else: | 133 else: |
| 106 _args.append(arg) | 134 _args.append(arg) |
| 107 args = _args | 135 args = _args |
| 108 | 136 |
| 137 # print TTW commandline for invocation | |
| 138 if options.commandline: | |
| 139 if args: | |
| 140 for arg in args: | |
| 141 print invocation(arg, **variables) | |
| 142 else: | |
| 143 print invocation('[URL]', **variables) | |
| 144 return | |
| 145 | |
| 109 # get the content | 146 # get the content |
| 110 if args: | 147 if args: |
| 111 for arg in args: | 148 for arg in args: |
| 112 content = file(arg).read() | 149 content = file(arg).read() |
| 113 substitute(content, variables=variables) | 150 substitute(content, variables=variables) |
