#!/usr/bin/env bash set -e set -o pipefail usage() { exit 1 } extrafiles=($(find . -name "mkdocs-*.yml")) extralines=() for file in "${extrafiles[@]}" do #echo "LOADING $file" while read line do if [[ "$line" != "" ]] then extralines+=("$line") #echo "LINE (${#extralines[@]}): $line" fi done < <(cat "$file") done #echo "extra count (${#extralines[@]})" mv mkdocs.yml mkdocs.yml.bak echo "# Generated mkdocs.yml from ${extrafiles[@]}" echo "# Generated mkdocs.yml from ${extrafiles[@]}" > mkdocs.yml while read line do menu=$(echo $line | sed "s/^- \['\([^']*\)', '\([^']*\)'.*/\2/") if [[ "$menu" != "**HIDDEN**" ]] # or starts with a '#'? then if [[ "$lastmenu" != "" && "$lastmenu" != "$menu" ]] then # insert extra elements here for extra in "${extralines[@]}" do #echo "EXTRA $extra" extramenu=$(echo $extra | sed "s/^- \['\([^']*\)', '\([^']*\)'.*/\2/") if [[ "$extramenu" == "$lastmenu" ]] then echo "$extra" >> mkdocs.yml fi done #echo "# JUST FINISHED $lastmenu" fi lastmenu="$menu" fi echo "$line" >> mkdocs.yml done < <(cat "mkdocs.yml.bak")