#!/usr/bin/env python

__author__ = "Damon May"


import argparse
from jamstats.io.scoreboard_json_io import load_derby_game_from_json_file
from jamstats.plots.plot_together import save_game_plots_to_pdf
from jamstats.plots import plot_together, jamplots, skaterplots
import logging

logger = logging.Logger(__name__)


parser = argparse.ArgumentParser()
parser.add_argument('jsonfile', type=argparse.FileType('r'),
                    help='Scoreboard json file to read')
parser.add_argument('pdffile', type=argparse.FileType('w'), nargs='?',
                    help='PDF file to write')
parser.add_argument('--anonymize', action="store_true",
                    help="Replace actual skater names with random pregenerated ones?")
parser.add_argument('--debug', action="store_true",
                    help="enable debug logging")
args = parser.parse_args()

formatter = logging.Formatter(
    '%(asctime)s | %(name)s |  %(levelname)s: %(message)s')
logging.basicConfig(level=logging.WARNING, format=formatter)
if args.debug:
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(logging.DEBUG)
    stream_handler.setFormatter(formatter)

    logger.warning("Enabling debug logging.")
    for mymodule in [plot_together, jamplots, skaterplots]:
        mymodule.logger.setLevel(logging.DEBUG)
        mymodule.logger.addHandler(stream_handler)

print(f"Loading game from {args.jsonfile.name}")
derby_game = load_derby_game_from_json_file(args.jsonfile.name)

if args.pdffile is None:
    if args.jsonfile.name.lower().endswith(".json"):
        print(f"Output filepath not provided. "
              f"Using input filepath with extension .pdf instead of {args.jsonfile.name[-5:]}")
        pdf_filepath = args.jsonfile.name[:-len(".json")] + ".pdf"
    else:
        print("Input file doesn't end with .json, so refusing to guess what output file you want."
              "  Please rename your input file or specify an output filepath.")
else:
    pdf_filepath = args.pdffile.name
    args.pdffile.close()

save_game_plots_to_pdf(derby_game, pdf_filepath, anonymize_names=args.anonymize)
print(f"Wrote {pdf_filepath}.")
