Mercurial > hg > MakeItSo
annotate makeitso/python.py @ 118:5964dabba04a
correct syntax error
| author | Jeff Hammel <jhammel@mozilla.com> | 
|---|---|
| date | Fri, 21 Jan 2011 09:34:23 -0800 | 
| parents | 908e9a653668 | 
| children | b2152efec89a | 
| rev | line source | 
|---|---|
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
1 #!/usr/bin/env python | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
2 | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
3 """ | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
4 python package templates for makeitso | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
5 | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
6 Several components are included. | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
7 [TODO] You may use these subtemplates in any combination. | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
8 | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
9 * README.txt : a README in restructured text | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
10 * examples : examples for your package | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
11 * setup.py : setup utility for the full package | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
12 * ./main.py : CLI handler for your webapp | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
13 * ./model.py : model of a persisted object | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
14 * ./template.py : a MakeItSo template for project creation | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
15 * ./tests : doctest suite for the package | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
16 * ./web.py : a webob web handler | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
17 """ | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
18 | 
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
19 import os | 
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
20 import sys | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
21 from cli import MakeItSoCLI | 
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
22 from makeitso import ContentTemplate | 
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
23 from optparse import OptionParser | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
24 from template import MakeItSoTemplate | 
| 
108
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
25 from template import Variable | 
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
26 | 
| 
102
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
27 class PythonPackageTemplate(MakeItSoTemplate): | 
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
28 """ | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
29 python package template | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
30 """ | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
31 name = 'python-package' | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
32 templates = ['python_package'] | 
| 
108
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
33 vars = [Variable('description'), | 
| 
115
 
7dbc3cdadffe
add a test for the python-package template
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
114 
diff
changeset
 | 
34 Variable('author', 'author of the package'), | 
| 
 
7dbc3cdadffe
add a test for the python-package template
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
114 
diff
changeset
 | 
35 Variable('email', "author's email"), | 
| 
108
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
36 Variable('url'), | 
| 
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
37 Variable('repo', 'project repository'), | 
| 
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
38 ] | 
| 111 | 39 look = False | 
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
40 | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
41 # things that go in setup.py | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
42 dependencies = {'web.py': ['webob'], | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
43 'template.py': ['MakeItSo']} | 
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
44 console_scripts = {'main.py': '{{project}} = {{project}}.main:main', | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
45 'template.py': '{{project}}-template = {{project}}.template:main' | 
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
46 } | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
47 | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
48 def __init__(self, **kw): | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
49 MakeItSoTemplate.__init__(self, **kw) | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
50 | 
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
51 # TODO: get the templates you actually care about [maybe from the CLI?] | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
52 | 
| 
108
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
53 def pre(self, variables, output): | 
| 
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
54 """ | 
| 
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
55 sanitize some variables | 
| 
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
56 """ | 
| 
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
57 | 
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
58 # get project from output directory | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
59 variables['project'] = os.path.basename(output) | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
60 | 
| 
114
 
b8d5d2041fe0
stub out project name -> package name
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
111 
diff
changeset
 | 
61 # get package name from project | 
| 
 
b8d5d2041fe0
stub out project name -> package name
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
111 
diff
changeset
 | 
62 # XXX could have looser restrictions with transforms | 
| 
116
 
908e9a653668
fix a syntax error in the python template thanks to some friendly tests
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
115 
diff
changeset
 | 
63 assert variables['project'].isalnum(), 'Project name must be just letters, you gave %s' % variables['project'] | 
| 
114
 
b8d5d2041fe0
stub out project name -> package name
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
111 
diff
changeset
 | 
64 variables['package'] = variables['project'].lower() | 
| 
 
b8d5d2041fe0
stub out project name -> package name
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
111 
diff
changeset
 | 
65 | 
| 
108
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
66 # dependencies | 
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
67 dependencies = set([]) | 
| 111 | 68 for template, dependency in self.dependencies.items(): | 
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
69 dependencies.update(dependency) | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
70 dependencies = list(dependencies) | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
71 variables['dependencies'] = dependencies | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
72 | 
| 
108
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
73 # console_scripts | 
| 
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
74 console_scripts = [] | 
| 111 | 75 for template, console_script in self.console_scripts.items(): | 
| 76 console_scripts.append(console_script) | |
| 
109
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
77 if console_scripts: | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
78 s = 'setup(' # placeholder string | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
79 script_strings = ['[console_scripts]'] | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
80 for console_script in console_scripts: | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
81 template = ContentTemplate(console_script) | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
82 output = template.substitute(project=variables['project']) | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
83 script_strings.append(output) | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
84 variables['console_scripts'] = '\n'.join([' ' * len(s) + i | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
85 for i in script_strings]) | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
86 else: | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
87 variables['console_scripts'] = '' | 
| 
 
697568ba4a22
make the python package template a little fancier
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
108 
diff
changeset
 | 
88 | 
| 
108
 
32893f67f85d
stub out a better python package
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
102 
diff
changeset
 | 
89 | 
| 
102
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
90 class PythonPackageCLI(MakeItSoCLI): | 
| 
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
91 """ | 
| 
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
92 CLI front end for the python package template | 
| 
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
93 """ | 
| 
95
 
e74baa8e6df4
fix CLI interface a bit....write a test for it
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
78 
diff
changeset
 | 
94 | 
| 
102
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
95 def main(args=sys.argv[1:]): | 
| 
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
96 cli = PythonPackageCLI(PythonPackageTemplate) | 
| 
 
ad5fd3eb6674
template fixes....not the best, but will do
 
Jeff Hammel <jhammel@mozilla.com> 
parents: 
95 
diff
changeset
 | 
97 cli(*args) | 
| 
78
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
98 | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
99 if __name__ == '__main__': | 
| 
 
d4184945f8a8
stub out python package creation
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
100 main() | 
