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 |
