Mercurial > hg > MakeItSo
comparison makeitso/python.py @ 159:cfd4f1e91090
wip
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Tue, 30 Jul 2013 15:20:38 -0700 |
| parents | 386a44a52139 |
| children | 9033a5f11b92 |
comparison
equal
deleted
inserted
replaced
| 158:ff1f41a18da9 | 159:cfd4f1e91090 |
|---|---|
| 25 from template import Variable | 25 from template import Variable |
| 26 | 26 |
| 27 class PythonTemplate(MakeItSoTemplate): | 27 class PythonTemplate(MakeItSoTemplate): |
| 28 """abstract base class for python-type templates""" | 28 """abstract base class for python-type templates""" |
| 29 | 29 |
| 30 def path2name(self, path): | |
| 31 return os.path.basename(path.rstrip(os.path.sep)) | |
| 30 | 32 |
| 31 class PythonScriptTemplate(PythonTemplate): | 33 class PythonScriptTemplate(PythonTemplate): |
| 32 """template for a single python script""" | 34 """template for a single python script""" |
| 33 templates = [os.path.join('python_package', '{{package}}', 'main.py')] | 35 templates = [('python_package', '{{package}}', '{{main}}.py')] |
| 34 | 36 |
| 35 | 37 |
| 36 class PythonModuleTemplate(PythonTemplate): | 38 class PythonModuleTemplate(PythonTemplate): |
| 37 """single module python package""" | 39 """single module python package""" |
| 38 # TODO: this should use the same files as PythonPackageTemplate | 40 # TODO: this should use the same files as PythonPackageTemplate |
| 39 templates = ['python_module'] | 41 templates = ['python_module', |
| 42 ('python_package', '{{package}}', '{{main}}.py')] | |
| 43 vars = [Variable('description')] | |
| 44 look = False | |
| 40 | 45 |
| 46 def pre(self, variables, output): | |
| 47 variables['module'] = variables['main'] = path2name(output) | |
| 41 | 48 |
| 42 class PythonPackageTemplate(PythonTemplate): | 49 class PythonPackageTemplate(PythonTemplate): |
| 43 """ | 50 """ |
| 44 python package template | 51 python package template |
| 45 """ | 52 """ |
| 46 name = 'python-package' | 53 name = 'python-package' |
| 47 templates = ['python_package'] | 54 templates = ['python_package'] |
| 48 vars = [Variable('description'), | 55 vars = [Variable('description'), |
| 49 Variable('author', 'author of the package'), | 56 Variable('author', 'author of the package'), |
| 50 Variable('email', "author's email"), | 57 Variable('email', "author's email"), |
| 51 Variable('url'), | 58 Variable('url', 'project url'), |
| 52 Variable('repo', 'project repository'), | 59 Variable('repo', 'project repository'), |
| 53 ] | 60 ] |
| 54 look = False | 61 look = False |
| 55 | 62 |
| 56 # things that go in setup.py | 63 # things that go in setup.py |
| 57 dependencies = {'web.py': ['webob'], | 64 dependencies = {'web.py': ['webob'], |
| 58 'template.py': ['MakeItSo']} | 65 'template.py': ['MakeItSo']} |
| 59 console_scripts = {'main.py': '{{project}} = {{project}}.main:main', | 66 console_scripts = {'main.py': '{{project}} = {{project}}.{{main}}:main', |
| 60 'template.py': '{{project}}-template = {{project}}.template:main' | 67 'template.py': '{{project}}-template = {{project}}.template:main' |
| 61 } | 68 } |
| 62 | 69 |
| 63 def __init__(self, **kw): | 70 def __init__(self, **kw): |
| 64 MakeItSoTemplate.__init__(self, **kw) | 71 MakeItSoTemplate.__init__(self, **kw) |
| 69 """ | 76 """ |
| 70 sanitize some variables | 77 sanitize some variables |
| 71 """ | 78 """ |
| 72 | 79 |
| 73 # get project from output directory | 80 # get project from output directory |
| 74 variables['project'] = os.path.basename(output) | 81 variables['project'] = self.path2name(output) |
| 75 | 82 |
| 76 # get package name from project | 83 # get package name from project |
| 77 # XXX could have looser restrictions with transforms | 84 # XXX could have looser restrictions with transforms |
| 78 assert variables['project'].isalnum(), 'Project name must be just letters, you gave %s' % variables['project'] | 85 assert variables['project'].isalnum(), 'Project name must be just letters, you gave %s' % variables['project'] |
| 79 variables['package'] = variables['project'].lower() | 86 variables['package'] = variables['project'].lower() |
| 87 | |
| 88 # name of CLI main file | |
| 89 variables.setdefault('main', 'main') | |
| 80 | 90 |
| 81 # dependencies | 91 # dependencies |
| 82 dependencies = set([]) | 92 dependencies = set([]) |
| 83 for template, dependency in self.dependencies.items(): | 93 for template, dependency in self.dependencies.items(): |
| 84 dependencies.update(dependency) | 94 dependencies.update(dependency) |
