comparison makeitso/python.py @ 109:697568ba4a22

make the python package template a little fancier
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 14 Jan 2011 17:55:08 -0800
parents 32893f67f85d
children bad70fb08b15
comparison
equal deleted inserted replaced
108:32893f67f85d 109:697568ba4a22
14 * ./template.py : a MakeItSo template for project creation 14 * ./template.py : a MakeItSo template for project creation
15 * ./tests : doctest suite for the package 15 * ./tests : doctest suite for the package
16 * ./web.py : a webob web handler 16 * ./web.py : a webob web handler
17 """ 17 """
18 18
19 import os
19 import sys 20 import sys
20 from cli import MakeItSoCLI 21 from cli import MakeItSoCLI
22 from makeitso import ContentTemplate
21 from optparse import OptionParser 23 from optparse import OptionParser
22 from template import MakeItSoTemplate 24 from template import MakeItSoTemplate
23 from template import Variable 25 from template import Variable
24 26
25 class PythonPackageTemplate(MakeItSoTemplate): 27 class PythonPackageTemplate(MakeItSoTemplate):
35 look = True 37 look = True
36 38
37 # things that go in setup.py 39 # things that go in setup.py
38 dependencies = {'web.py': ['webob'], 40 dependencies = {'web.py': ['webob'],
39 'template.py': ['MakeItSo']} 41 'template.py': ['MakeItSo']}
40 console_scripts = {'main.py': '{{project}}.main:main', 42 console_scripts = {'main.py': '{{project}} = {{project}}.main:main',
41 'template.py': '{{project}}.template:main' 43 'template.py': '{{project}}-template = {{project}}.template:main'
42 } 44 }
43 45
44 def __init__(self, **kw): 46 def __init__(self, **kw):
45 MakeItSoTemplate.__init__(self, **kw) 47 MakeItSoTemplate.__init__(self, **kw)
48
49 # TODO: get the templates you actually care about [maybe from the CLI?]
46 50
47 def pre(self, variables, output): 51 def pre(self, variables, output):
48 """ 52 """
49 sanitize some variables 53 sanitize some variables
50 """ 54 """
51 55
56 # get project from output directory
57 variables['project'] = os.path.basename(output)
58
52 # dependencies 59 # dependencies
53 dependencies = [] 60 dependencies = set([])
54 61 for template, dependency in self.dependencies:
62 dependencies.update(dependency)
63 dependencies = list(dependencies)
64 variables['dependencies'] = dependencies
65
55 # console_scripts 66 # console_scripts
56 console_scripts = [] 67 console_scripts = []
68 for template, console_script in self.console_scripts:
69 console_scripts.add(console_script)
70 if console_scripts:
71 s = 'setup(' # placeholder string
72 script_strings = ['[console_scripts]']
73 for console_script in console_scripts:
74 template = ContentTemplate(console_script)
75 output = template.substitute(project=variables['project'])
76 script_strings.append(output)
77 variables['console_scripts'] = '\n'.join([' ' * len(s) + i
78 for i in script_strings])
79 else:
80 variables['console_scripts'] = ''
81
57 82
58 class PythonPackageCLI(MakeItSoCLI): 83 class PythonPackageCLI(MakeItSoCLI):
59 """ 84 """
60 CLI front end for the python package template 85 CLI front end for the python package template
61 """ 86 """