diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-09-27 14:46:37 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2023-09-27 14:47:38 +0200 |
| commit | 5cc1c37698ebfe7d7498a86f14e658349214662a (patch) | |
| tree | 9b64693c63ed3fc5688eef1dd9f69d785de96129 | |
| parent | 822b7c1a3c5f5b11b5a43a6c9b054e2b4f8893ea (diff) | |
| download | unterricht-5cc1c37698ebfe7d7498a86f14e658349214662a.tar.gz unterricht-5cc1c37698ebfe7d7498a86f14e658349214662a.zip | |
better detect make targets
| -rwxr-xr-x | scripts/lesson-make | 37 |
1 files changed, 31 insertions, 6 deletions
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[@]}" + |
