Mercurial > hg > MakeItSo
comparison makeitso/makeitso.py @ 107:2142ad247eb6
we can has entry points
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 14 Jan 2011 07:29:23 -0800 |
parents | 1295df1700a4 |
children | 32893f67f85d |
comparison
equal
deleted
inserted
replaced
106:1295df1700a4 | 107:2142ad247eb6 |
---|---|
323 | 323 |
324 class PolyTemplate(ContentTemplate): | 324 class PolyTemplate(ContentTemplate): |
325 """template for several files/directories""" | 325 """template for several files/directories""" |
326 | 326 |
327 def __init__(self, templates, interactive=True, variables=None): | 327 def __init__(self, templates, interactive=True, variables=None): |
328 | |
329 self.interactive = interactive | 328 self.interactive = interactive |
330 self.templates = [] | 329 self.templates = [] |
330 entry_points = get_entry_points() | |
331 for template in templates: | 331 for template in templates: |
332 if isinstance(template, basestring): | 332 if isinstance(template, basestring): |
333 # TODO: check if the template is a [e.g] PasteScript.template entry point | 333 # TODO: check if the template is a [e.g] PasteScript.template entry point |
334 if os.path.isdir(template): | 334 if os.path.isdir(template): |
335 self.templates.append(DirectoryTemplate(template, interactive=self.interactive, variables=variables)) | 335 self.templates.append(DirectoryTemplate(template, interactive=self.interactive, variables=variables)) |
336 elif not os.path.exists(template) and template in entry_points: | |
337 self.templates.append(entry_points[template](interactive=interactive, variables=variables)) | |
336 else: | 338 else: |
337 self.templates.append(URITemplate(template, interactive=self.interactive, variables=variables)) | 339 self.templates.append(URITemplate(template, interactive=self.interactive, variables=variables)) |
338 else: | 340 else: |
339 # assume the template is an object that conforms to the API | 341 # assume the template is an object that conforms to the API |
340 self.templates.append(template) | 342 self.templates.append(template) |
510 | 512 |
511 | 513 |
512 # get templates from pkg_resources | 514 # get templates from pkg_resources |
513 # (MakeItSo! and [TODO] pastescript templates) | 515 # (MakeItSo! and [TODO] pastescript templates) |
514 # this should go last to ensure the module is wholly loaded | 516 # this should go last to ensure the module is wholly loaded |
515 def get_entry_points(name): | 517 def get_entry_points(): |
518 retval = {} | |
516 try: | 519 try: |
517 from pkg_resources import iter_entry_points | 520 from pkg_resources import iter_entry_points |
518 for i in iter_entry_points('makeitso.templates'): | 521 for i in iter_entry_points('makeitso.templates'): |
519 pass # :( | 522 try: |
523 retval[i.name] = i.load() | |
524 except: | |
525 continue | |
520 | 526 |
521 except ImportError: | 527 except ImportError: |
522 return None | 528 return retval |
529 return retval |