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()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)