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: 
108diff
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: 
108diff
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: 
102diff
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: 
95diff
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: 
102diff
changeset | 33 vars = [Variable('description'), | 
| 115 
7dbc3cdadffe
add a test for the python-package template
 Jeff Hammel <jhammel@mozilla.com> parents: 
114diff
changeset | 34 Variable('author', 'author of the package'), | 
| 
7dbc3cdadffe
add a test for the python-package template
 Jeff Hammel <jhammel@mozilla.com> parents: 
114diff
changeset | 35 Variable('email', "author's email"), | 
| 108 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 36 Variable('url'), | 
| 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 37 Variable('repo', 'project repository'), | 
| 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
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: 
108diff
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: 
108diff
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: 
108diff
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: 
108diff
changeset | 52 | 
| 108 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 53 def pre(self, variables, output): | 
| 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 54 """ | 
| 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 55 sanitize some variables | 
| 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 56 """ | 
| 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 57 | 
| 109 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 58 # get project from output directory | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 59 variables['project'] = os.path.basename(output) | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 60 | 
| 114 
b8d5d2041fe0
stub out project name -> package name
 Jeff Hammel <jhammel@mozilla.com> parents: 
111diff
changeset | 61 # get package name from project | 
| 
b8d5d2041fe0
stub out project name -> package name
 Jeff Hammel <jhammel@mozilla.com> parents: 
111diff
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: 
115diff
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: 
111diff
changeset | 64 variables['package'] = variables['project'].lower() | 
| 
b8d5d2041fe0
stub out project name -> package name
 Jeff Hammel <jhammel@mozilla.com> parents: 
111diff
changeset | 65 | 
| 108 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 66 # dependencies | 
| 109 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
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: 
108diff
changeset | 69 dependencies.update(dependency) | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 70 dependencies = list(dependencies) | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 71 variables['dependencies'] = dependencies | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 72 | 
| 108 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 73 # console_scripts | 
| 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
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: 
108diff
changeset | 77 if console_scripts: | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 78 s = 'setup(' # placeholder string | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 79 script_strings = ['[console_scripts]'] | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 80 for console_script in console_scripts: | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 81 template = ContentTemplate(console_script) | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 82 output = template.substitute(project=variables['project']) | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 83 script_strings.append(output) | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
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: 
108diff
changeset | 85 for i in script_strings]) | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 86 else: | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 87 variables['console_scripts'] = '' | 
| 
697568ba4a22
make the python package template a little fancier
 Jeff Hammel <jhammel@mozilla.com> parents: 
108diff
changeset | 88 | 
| 108 
32893f67f85d
stub out a better python package
 Jeff Hammel <jhammel@mozilla.com> parents: 
102diff
changeset | 89 | 
| 102 
ad5fd3eb6674
template fixes....not the best, but will do
 Jeff Hammel <jhammel@mozilla.com> parents: 
95diff
changeset | 90 class PythonPackageCLI(MakeItSoCLI): | 
| 
ad5fd3eb6674
template fixes....not the best, but will do
 Jeff Hammel <jhammel@mozilla.com> parents: 
95diff
changeset | 91 """ | 
| 
ad5fd3eb6674
template fixes....not the best, but will do
 Jeff Hammel <jhammel@mozilla.com> parents: 
95diff
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: 
95diff
changeset | 93 """ | 
| 95 
e74baa8e6df4
fix CLI interface a bit....write a test for it
 Jeff Hammel <jhammel@mozilla.com> parents: 
78diff
changeset | 94 | 
| 102 
ad5fd3eb6674
template fixes....not the best, but will do
 Jeff Hammel <jhammel@mozilla.com> parents: 
95diff
changeset | 95 def main(args=sys.argv[1:]): | 
| 
ad5fd3eb6674
template fixes....not the best, but will do
 Jeff Hammel <jhammel@mozilla.com> parents: 
95diff
changeset | 96 cli = PythonPackageCLI(PythonPackageTemplate) | 
| 
ad5fd3eb6674
template fixes....not the best, but will do
 Jeff Hammel <jhammel@mozilla.com> parents: 
95diff
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() | 
