#!python
import argparse
from pathlib import Path

from github_stats_pages import stats_plots
from github_stats_pages.logger import app_log as log


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="CLI to generate stats plots and static pages"
    )
    parser.add_argument(
        "-u", "--username", required=True, help="user or organization name"
    )
    parser.add_argument("-c", "--csv-file", required=True, help="CSV filename")
    parser.add_argument(
        "-t", "--token", default="", help="GitHub API token"
    )  # Avoids rate limiting
    parser.add_argument(
        "-d",
        "--data-dir",
        default=Path.cwd(),
        help="""Folder path containing merge CSV files
                             'Default: current working directory""",
    )
    parser.add_argument(
        "-o",
        "--out-dir",
        default=Path.cwd(),
        help="""Absolute path to save static pages.
                             'Default: current working directory""",
    )
    parser.add_argument(
        "-i",
        "--include-repos",
        default="",
        help="""Repositories to only render.
                             Overrides --csv-filename input.
                             Comma separated if more than one""",
    )
    parser.add_argument(
        "-e",
        "--exclude-repos",
        default="",
        help="""Repositories to exclude.
                             Comma separated if more than one""",
    )
    parser.add_argument(
        "-s", "--symlink", action="store_true", help="Symlink to styles assets"
    )

    args = parser.parse_args()
    vargs = vars(args)

    log.info("[yellow]Running make_stats_plots script")

    if args.include_repos and args.exclude_repos:
        msg = "Cannot provide include_repos and exclude_repos simultaneously!"
        log.error(f"[bold red]{msg}")
        raise ValueError(msg)

    stats_plots.make_plots(**vargs)
