Mercurial > hg > MakeItSo
annotate makeitso/script2package.py @ 187:74f41d53b057
STUB: makeitso/python_package/{{package}}/{{main}}.py
| author | Jeff Hammel <k0scist@gmail.com> | 
|---|---|
| date | Fri, 11 Apr 2014 17:06:22 -0700 | 
| parents | 668b01d04457 | 
| children | 
| rev | line source | 
|---|---|
| 164 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 1 #!/usr/bin/env python | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 2 # -*- coding: utf-8 -*- | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 3 | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 4 """ | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 5 make a package from a .py file | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 6 """ | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 7 | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 8 ### STUB ### | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 9 # TODO: | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 10 # - thing to make a setup.py from a .py file | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 11 # - use makeitso templates -> directory structure | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 12 | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 13 import optparse | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 14 import os | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 15 import subprocess | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 16 import sys | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 17 | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 18 from .python import PythonModuleTemplate, PythonPackageTemplate | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 19 | 
| 176 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 20 ### name transformers.... -> ??? | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 21 | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 22 def scriptname2packagename(script): | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 23 return os.path.splitext(os.path.basename(script))[0] | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 24 | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 25 | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 26 | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 27 ### CLI parsing | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 28 | 
| 164 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 29 def add_options(parser): | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 30 """add options to the OptionParser instance""" | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 31 # TODO: replace with `configuration` package | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 32 | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 33 parser.add_option('-m', '--module', dest='py_module', | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 34 action='store_true', default=False, | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 35 help="create a single-module package with py_modules in setup.py") | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 36 parser.add_option('-n', '--name', dest='name', | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 37 help="Name of package; default taken from script name") | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 38 parser.add_option('-o', '--output', dest='output', | 
| 176 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 39 default=os.getcwd(), | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 40 help="where to output the resulting package [DEFAULT: '.']") | 
| 164 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 41 | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 42 def main(args=sys.argv[1:]): | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 43 | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 44 # parse command line options | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 45 usage = '%prog [options] script.py' | 
| 164 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 46 class PlainDescriptionFormatter(optparse.IndentedHelpFormatter): | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 47 """description formatter for console script entry point""" | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 48 def format_description(self, description): | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 49 if description: | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 50 return description.strip() + '\n' | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 51 else: | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 52 return '' | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 53 parser = optparse.OptionParser(usage=usage, description=__doc__, formatter=PlainDescriptionFormatter()) | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 54 add_options(parser) | 
| 164 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 55 options, args = parser.parse_args(args) | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 56 if len(args) != 1: | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 57 parser.error("Please specify a source script") | 
| 176 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 58 script = args[0] | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 59 | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 60 # Get package name from script | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 61 if not options.name: | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 62 options.name = scriptname2packagename(script) | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 63 | 
| 175 
5fa35ff86644
STUB: makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
174diff
changeset | 64 # require a directory (for now) | 
| 176 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 65 if os.path.exists(options.output): | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 66 if not os.path.isdir(options.output): | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 67 parser.error("'%s' is a file" % options.output) | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 68 options.output = os.path.join(options.output, options.name) | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 69 # XXX bad naming | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 70 else: | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 71 raise NotImplementedError("TODO") | 
| 175 
5fa35ff86644
STUB: makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
174diff
changeset | 72 | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 73 # configure template | 
| 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 74 template = PythonModuleTemplate if options.py_module else PythonPackageTemplate | 
| 176 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 75 template = template() | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 76 | 
| 176 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 77 # get some variables: | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 78 # - author | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 79 # - description | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 80 # - email | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 81 # - repo | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 82 # - url | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 83 variables = {} | 
| 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 84 | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 85 # interpolate template | 
| 176 
668b01d04457
STUB: makeitso/makeitso.py makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
175diff
changeset | 86 template.substitute() | 
| 175 
5fa35ff86644
STUB: makeitso/script2package.py
 Jeff Hammel <k0scist@gmail.com> parents: 
174diff
changeset | 87 import pdb; pdb.set_trace() | 
| 174 
aed8c4af5f26
STUB: makeitso/cli.py makeitso/script2package.py setup.py
 Jeff Hammel <k0scist@gmail.com> parents: 
164diff
changeset | 88 # TODO | 
| 164 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 89 | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 90 if __name__ == '__main__': | 
| 
6cd2894bb11c
stub: makeitso/script2package.py
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 91 main() | 
