#!/usr/bin/env python3
"""Validates Project Cards from command line.

eg:
    validate_card card_search_dir --filter_tags ['baseline2030']
"""

import argparse
from projectcard import read_cards, CardLogger

parser = argparse.ArgumentParser(description='Project Card Validator')
parser.add_argument(
    'card_search_dir',
    type=str,
    help='Directory or file location to find project cards.'
    )
parser.add_argument(
    'filter_tags',
    nargs='*',
    type=str,
    help='Tags to filter project cards by. If not provided, will look at all.')

if __name__ == "__main__":
    args = parser.parse_args()
    dir = args.card_search_dir
    filter_tags = args.filter_tags if args.filter_tags else []

    card_dict = read_cards(dir, filter_tags=filter_tags)

    CardLogger.info(f"Evaluating {len(card_dict)} cards.")
    for project, card in card_dict.items():
        CardLogger.info(f"Evaluating: {project}")
        try:
            assert card.valid
            CardLogger.info(f"{project} - Valid")
        except Exception as e:
            CardLogger.error(f"{project} - Not Valid")
            CardLogger.error(f"{project} Error:\n{e}")
