From 1c480360dfe9063a75d8b3e88884d3b10b11e55d Mon Sep 17 00:00:00 2001 From: "Fredrick W. Warren" Date: Sun, 29 Dec 2024 09:56:29 -0700 Subject: [PATCH] refactor and add cli options - refactor the creation of MONTHS into a definition - refactor the creation of event_list from EVENTS into a definition - both of these are initalized in main() - added option --debug/-d to enable debug printing, default = off - added option --year/-y for year, default = current year --- main.py | 53 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/main.py b/main.py index c3e761d..f9dd00f 100755 --- a/main.py +++ b/main.py @@ -5,23 +5,14 @@ CHURCH CALENDAR CSV GENERATOR import calendar from dataclasses import dataclass -from datetime import datetime +from datetime import date, datetime from pprint import pprint import sys import click from dataclass_csv import DataclassWriter -from events import EVENT_LIST, YEAR, DEBUG +from events import EVENT_LIST -def debug_print(data, condition=True, end="\n"): - """Conditionally print data using pprint. - - Args: - data: The data to be printed. - condition: A boolean value. If True, the data will be printed. - """ - if condition: - print(data, end=end) """ @@ -39,14 +30,30 @@ due to how months work EVENT_LIST has weeks as 1-6 while MONTHS has weeks as 0-5, offsetting will be necessary """ -MONTHS: dict[int, list[list[int]]] -MONTHS = dict(enumerate([calendar.monthcalendar(YEAR, month) for month in - range(1, 13)], start=1)) -""" convert EVENT_LIST into monthly_events """ -monthly_events = [[] for _ in range(7)] -for event in EVENT_LIST: - monthly_events[event[0]].append(event[1:]) +def initalize_events(event_list): + """ convert EVENT_LIST into monthly_events """ + monthly_events = [[] for _ in range(7)] + for event in event_list: + monthly_events[event[0]].append(event[1:]) + return monthly_events + + +def debug_print(data, condition=True, end="\n"): + """Conditionally print data using pprint. + + Args: + data: The data to be printed. + condition: A boolean value. If True, the data will be printed. + """ + if condition: + print(data, end=end) + +def initalize_year(year: int) -> dict[int, list[list[int]]]: + months = dict(enumerate + ([calendar.monthcalendar(year, month) for month in range(1, 13)], + start=1)) + return months @dataclass class Event(): @@ -170,9 +177,15 @@ def process_months(MONTHS, monthly_events, year): return events @click.command() -def main(): +@click.option("--debug", "-d", is_flag=True, default=False, help="Print debug output") +@click.option('--year', "-y", type=int, default=date.today().year, help='Specify the year.') +def main(debug, year): """create csv file""" - events = process_months(MONTHS, monthly_events, YEAR) + global DEBUG + DEBUG = debug + months = initalize_year(year) + monthly_events = initalize_events(EVENT_LIST) + events = process_months(months, monthly_events, year) # events = sort_events(events) write_calendar(events) sys.exit(0)