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

import generate_dates.calendars as calendars
import generate_dates.config as config


def run():
    args = config.parse_command_line()
    if args.debug:
        print("DEBUG: args: {0}".format(args))

    try:
        period_config, paper_config = config.parse_config(args.config, args)
        if args.debug:
            print("DEBUG: period config: {0}".format(period_config))
            print("DEBUG: paper config: {0}".format(paper_config))
        # priority: year on command line (defaults to current year),
        # year in config
        if period_config:
            args.year = (
                args.config["year"] if "year" in args.config.keys()
                else args.year)
        cal = calendars.TeachingCalendar(
            args.year, args.period, args.paper,
            period_config, paper_config)
        print("Period = {p}".format(p=args.period))
        print(cal.calendar())
        print(cal.lecture_dates())
    except config.LectureStyleError as e:
        print("ERROR: 'lecture' style was requested but {c} contains no "
            "papers for {t}.".format(c=args.config, t=args.period))
    except config.PaperError as e:
        print("ERROR: no entry in {c} for paper {p} ({t}).".format(
            c=args.config, p=args.paper, t=args.period))
    except config.PeriodError as e:
        print("ERROR: no entry in {c} for teaching period "
            "{p}.".format(c=args.config_file, p=args.period))
    except KeyError as e:
        print("ERROR: teaching period {p} in {c} is missing required "
            "key {k}.".format(p=args.period, c=args.config, k=e))