Mercurial > hg > MakeItSo
comparison makeitso/makeitso.py @ 44:6e08cca7d656
do API variable reading and stubbing a bit for control flow
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 04 Jan 2011 18:07:18 -0800 |
parents | 73dac34d2692 |
children | 2765a700982e |
comparison
equal
deleted
inserted
replaced
43:554f916cef13 | 44:6e08cca7d656 |
---|---|
87 return uri.rsplit('/', 1)[1] | 87 return uri.rsplit('/', 1)[1] |
88 else: | 88 else: |
89 return os.path.basename(uri) | 89 return os.path.basename(uri) |
90 | 90 |
91 def include(uri): | 91 def include(uri): |
92 f, headers = urllib.urlretrieve(uri) | 92 f, headers = urllib.urlretrieve(uri) # XXX -> urllib2 for timeout |
93 return file(f).read() | 93 return file(f).read() |
94 | 94 |
95 ### things that deal with variables | 95 ### things that deal with variables |
96 | 96 |
97 class MissingVariablesException(Exception): | 97 class MissingVariablesException(Exception): |
144 except NameError, e: | 144 except NameError, e: |
145 missed = get_missing(e) | 145 missed = get_missing(e) |
146 missing.add(missed) | 146 missing.add(missed) |
147 vars[missed] = '' | 147 vars[missed] = '' |
148 return missing | 148 return missing |
149 | 149 |
150 def variables(self): | 150 def get_variables(self, **variables): |
151 """return the variables needed for a template""" | |
152 return self.missing() | |
153 | |
154 def substitute(self, **variables): | |
155 """interactive (for now) substitution""" | |
156 vars = self.defaults.copy() | 151 vars = self.defaults.copy() |
157 vars.update(variables) | 152 vars.update(variables) |
153 return vars | |
154 | |
155 def check_missing(self, vars): | |
156 """ | |
157 check for missing variables and, if applicable, | |
158 update them from the command line | |
159 """ | |
158 missing = self.missing(**vars) | 160 missing = self.missing(**vars) |
159 if missing: | 161 if missing: |
160 if self.interactive: | 162 if self.interactive: |
161 vars.update(self.read_variables(missing)) | 163 vars.update(self.read_variables(missing)) |
162 else: | 164 else: |
163 raise MissingVariablesException(missing) | 165 raise MissingVariablesException(missing) |
166 | |
167 | |
168 def variables(self): | |
169 """return the variables needed for a template""" | |
170 return self.missing() | |
171 | |
172 def substitute(self, **variables): | |
173 """interactive (for now) substitution""" | |
174 vars = self.get_variables() | |
175 self.check_missing(vars) | |
164 return self._substitute(**vars) | 176 return self._substitute(**vars) |
165 | 177 |
166 def _substitute(self, **variables): | 178 def _substitute(self, **variables): |
167 return tempita.Template.substitute(self, **variables) | 179 return tempita.Template.substitute(self, **variables) |
168 | 180 |
292 self.interactive = True | 304 self.interactive = True |
293 self._templates = templates[:] | 305 self._templates = templates[:] |
294 self.templates = [] | 306 self.templates = [] |
295 self.output = output | 307 self.output = output |
296 for template in templates: | 308 for template in templates: |
309 # TODO: check if the template is a [e.g] PasteScript.template entry point | |
297 if os.path.isdir(template): | 310 if os.path.isdir(template): |
298 self.templates.append(DirectoryTemplate(template, interactive=self.interactive, output=output, **variables)) | 311 self.templates.append(DirectoryTemplate(template, interactive=self.interactive, output=output, **variables)) |
299 else: | 312 else: |
300 self.templates.append(URITemplate(template, interactive=self.interactive, output=output, **variables)) | 313 self.templates.append(URITemplate(template, interactive=self.interactive, output=output, **variables)) |
301 | 314 |