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))