mschieder@482: #!/usr/bin/env python3 bjoern@114: # -*- coding: utf-8 -*- bjoern@114: # bjoern@114: # (c) 2010 by Ingo Weinzierl bjoern@114: # (c) 2011 by Björn Ricks bernhard@534: # (c) 2017, 2018, 2019, 2020 Intevation GmbH mschieder@488: # Authors: mschieder@488: # * Magnus Schieder bjoern@114: # bjoern@114: # A python worklog-alike to log what you have 'getan' (done). bjoern@114: # bjoern@114: # This is Free Software licensed under the terms of GPLv3 or later. bjoern@114: # For details see LICENSE coming with the source of 'getan'. bjoern@114: # bjoern@114: bjoern@114: import logging bjoern@117: import os bjoern@117: import os.path mschieder@456: import argparse mschieder@465: import textwrap bjoern@114: bjoern@184: import getan bjoern@317: import getan.config as config bjoern@184: bjoern@114: from getan.backend import DEFAULT_DATABASE, Backend bjoern@114: from getan.controller import GetanController bjoern@114: bjoern@114: logger = logging.getLogger() bjoern@114: bjoern@317: bjoern@114: def main(): bjoern@114: mschieder@456: usage = "%(prog)s [options] [databasefile (default: " + \ bjoern@317: DEFAULT_DATABASE + ")]" mschieder@465: version = ''' mschieder@466: getan version %s bernhard@534: (c) 2008-2020 by Intevation GmbH bernhard@520: Authors: Sascha L. Teichmann thomas@521: Thomas Arendsen Hein bernhard@520: Ingo Weinzierl bernhard@520: Björn Ricks bernhard@520: Bernhard Reiter bernhard@520: Magnus Schieder mschieder@456: bernhard@520: This is Free Software licensed under the terms of GNU GPL v>=3. mschieder@465: For details see LICENSE coming with the source of \'getan\'. mschieder@465: ''' % getan.__version__ mschieder@465: mschieder@465: parser = argparse.ArgumentParser(prog='getan', usage=usage, mschieder@526: description="You can find more information at https://pypi.org/project/getan/", mschieder@526: formatter_class=argparse.RawTextHelpFormatter) mschieder@465: parser.add_argument('--version', action='version', mschieder@465: version=textwrap.dedent(version)) mschieder@456: parser.add_argument(dest='filename', nargs='?', mschieder@551: help='databasefile (default: ~/.getan/' + DEFAULT_DATABASE + ')') mschieder@456: parser.add_argument('--init-only', action='store_true', dest='initonly', mschieder@456: help='create databasefile if necessary and exit') mschieder@457: parser.add_argument('-d', '--debug', action='store_const', dest='loglevel', mschieder@483: default=logging.NOTSET, const=logging.DEBUG, mschieder@483: help='Enable debung mode') mschieder@542: parser.add_argument('-l', '--logfile', mschieder@458: help='''write log information to FILE [default: mschieder@458: %(default)s]''', default='getan.log') mschieder@456: mschieder@456: args = parser.parse_args() mschieder@456: mschieder@457: config.initialize(args.loglevel, args.logfile) bjoern@114: global logger bjoern@114: mschieder@551: if args.filename: mschieder@457: database = args.filename bjoern@114: else: bjoern@117: if os.path.isfile(DEFAULT_DATABASE): bjoern@117: database = os.path.abspath(DEFAULT_DATABASE) bjoern@117: else: bjoern@117: getan_dir = os.path.expanduser(os.path.join("~", ".getan")) bjoern@117: if not os.path.exists(getan_dir): bjoern@117: os.mkdir(getan_dir) bjoern@117: database = os.path.join(getan_dir, DEFAULT_DATABASE) bjoern@117: mschieder@457: backend = Backend(database) mschieder@457: logging.info("Using database '%s'." % database) bernhard@433: mschieder@456: if args.initonly: bernhard@433: return bjoern@114: bjoern@318: controller = GetanController(backend) bjoern@114: bjoern@114: try: bjoern@114: controller.main() bjoern@114: except KeyboardInterrupt: bjoern@114: pass bjoern@114: finally: bjoern@114: controller.shutdown() bjoern@114: bjoern@114: bjoern@114: if __name__ == '__main__': bjoern@114: main()