Mercurial > hg > MakeItSo
comparison makeitso/makeitso.py @ 16:1818cc524cde
change API making substitute return the substituted quantity
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 15 Nov 2010 18:28:10 -0800 |
parents | edabb0bfe107 |
children | c879b93c3f15 |
comparison
equal
deleted
inserted
replaced
15:edabb0bfe107 | 16:1818cc524cde |
---|---|
8 import subprocess | 8 import subprocess |
9 import sys | 9 import sys |
10 import urllib | 10 import urllib |
11 | 11 |
12 from optparse import OptionParser | 12 from optparse import OptionParser |
13 | |
14 | 13 |
15 try: | 14 try: |
16 import tempita | 15 import tempita |
17 except ImportError: | 16 except ImportError: |
18 raise NotImplementedError | 17 raise NotImplementedError |
74 for i in variables: | 73 for i in variables: |
75 print 'Enter %s: ' % i, | 74 print 'Enter %s: ' % i, |
76 retval[i] = raw_input() | 75 retval[i] = raw_input() |
77 return retval | 76 return retval |
78 | 77 |
79 def substitute(content, fp=sys.stdout, variables=None): | 78 def substitute(content, variables=None): |
79 """interactive (for now) substitution""" | |
80 | 80 |
81 # remove makeitso shebang if it has one | 81 # remove makeitso shebang if it has one |
82 if shebang_re.match(content): | 82 if shebang_re.match(content): |
83 content = os.linesep.join(content.splitlines()[1:]) | 83 content = os.linesep.join(content.splitlines()[1:]) |
84 | 84 |
86 template = tempita.Template(content) | 86 template = tempita.Template(content) |
87 missing = missing_variables(template, variables) | 87 missing = missing_variables(template, variables) |
88 if missing: | 88 if missing: |
89 # TODO: add a switch for interactive or not | 89 # TODO: add a switch for interactive or not |
90 variables.update(read_variables(missing)) | 90 variables.update(read_variables(missing)) |
91 print >> fp, template.substitute(**variables) | 91 return template.substitute(**variables) |
92 | 92 |
93 def invocation(url, **variables): | 93 def invocation(url, **variables): |
94 """returns a string appropriate for TTW invocation""" | 94 """returns a string appropriate for TTW invocation""" |
95 variables_string = ' '.join(['%s=%s' % (i,j) for i,j in variables.items()]) | 95 variables_string = ' '.join(['%s=%s' % (i,j) for i,j in variables.items()]) |
96 return 'python <(curl %s) %s %s' % (location, url, variables_string) | 96 return 'python <(curl %s) %s %s' % (location, url, variables_string) |
159 # get the content | 159 # get the content |
160 if args: | 160 if args: |
161 for arg in args: | 161 for arg in args: |
162 f, headers = urllib.urlretrieve(arg) | 162 f, headers = urllib.urlretrieve(arg) |
163 content = file(f).read() | 163 content = file(f).read() |
164 substitute(content, variables=variables) | 164 print substitute(content, variables=variables) |
165 else: | 165 else: |
166 content = sys.stdin.read() | 166 content = sys.stdin.read() |
167 substitute(content, variables=variables) | 167 print substitute(content, variables=variables) |
168 | 168 |
169 if __name__ == '__main__': | 169 if __name__ == '__main__': |
170 main() | 170 main() |