import argparse
import copy
import pathlib
import sys
from generate_dates import TeachingCalendar, config, templates
from generate_dates.config import (
LectureStyleError, PaperError, PeriodError,
parse_command_line, parse_config)
def run():
args = parse_command_line()
if args.debug:
print("DEBUG: args: {0}".format(args))
try:
period_config, paper_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 = TeachingCalendar.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 LectureStyleError as e:
print("ERROR: 'lecture' style was requested but {c} contains no "
"papers for {t}.".format(c=args.config, t=args.period))
except PaperError as e:
print("ERROR: no entry in {c} for paper {p} ({t}).".format(
c=args.config, p=args.paper, t=args.period))
except 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))