diff options
| -rw-r--r-- | html/Makefile | 12 | ||||
| -rwxr-xr-x | scripts/generate_card_listing.py | 51 |
2 files changed, 55 insertions, 8 deletions
diff --git a/html/Makefile b/html/Makefile index e4c09aab..83740d14 100644 --- a/html/Makefile +++ b/html/Makefile @@ -20,6 +20,8 @@ LATEX_BUILDDIR := $(LATEX_ROOT)/build GENERATE_CARD := $(GAME_ROOT)/scripts/generate_card.py GENERATE_CARD_ARGS := --format markdown +GENERATE_CARD_LISTING := $(GAME_ROOT)/scripts/generate_card_listing.py + GENERATE_HOVER_LINKS := $(GAME_ROOT)/scripts/generate_card_hover_links.py SETS := $(shell find $(CARDS_YML_DIR) -mindepth 1 -type d -printf "%f\n") @@ -88,17 +90,11 @@ $(BUILDDIR)/cards-data: $(LANG_CARDS_LISTINGS) $(BUILDDIR)/latex-build $(VERBOSE) ln -sfT $(DATA_ROOT)/cards $@ define generateCardsListing -$(1)/cards_listing.md: $(CARDS_YAML) $(GENERATE_CARD) $(MAKEFILE_LIST) +$(1)/cards_listing.md: $(CARDS_YAML) $(GENERATE_CARD) $(GENERATE_CARD_LISTING) $(MAKEFILE_LIST) @echo "building $$@" @if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi $(VERBOSE) echo -e "% Cards" > $$@ - $(VERBOSE) for set in $(SETS); \ - do echo -e "\n## [$$$$set](../cards/$(2)/$$$$set.pdf)" >> $$@; \ - for card in $(CARDS_YML_DIR)/$$$$set/*.yml; \ - do echo "" >> $$@; \ - $(GENERATE_CARD) $(GENERATE_CARD_ARGS) --language=$(2) $$$$card >> $$@; \ - done; \ - done + $(VERBOSE) $(GENERATE_CARD_LISTING) --language=$(2) $(CARDS_YML_DIR) >> $$@; $(1)/cards_listing.html: $(1)/cards_listing.md $(HTML_TEMPLATE) @echo "building $$@" diff --git a/scripts/generate_card_listing.py b/scripts/generate_card_listing.py new file mode 100755 index 00000000..ee6c9e68 --- /dev/null +++ b/scripts/generate_card_listing.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +"""Generate markdown card listing from yaml card definitions""" + +import argparse +from pathlib import Path +import sys +import yaml + +import generate_card + + +def main(): + """Generate a markdown card listing""" + + parser = argparse.ArgumentParser( + description='generate makrdown 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) + + 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() |
