Mercurial > getan > getan
annotate getan/main.py @ 457:7fedbb73022e
clean up source code
* use defaults in argparse and adapt the source code to it.
* update CHANGES
author | Magnus Schieder <mschieder@intevation.de> |
---|---|
date | Fri, 02 Feb 2018 12:37:11 +0100 |
parents | 193a4a051660 |
children | 2707676cfd03 |
rev | line source |
---|---|
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
3 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
4 # (c) 2010 by Ingo Weinzierl <ingo.weinzierl@intevation.de> |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
5 # (c) 2011 by Björn Ricks <bjoern.ricks@intevation.de> |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
6 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
7 # A python worklog-alike to log what you have 'getan' (done). |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
8 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
9 # This is Free Software licensed under the terms of GPLv3 or later. |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
10 # For details see LICENSE coming with the source of 'getan'. |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
11 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
12 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
13 import logging |
117
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
14 import os |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
15 import os.path |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
16 import argparse |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
17 |
184
f8a19dbc8231
Add version switch to getan
Björn Ricks <bjoern.ricks@intevation.de>
parents:
183
diff
changeset
|
18 import getan |
317
dc7c1a894e21
Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
184
diff
changeset
|
19 import getan.config as config |
184
f8a19dbc8231
Add version switch to getan
Björn Ricks <bjoern.ricks@intevation.de>
parents:
183
diff
changeset
|
20 |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
21 from getan.backend import DEFAULT_DATABASE, Backend |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
22 from getan.controller import GetanController |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
23 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
24 logger = logging.getLogger() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
25 |
317
dc7c1a894e21
Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
184
diff
changeset
|
26 |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
27 def main(): |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
28 |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
29 usage = "%(prog)s [options] [databasefile (default: " + \ |
317
dc7c1a894e21
Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
184
diff
changeset
|
30 DEFAULT_DATABASE + ")]" |
184
f8a19dbc8231
Add version switch to getan
Björn Ricks <bjoern.ricks@intevation.de>
parents:
183
diff
changeset
|
31 version = "getan version %s" % getan.__version__ |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
32 |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
33 parser = argparse.ArgumentParser(prog='getan', usage=usage) |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
34 parser.add_argument('--version', action='version', version=version) |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
35 parser.add_argument(dest='filename', nargs='?', |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
36 help='[databasefile (default: %(default)s)]', |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
37 default=DEFAULT_DATABASE) |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
38 parser.add_argument('--init-only', action='store_true', dest='initonly', |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
39 help='create databasefile if necessary and exit') |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
40 parser.add_argument('-d', '--debug', action='store_const', dest='loglevel', |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
41 default=logging.INFO, const=logging.DEBUG, |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
42 help='set verbosity to debug') |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
43 parser.add_argument('-l', '--logfile', dest='logfile', metavar='FILE', |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
44 help='write log information to FILE [default: %(default)s]', |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
45 default='getan.log') |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
46 |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
47 |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
48 args = parser.parse_args() |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
49 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
50 config.initialize(args.loglevel, args.logfile) |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
51 global logger |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
52 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
53 if args.filename != DEFAULT_DATABASE : |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
54 database = args.filename |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
55 else: |
117
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
56 if os.path.isfile(DEFAULT_DATABASE): |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
57 database = os.path.abspath(DEFAULT_DATABASE) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
58 else: |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
59 getan_dir = os.path.expanduser(os.path.join("~", ".getan")) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
60 if not os.path.exists(getan_dir): |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
61 os.mkdir(getan_dir) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
62 database = os.path.join(getan_dir, DEFAULT_DATABASE) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
63 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
64 backend = Backend(database) |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
65 logging.info("Using database '%s'." % database) |
433
266634f3712a
Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents:
318
diff
changeset
|
66 |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
67 if args.initonly: |
433
266634f3712a
Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents:
318
diff
changeset
|
68 return |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
69 |
318
27fc5f43a69b
Move setting the ProjectList and EntryList instances into the controller
Björn Ricks <bjoern.ricks@intevation.de>
parents:
317
diff
changeset
|
70 controller = GetanController(backend) |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
71 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
72 try: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
73 controller.main() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
74 except KeyboardInterrupt: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
75 pass |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
76 finally: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
77 controller.shutdown() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
78 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
79 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
80 if __name__ == '__main__': |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
81 main() |