Newer
Older
Handbook / calendar / teachingdates / app.py
import argparse
import copy
import pathlib
import sys

from teachingdates import PROG
import teachingdates.calendars as calendars
import teachingdates.config as configuration


def run():
    args = configuration.parse_command_line()
    if args.debug:
        print("{prog}: debug: args: {a}".format(prog=PROG, a=args))

    try:
        config = configuration.Configuration(args)
        if args.debug:
            print("{prog}: debug: period config: {c}".format(
                prog=PROG, c=config.get_period_config()))
            print("{prog}: debug: paper config: {c}".format(
                prog=PROG, c=config.get_paper_config()))
        cal = calendars.TeachingCalendar(
            config.year, config.period, config.paper,
            config.get_period_config(), config.get_paper_config())
        print("Period = {p}".format(p=args.period))
        print(cal.calendar())
        print(cal.lecture_dates())
    except configuration.LectureStyleError as e:
        print("{prog}: error: 'lecture' style was requested but "
            "{c} contains no papers for {t}.".format(
                prog=PROG, c=args.config, t=args.period))
    except configuration.PaperError as e:
        print("{prog}: error: no entry in {c} for paper {p} ({t}).".format(
            prog=PROG, c=args.config, p=args.paper, t=args.period))
    except configuration.PeriodError as e:
        print("{prog}: error: no entry in {c} for teaching "
            "period {p}.".format(
                prog=PROG, c=args.config_file, p=args.period))
    except KeyError as e:
        print("{prog}: error: teaching period {p} in {c} is missing "
            "required key {k}.".format(
                prog=PROG, p=args.period, c=args.config, k=e))