Source code for easy_time_tracker.cli

"""
easy_time_tracker CLI
"""
from argparse import ArgumentParser
from .easy_time_tracker import EasyTimeTracker
from .gui import ett_gui


[docs]def cli() -> None: # pragma: no cover """Function to run the command line :rtype: None :returns: None """ arg_parser = ArgumentParser(description='easy-time-tracker') subparsers = arg_parser.add_subparsers(title='commands', description='Valid commands: a single command is required', help='CLI Help', dest='a single command please see the -h option') subparsers.required = True # This is the sub parser to start the clock for a time record arg_parser_start = subparsers.add_parser('start', help='Start the clock') arg_parser_start.set_defaults(which_sub='start') arg_parser_start.add_argument('-d', '--description', help='Description of the time') arg_parser_start.add_argument('-p', '--people', nargs='+', default=[], help='List of people') arg_parser_start.add_argument('--project', required=False, help='Project') # This is the sub parser to stop the clock for a time record arg_parser_stop = subparsers.add_parser('stop', help='Stop the clock') arg_parser_stop.set_defaults(which_sub='stop') arg_parser_stop.add_argument('-c', '--comments', required=False, default='no comments added', help='Any comments you want to add') # This is the sub parser to output data to files arg_parser_output = subparsers.add_parser('output', help='Output completed records') arg_parser_output.set_defaults(which_sub='output') arg_parser_output.add_argument('-p', '--path', help='Path to store file') arg_parser_gui = subparsers.add_parser('gui', help='Start the GUI') arg_parser_gui.set_defaults(which_sub='gui') args = arg_parser.parse_args() try: if args.which_sub != 'gui': ett_obj = EasyTimeTracker() if args.which_sub == 'start': ett_obj.start_time_record(args.description, args.people, args.project) elif args.which_sub == 'stop': ett_obj.end_time_record(args.comments) elif args.which_sub == 'output': ett_obj.write_completed_records_to_excel(args.path) elif args.which_sub == 'gui': ett_gui() except AttributeError as e: # pylint: disable=invalid-name print(f'\n !!! {e} !!! \n') arg_parser.print_help() except FileNotFoundError as e: # pylint: disable=invalid-name print(f'\n !!! {e} !!! \n') arg_parser.print_help() except FileExistsError as e: # pylint: disable=invalid-name print(f'\n !!! {e} !!! \n') arg_parser.print_help() except Exception as e: # pylint: disable=broad-except,invalid-name print(f'\n !!! {e} !!! \n') arg_parser.print_help()