Mercurial > getan > getan
annotate getan/main.py @ 464:2ab6fdde1010
Display licensing information with --version.
author | Magnus Schieder <mschieder@intevation.de> |
---|---|
date | Mon, 30 Apr 2018 14:13:05 +0200 |
parents | 2707676cfd03 |
children | 7fc3da3c100d |
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 + ")]" |
464
2ab6fdde1010
Display licensing information with --version.
Magnus Schieder <mschieder@intevation.de>
parents:
458
diff
changeset
|
31 version = "getan version %s, LICENSE GNU GPL v>=3" % 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', |
458
2707676cfd03
check source code style.
Magnus Schieder <mschieder@intevation.de>
parents:
457
diff
changeset
|
44 help='''write log information to FILE [default: |
2707676cfd03
check source code style.
Magnus Schieder <mschieder@intevation.de>
parents:
457
diff
changeset
|
45 %(default)s]''', default='getan.log') |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
46 |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
47 args = parser.parse_args() |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
48 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
49 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
|
50 global logger |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
51 |
458
2707676cfd03
check source code style.
Magnus Schieder <mschieder@intevation.de>
parents:
457
diff
changeset
|
52 if args.filename != DEFAULT_DATABASE: |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
53 database = args.filename |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
54 else: |
117
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
55 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
|
56 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
|
57 else: |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
58 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
|
59 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
|
60 os.mkdir(getan_dir) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
61 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
|
62 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
63 backend = Backend(database) |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
64 logging.info("Using database '%s'." % database) |
433
266634f3712a
Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents:
318
diff
changeset
|
65 |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
66 if args.initonly: |
433
266634f3712a
Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents:
318
diff
changeset
|
67 return |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
68 |
318
27fc5f43a69b
Move setting the ProjectList and EntryList instances into the controller
Björn Ricks <bjoern.ricks@intevation.de>
parents:
317
diff
changeset
|
69 controller = GetanController(backend) |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
70 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
71 try: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
72 controller.main() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
73 except KeyboardInterrupt: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
74 pass |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
75 finally: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
76 controller.shutdown() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
77 |
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 if __name__ == '__main__': |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
80 main() |