annotate getan/main.py @ 552:a59e318c3f72

Improve usage message for --debug
author Bernhard Reiter <bernhard@intevation.de>
date Fri, 14 Feb 2020 14:35:28 +0100
parents d44ee9cd7261
children
rev   line source
482
999a438474f2 Changed Hashbangs to python3.
Magnus Schieder <mschieder@intevation.de>
parents: 466
diff changeset
1 #!/usr/bin/env python3
114
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>
534
5d4006e3210c increment displayed copyright year
Bernhard Reiter <bernhard@intevation.de>
parents: 526
diff changeset
6 # (c) 2017, 2018, 2019, 2020 Intevation GmbH
488
463894654d77 Prepares for release 3.0
Magnus Schieder <mschieder@intevation.de>
parents: 483
diff changeset
7 # Authors:
463894654d77 Prepares for release 3.0
Magnus Schieder <mschieder@intevation.de>
parents: 483
diff changeset
8 # * Magnus Schieder <magnus.schieder@intevation.de>
114
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
9 #
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
10 # 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
11 #
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
12 # 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
13 # 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
14 #
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
15
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
16 import logging
117
c5c877d6c1e3 Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents: 114
diff changeset
17 import os
c5c877d6c1e3 Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents: 114
diff changeset
18 import os.path
456
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
19 import argparse
465
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
20 import textwrap
114
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
21
184
f8a19dbc8231 Add version switch to getan
Björn Ricks <bjoern.ricks@intevation.de>
parents: 183
diff changeset
22 import getan
317
dc7c1a894e21 Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 184
diff changeset
23 import getan.config as config
184
f8a19dbc8231 Add version switch to getan
Björn Ricks <bjoern.ricks@intevation.de>
parents: 183
diff changeset
24
114
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
25 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
26 from getan.controller import GetanController
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
27
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
28 logger = logging.getLogger()
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
29
317
dc7c1a894e21 Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 184
diff changeset
30
114
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
31 def main():
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
32
456
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
33 usage = "%(prog)s [options] [databasefile (default: " + \
317
dc7c1a894e21 Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents: 184
diff changeset
34 DEFAULT_DATABASE + ")]"
465
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
35 version = '''
466
9dab95965ac6 Authors adds in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 465
diff changeset
36 getan version %s
534
5d4006e3210c increment displayed copyright year
Bernhard Reiter <bernhard@intevation.de>
parents: 526
diff changeset
37 (c) 2008-2020 by Intevation GmbH
520
f05079aea604 Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents: 490
diff changeset
38 Authors: Sascha L. Teichmann <teichmann@intevation.de>
521
f8b05636cd43 Sort by time, earliest authors first. (correction for f05079aea604)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 520
diff changeset
39 Thomas Arendsen Hein <thomas@intevation.de>
520
f05079aea604 Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents: 490
diff changeset
40 Ingo Weinzierl <ingo.weinzierl@intevation.de>
f05079aea604 Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents: 490
diff changeset
41 Björn Ricks <bjoern.ricks@intevation.de>
f05079aea604 Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents: 490
diff changeset
42 Bernhard Reiter <bernhard.reiter@intevation.de>
f05079aea604 Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents: 490
diff changeset
43 Magnus Schieder <magnus.schieder@intevation.de>
456
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
44
520
f05079aea604 Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents: 490
diff changeset
45 This is Free Software licensed under the terms of GNU GPL v>=3.
465
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
46 For details see LICENSE coming with the source of \'getan\'.
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
47 ''' % getan.__version__
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
48
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
49 parser = argparse.ArgumentParser(prog='getan', usage=usage,
526
31282f97b807 Reworked the --help function
Magnus Schieder <mschieder@intevation.de>
parents: 521
diff changeset
50 description="You can find more information at https://pypi.org/project/getan/",
31282f97b807 Reworked the --help function
Magnus Schieder <mschieder@intevation.de>
parents: 521
diff changeset
51 formatter_class=argparse.RawTextHelpFormatter)
465
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
52 parser.add_argument('--version', action='version',
7fc3da3c100d More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents: 464
diff changeset
53 version=textwrap.dedent(version))
456
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
54 parser.add_argument(dest='filename', nargs='?',
551
d44ee9cd7261 Overworked standard database transfer parameter
Magnus Schieder <mschieder@intevation.de>
parents: 542
diff changeset
55 help='databasefile (default: ~/.getan/' + DEFAULT_DATABASE + ')')
456
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
56 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
57 help='create databasefile if necessary and exit')
457
7fedbb73022e clean up source code
Magnus Schieder <mschieder@intevation.de>
parents: 456
diff changeset
58 parser.add_argument('-d', '--debug', action='store_const', dest='loglevel',
483
d47e32e6b7e7 Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents: 482
diff changeset
59 default=logging.NOTSET, const=logging.DEBUG,
552
a59e318c3f72 Improve usage message for --debug
Bernhard Reiter <bernhard@intevation.de>
parents: 551
diff changeset
60 help='set log level to DEBUG')
542
525ac205dca2 improve usage message & simply code
Magnus Schieder <mschieder@intevation.de>
parents: 534
diff changeset
61 parser.add_argument('-l', '--logfile',
458
2707676cfd03 check source code style.
Magnus Schieder <mschieder@intevation.de>
parents: 457
diff changeset
62 help='''write log information to FILE [default:
2707676cfd03 check source code style.
Magnus Schieder <mschieder@intevation.de>
parents: 457
diff changeset
63 %(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
64
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
65 args = parser.parse_args()
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
66
457
7fedbb73022e clean up source code
Magnus Schieder <mschieder@intevation.de>
parents: 456
diff changeset
67 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
68 global logger
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
69
551
d44ee9cd7261 Overworked standard database transfer parameter
Magnus Schieder <mschieder@intevation.de>
parents: 542
diff changeset
70 if args.filename:
457
7fedbb73022e clean up source code
Magnus Schieder <mschieder@intevation.de>
parents: 456
diff changeset
71 database = args.filename
114
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
72 else:
117
c5c877d6c1e3 Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents: 114
diff changeset
73 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
74 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
75 else:
c5c877d6c1e3 Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents: 114
diff changeset
76 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
77 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
78 os.mkdir(getan_dir)
c5c877d6c1e3 Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents: 114
diff changeset
79 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
80
457
7fedbb73022e clean up source code
Magnus Schieder <mschieder@intevation.de>
parents: 456
diff changeset
81 backend = Backend(database)
7fedbb73022e clean up source code
Magnus Schieder <mschieder@intevation.de>
parents: 456
diff changeset
82 logging.info("Using database '%s'." % database)
433
266634f3712a Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents: 318
diff changeset
83
456
193a4a051660 Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents: 433
diff changeset
84 if args.initonly:
433
266634f3712a Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents: 318
diff changeset
85 return
114
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
86
318
27fc5f43a69b Move setting the ProjectList and EntryList instances into the controller
Björn Ricks <bjoern.ricks@intevation.de>
parents: 317
diff changeset
87 controller = GetanController(backend)
114
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
88
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
89 try:
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
90 controller.main()
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
91 except KeyboardInterrupt:
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
92 pass
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
93 finally:
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
94 controller.shutdown()
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
95
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
96
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
97 if __name__ == '__main__':
6df408534f3f Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
98 main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)