Mercurial > hg > MakeItSo
annotate makeitso/python_package/{{package}}/{{main}}.py @ 205:0a991b8fe839
better check
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Fri, 21 Nov 2014 12:19:07 -0800 |
parents | be7e2e336d7a |
children | d9d7bfdb54db |
rev | line source |
---|---|
79 | 1 #!/usr/bin/env python |
159 | 2 # -*- coding: utf-8 -*- |
79 | 3 |
4 """ | |
5 {{description}} | |
6 """ | |
7 | |
187
74f41d53b057
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
161
diff
changeset
|
8 # imports |
188 | 9 import argparse |
159 | 10 import os |
11 import subprocess | |
79 | 12 import sys |
159 | 13 |
195
3cb66c9e5ce8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
188
diff
changeset
|
14 # module globals |
3cb66c9e5ce8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
188
diff
changeset
|
15 __all__ = ['main', 'Parser'] |
187
74f41d53b057
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
161
diff
changeset
|
16 here = os.path.dirname(os.path.realpath(__file__)) |
188 | 17 string = (str, unicode) |
187
74f41d53b057
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
161
diff
changeset
|
18 |
196
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
19 def ensure_dir(directory): |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
20 """ensure a directory exists""" |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
21 if os.path.exists(directory): |
205 | 22 if not os.path.isdir(directory): |
23 raise OSError("Not a directory: '{}'".format(directory)) | |
196
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
24 return directory |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
25 os.makedirs(directory) |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
26 return directory |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
27 |
188 | 28 |
29 class Parser(argparse.ArgumentParser): | |
30 """CLI option parser""" | |
198
be7e2e336d7a
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
197
diff
changeset
|
31 def __init__(self, **kwargs): |
be7e2e336d7a
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
197
diff
changeset
|
32 kwargs.setdefault('description', __doc__) |
be7e2e336d7a
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
197
diff
changeset
|
33 argparse.ArgumentParser.__init__(self, **kwargs) |
196
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
34 self.options = None |
188 | 35 |
196
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
36 def parse_args(self, *args, **kw): |
197 | 37 options = argparse.ArgumentParser.parse_args(self, *args, **kw) |
196
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
38 self.validate(options) |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
39 self.options = options |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
40 return options |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
41 |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
42 def validate(self, options): |
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
43 """validate options""" |
79 | 44 |
155
386a44a52139
moving to a thing with script template
Jeff Hammel <jhammel@mozilla.com>
parents:
149
diff
changeset
|
45 def main(args=sys.argv[1:]): |
188 | 46 """CLI""" |
130
d9201f911458
better description formatting
Jeff Hammel <jhammel@mozilla.com>
parents:
79
diff
changeset
|
47 |
139 | 48 # parse command line options |
197 | 49 parser = Parser() |
188 | 50 options = parser.parse_args(args) |
79 | 51 |
52 if __name__ == '__main__': | |
196
d25ca7099df8
STUB: makeitso/python_package/{{package}}/{{main}}.py
Jeff Hammel <k0scist@gmail.com>
parents:
195
diff
changeset
|
53 main() |