#!/usr/bin/env python3 """Generate markdown card listing from yaml card definitions""" import argparse from pathlib import Path from string import Template import sys import yaml import generate_card META_DATA = """--- header-includes: title: ${title} --- """ title = {"de": "Karten", "en": "Cards"} def main(): """Generate a markdown card listing""" parser = argparse.ArgumentParser( description='generate markdown card listing') parser.add_argument('data', help='directory containing the card data') parser.add_argument('--language', choices=['en', 'de'], default='en', help='the language of the card text') args = parser.parse_args() data_path = Path(args.data) if not data_path.is_dir(): print('data must be a directory', file=sys.stderr) sys.exit(1) set_dirs = [d for d in data_path.glob('*') if d.is_dir()] if not set_dirs: print('data must contain at least one set subdirectory', file=sys.stderr) sys.exit(1) md = Template(META_DATA) print(md.safe_substitute({"title": title[args.language]})) for set_dir in set_dirs: set_name = set_dir.name print( f'## [{set_name}](../latex-build/{args.language}/{set_name}.pdf)') for card_path in set_dir.glob('*.yml'): with open(card_path, 'r', encoding="utf8") as card_file: card = yaml.full_load(card_file) card['set'] = set_name generate_card.generate_markdown(card, language=args.language) print() if __name__ == '__main__': main()