#!/usr/bin/env python

# Usage: ./build.py INPUT_DIR OUTPUT_FILE

import os
# import re
import sys
import pypandoc


def gx_usage():
    """Show usage"""
    print(f"Usage: {sys.argv[0]} METADATA_FILE INPUT_FILE OUTPUT_FILE")
    print()


if len(sys.argv) != 4:
    gx_usage()

metadata_file = sys.argv[1]
if not os.path.exists(metadata_file):
    print(f"Metadata file not found: {metadata_file}")
    sys.exit(1)

input_file = sys.argv[2]
if not os.path.exists(input_file):
    print(f"Input file not found: {input_file}")
    sys.exit(1)

# Get second
output_file = sys.argv[3]
if os.path.exists(output_file):
    print(f"Output file already exists: {output_file}")
    sys.exit(1)

print(f"Metadata: {metadata_file}")
print(f"Input: {input_file}")
print(f"Output: {output_file}")

# Build the pandoc options as a string
pandoc_cmd = [
    "--verbose",
    "--toc",
    "--number-sections",
    "--include-in-header", "utils/docs/main.tex",
    "--metadata-file", metadata_file,
    # "-V", "linkcolor:blue",
    # "-V", "geometry:a4paper",
    # "-V", "geometry:margin=1.8cm",
    "-V", "mainfont=DejaVu Serif",
    "-V", "monofont=Noto Sans Mono",
    "--pdf-engine=xelatex",
    "--resource-path=utils/docs",
    "--filter=./utils/docs/filter-nobg.hs",
]

# from glob import glob
# input_files = [os.path.join(dp, f) for dp, dn, filenames in os.walk(input_dir) for f in filenames if re.search(r'^[0-9].*\.md$', f)]
# input_files.sort()

# Convert all markdown files in the chapters/ subdirectory.
pypandoc.convert_file(
    input_file,
    "pdf",
    outputfile=output_file,
    extra_args=pandoc_cmd,
)

print(f"Conversion completed. Output saved to: {output_file}")

#