Mercurial > mozilla > hg > licenser
annotate licenser/main.py @ 2:b8d620fa1116
solidify refactored workflow"
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 10 May 2010 11:46:49 -0700 |
parents | cc5add25bf83 |
children | e700bd2ec289 |
rev | line source |
---|---|
0 | 1 #!/usr/bin/env python |
2 """ | |
3 adds licenses to python packages | |
4 """ | |
5 | |
6 import os | |
7 import sys | |
8 from optparse import OptionParser | |
9 from pkg_resources import iter_entry_points | |
10 | |
11 def license_list(debug=False): | |
12 licenses = {} | |
1
cc5add25bf83
abstract License to its own class and do the work there
Jeff Hammel <jhammel@mozilla.com>
parents:
0
diff
changeset
|
13 for entry_point in iter_entry_points('licenser.license'): |
0 | 14 try: |
15 license = entry_point.load() | |
1
cc5add25bf83
abstract License to its own class and do the work there
Jeff Hammel <jhammel@mozilla.com>
parents:
0
diff
changeset
|
16 except Exception, e: |
0 | 17 if debug: |
18 import pdb; pdb.set_trace() | |
19 else: | |
1
cc5add25bf83
abstract License to its own class and do the work there
Jeff Hammel <jhammel@mozilla.com>
parents:
0
diff
changeset
|
20 print >> sys.stderr, "Couldn't load license '%s' [%s]" % (entry_point.name, e) |
0 | 21 continue |
22 licenses[entry_point.name] = license | |
23 return licenses | |
24 | |
2
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
25 def print_licenses(self, licenses): |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
26 for i in sorted(licenses.keys()): |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
27 doc = getattr(licenses[i], '__doc__') |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
28 if doc: |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
29 print '%s: %s' % (i, doc) |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
30 else: |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
31 print i |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
32 |
0 | 33 |
34 def main(args=sys.argv[1:]): | |
35 usage = '%prog [options] directory' | |
36 parser = OptionParser(usage, description=__doc__) | |
1
cc5add25bf83
abstract License to its own class and do the work there
Jeff Hammel <jhammel@mozilla.com>
parents:
0
diff
changeset
|
37 parser.add_option('-d', '--debug', action='store_true', default=False, |
cc5add25bf83
abstract License to its own class and do the work there
Jeff Hammel <jhammel@mozilla.com>
parents:
0
diff
changeset
|
38 help="debug the application") |
0 | 39 parser.add_option('-l', '--license', |
40 help="license to use") | |
41 parser.add_option('--list', action='store_true', default=False, | |
42 help="list available licenses") | |
43 options, args = parser.parse_args(args) | |
44 | |
45 licenses = license_list() | |
46 | |
47 if options.list: # list the licenses | |
2
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
48 print_licenses(licenses) |
0 | 49 sys.exit(0) |
50 | |
51 if not options.license: | |
52 parser.error("Must specify --license") | |
2
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
53 if options.license not in licenses: |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
54 print_licenses(licenses) |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
55 |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
56 license = licenses[options.license]() |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
57 |
b8d620fa1116
solidify refactored workflow"
Jeff Hammel <jhammel@mozilla.com>
parents:
1
diff
changeset
|
58 |
0 | 59 |
60 for directory in args: | |
61 filelist = files(directory) | |
62 | |
63 if __name__ == '__main__': | |
64 main() |