#!/bin/bash

set -e

GIG_LIST_FILE_NAME=$1
MAIN_DIR="$(dirname "$(readlink -f "$0")")"

if [ -z $GIG_LIST_FILE_NAME ]; then
    echo "Usage: $0 GIG_FILE_NAME"
    exit 1
fi

GIG_LIST_PATH="${MAIN_DIR}/docs/auftritte/${GIG_LIST_FILE_NAME}"
if ! [ -f "${GIG_LIST_PATH}" ]; then
    echo "File ${GIG_LIST_PATH} not found"
    exit 1
fi

# Store the Song names into a variable
SONG_NAMES=$(grep -oP '(?<=/repertoire/)[^/]+' "${GIG_LIST_PATH}")

RELATIVE_PDF_OUTPUT_DIR="pdf/${GIG_LIST_FILE_NAME}"
HOST_PDF_OUTPUT_DIR="${MAIN_DIR}/${RELATIVE_PDF_OUTPUT_DIR}"
DOCKER_PDF_OUTPUT_DIR="/data/${RELATIVE_PDF_OUTPUT_DIR}"

RELATIVE_PDF_OUTPUT_FILE_PATH="pdf/${GIG_LIST_FILE_NAME}.pdf"
HOST_PDF_OUTPUT_FILE_PATH="${MAIN_DIR}/${RELATIVE_PDF_OUTPUT_FILE_PATH}"
DOCKER_PDF_OUTPUT_FILE_PATH="/data/${RELATIVE_PDF_OUTPUT_FILE_PATH}"

if [ ! -d "${HOST_PDF_OUTPUT_DIR}" ]; then
    mkdir -p ${HOST_PDF_OUTPUT_DIR}
    echo "Created output folder ${HOST_PDF_OUTPUT_DIR}"
fi

# Loop through each value and print it (or do something else)
NUMBER=1
DOCKER_INPUT_FILE_LIST=""
while IFS= read -r SONG_NAME; do
    RELATIVE_SONG_FILE_PATH="docs/repertoire/${SONG_NAME}.md"
    HOST_SONG_FILE_PATH="${MAIN_DIR}/${RELATIVE_SONG_FILE_PATH}"
    DOCKER_SONG_FILE_PATH="/data/${RELATIVE_SONG_FILE_PATH}"

    if [ ! -f "${HOST_SONG_FILE_PATH}" ]; then
        echo "Missing song file: ${HOST_SONG_FILE_PATH}"
        exit 1
    fi

    echo "Processing song #$(printf "%02d" $NUMBER) '${SONG_NAME}' at ${HOST_SONG_FILE_PATH}"
    docker run --rm -v "$(pwd):/data" -u $(id -u):$(id -g) pandoc/latex "${DOCKER_SONG_FILE_PATH}" -o "${DOCKER_PDF_OUTPUT_DIR}/$(printf "%02d" $NUMBER) ${SONG_NAME}.pdf" -V geometry:margin=2cm

    ((NUMBER++))
done <<< "$SONG_NAMES"

pdftk ${HOST_PDF_OUTPUT_DIR}/* cat output "${HOST_PDF_OUTPUT_FILE_PATH}"
