diff --git a/slides/gen_index.sh b/slides/gen_index.sh index 507d3f8f21405d2b295cacd80bd1170aeda8a0b9..5c72edf6c43ccbb286b6af2401b7c0e789f0a267 100755 --- a/slides/gen_index.sh +++ b/slides/gen_index.sh @@ -1,5 +1,26 @@ #!/bin/bash +set -e + +function get_info() { + local field=$(echo "$fullName" | sed "$2q;d" $1); + IFS=$3; + local field=($field); + if [ "${field}" != $5 ]; then + return 1 + fi + local field=${field[1]}; + IFS=$4; + local field=($field); + local field=${field[1]}; + echo "$field" +} + +function fail() { + printf '%s\n' "$1" >&2 ## Send message to stderr. + exit "${2-1}" ## Return a code specified by $2, or 1 by default. +} + OIFS=$IFS NUM_LINE=2 PREFIX="" @@ -8,36 +29,27 @@ PREFIX="" classes=() for i in *.md; do [ -f "$i" ] || break - comp=$(echo "$fullName" | sed "${NUM_LINE}q;d" $i) - date=$(echo "$fullName" | sed "3q;d" $i) - IFS=':' - comp=($comp); - comp=${comp[1]} - date=($date); - date=${date[1]} - # echo $comp - IFS='"' - comp=($comp) - comp=${comp[1]} - date=($date); - date=${date[1]} - # echo $comp | awk '{ print substr( $0, 1, length($0)-1 ) }' - # echo $comp - # date=sed "${NUM_LINE}q;d" $i + date="$(get_info $i 3 ":" '"' "date")" + if [ "$date" == 1 ]; then + fail "Error date field not found" + fi + comp="$(get_info $i 2 ":" '"' "title")" + if [ "$comp" == 1 ]; then + fail "Error title field not found" + fi i="${i%.*}" class="[${date} ${comp}](${PREFIX}${i}.pdf)" - classes+=($class) - # echo "[${date} ${comp}](${PREFIX}${i}.pdf)" >> index.md + classes+=("$class") done IFS=$'\n' classes=($(sort <<<"${classes[*]}")) date=$(date '+%Y-%m-%d') echo "---" >> index.md -echo "title: Slides du cours d'Algorithmique" >> index.md -echo "date: ${date}" >> index.md +echo "title: \"Slides du cours d'algorithmique\"" >> index.md +echo "date: \"${date}\"" >> index.md echo "---" >> index.md echo "" >> index.md -echo "# Tous les slides du cours d'Algorithmique" >> index.md +echo "# Tous les slides du cours d'algorithmique" >> index.md echo "" >> index.md for i in ${classes[*]}; do echo "* $i" >> index.md