aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/generate_card_listing.py51
1 files changed, 51 insertions, 0 deletions
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()