From 5cc1c37698ebfe7d7498a86f14e658349214662a Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Wed, 27 Sep 2023 14:46:37 +0200 Subject: better detect make targets --- scripts/lesson-make | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'scripts') diff --git a/scripts/lesson-make b/scripts/lesson-make index 589c6a0d..01db501a 100755 --- a/scripts/lesson-make +++ b/scripts/lesson-make @@ -6,12 +6,37 @@ done FIND="find . -maxdepth 1 '(' -name '*.md' -o -name '*.tex' ')' -a -not -name 'Aufgabe[0-9].tex' -a -not -name '_*'" -if [[ -f "${MAKEFILE}" ]]; then - TARGETS=( "$@" ) - if [[ -z "${TARGETS[*]}" ]]; then - read -ra TARGETS < <(eval "${FIND}" | sed -e 's/\.tex$/.pdf/g' -e 's/\.md$/.pdf/g' -e 's/slides.pdf/slides.pdf slides.pptx/') - fi +if [[ ! -f "${MAKEFILE}" ]]; then + echo "No root Makefile found" >&2 + exit 1 +fi + +targets=( "$@" ) +if [[ -z "${targets[*]}" ]]; then + # Autodetect targets + mapfile -t sources < <(eval "${FIND}") + for source in "${sources[@]}"; do + declare -a new_targets=() + case "${source}" in + slides.md) + new_targets+=("slides.pdf" "slides.pptx") + ;; + *) + mapfile -t new_targets < <(echo "${source}" | sed -e 's/\.tex$/.pdf/g' -e 's/\.md$/.pdf/g') + ;; + esac - exec make -f "${MAKEFILE}" "${TARGETS[@]}" + if grep -qe 'lehrerversion\|gap\|solution' "${source}"; then + declare -a sus_targets=( "${new_targets[@]}" ) + for sus_target in "${sus_targets[@]}"; do + dir=$(dirname "${sus_target}") + target_file=$(basename "${sus_target}") + new_targets+=("${dir}/lehrer_${target_file}") + done + fi + targets+=( "${new_targets[@]}" ) + done fi +exec make -f "${MAKEFILE}" "${targets[@]}" + -- cgit v1.2.3