Mercurial > hg > MakeItSo
comparison makeitso/makeitso.py @ 39:a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Sat, 01 Jan 2011 23:00:59 -0800 |
parents | 9739212a63c3 |
children | 6b4c8f23192f |
comparison
equal
deleted
inserted
replaced
38:9739212a63c3 | 39:a2cdce0108e1 |
---|---|
243 variables.update(dict([(i, '') for i in missed])) | 243 variables.update(dict([(i, '') for i in missed])) |
244 | 244 |
245 return missing | 245 return missing |
246 | 246 |
247 def _substitute(self, **variables): | 247 def _substitute(self, **variables): |
248 # TODO: do this with recursion instead of os.walk so that | |
249 # per-directory control may be asserted | |
248 | 250 |
249 # make output directory if necessary | 251 # make output directory if necessary |
250 output = self.output | 252 output = self.output |
251 if output and not os.path.exists(output): | 253 if output and not os.path.exists(output): |
252 os.makedirs(output) | 254 os.makedirs(output) |
253 | 255 |
254 for dirname, dirnames, filenames in os.walk(self.name): | 256 for dirname, dirnames, filenames in os.walk(self.name): |
255 | 257 |
256 # interpolate directory names | 258 # interpolate directory names |
257 for d in dirnames: | 259 for d in dirnames: |
258 path = os.path.join(dirname, d) | 260 path = os.path.join(dirname, d) |
259 interpolated = ContentTemplate(path).substitute(**variables) | 261 interpolated = ContentTemplate(path).substitute(**variables) |
260 if os.path.exists(interpolated): | 262 target = os.path.join(self.output, interpolated.split(self.name, 1)[-1].strip(os.path.sep)) |
263 | |
264 if os.path.exists(target): | |
261 # ensure its a directory | 265 # ensure its a directory |
262 pass | 266 # TODO: check this first before interpolation is in progress |
267 assert os.path.isdir(target), "Can't substitute a directory on top of the file" | |
263 else: | 268 else: |
264 os.makedirs(interpolated) | 269 os.makedirs(target) |
270 | |
271 # interpolate files | |
272 for filename in filenames: | |
273 path = os.path.join(dirname, filename) | |
274 interpolated = ContentTemplate(path).substitute(**variables) | |
275 target = os.path.join(self.output, interpolated.split(self.name, 1)[-1].strip(os.path.sep)) | |
265 | 276 |
277 if os.path.exists(target): | |
278 # ensure its a directory | |
279 # TODO: check this first before interpolation is in progress | |
280 assert os.path.isfile(target), "Can't substitute a file on top of a directory" | |
281 template = URITemplate(path, output=target, interactive=False) | |
282 template.substitute(**variables) | |
283 | |
266 | 284 |
267 class PolyTemplate(ContentTemplate): | 285 class PolyTemplate(ContentTemplate): |
268 """ | 286 """ |
269 template for several files/directories | 287 template for several files/directories |
270 """ | 288 """ |