#!/bin/sh . ./_commands/_extract.sh dir=$1 file=$2 content=$(cat "$dir/$file") page=${file%.prop} echo echo "= $dir/$page.md" if [ ! -e "$dir/$page.md" ] then echo "Create file" echo "--- --- " > "$dir/$page.md" fi property="${content%: *}" line_number=$(grep -n "$property:" "$dir/$page.md") line_number="${line_number%%:*}" case $property in *\[*\]*) line_offset=${property##*[} line_offset=${line_offset%%]*} property=${property%%[*} content="- ${content##*: }" line_number=$(grep -n "$property:" "$dir/$page.md") line_number="${line_number%%:*}" line_number=$((line_number+line_offset+1)) # echo "line_offset: $line_offset" esac # echo "line_number: $line_number" case $line_number in *[0-9]*) line=$(sed "$line_number!d" "$dir/$page.md") # echo "<= $line" esac # echo "=> $content" if [ "$content" = "$property: " ] || [ "$content" = "- " ] then echo "Delete property '$property'" operation=d content= elif [ "$line" != "" ] && [ "${line%- *}" = "" ] then echo "Updating nth element of property '$property'" operation=c elif [ "$line_number" != "" ] && [ "${content%- *}" = "" ] then if grep -q "^$property:" "$dir/$page.md" then echo "Insert nth element of property '$property'" else echo "Creating property $property" line_number=$(sed -n "/---/=" "$dir/$page.md" | tail -1) content="$property:\n$content" fi echo "=> $content" operation=i elif grep -q "^$property: " "$dir/$page.md" then echo "Updating property '$property'" operation=c else echo "Create property '$property'" line_number=$(sed -n "/---/=" "$dir/$page.md" | tail -1) operation=i fi # See https://www.thegeekstuff.com/2009/11/unix-sed-tutorial-append-insert-replace-and-count-file-lines/ sed -i "$line_number $operation $content" "$dir/$page.md" if [ "$property" = "title" ] then echo "Reindexing pages" grep --include=*.md -or "title: .*" ../content/ | grep -v "pages.txt" | grep -v "users/" | grep -v "_index.md" | grep -o "content/.*" | grep -o "/.*" > ../content/pages.txt fi