#! /usr/bin/env bash source ./gmirator.conf COMMAND=$1 PARAM=$2 make_gemlogs_index() { rm articles.gmi.temp echo "generating articles.gmi.temp" ls $LGMI/gemlog | grep -v 'index' | sort -r \ | while read fname; do local date=$(echo "$fname" | sed "s/_.*//") local title=$(head -1 $LGMI/gemlog/$fname | sed "s/# //") echo "=> /gemlog/$fname $date - $title" >> $WORKDIR/articles.gmi.temp done head $WORKDIR/articles.gmi.temp > $WORKDIR/head-articles.gmi.temp echo "generating gemlog/index.gmi" sed -i -e "/^## logs/,//{ /^#/!d }" -e "/^## logs/{ a r $WORKDIR/articles.gmi.temp }" $LGMI/gemlog/index.gmi echo "generating index.gmi" sed -i -e "/^## logs/,//{ /^#/!d }" -e "/^## logs/{ a => tinylog.gmi tinylogs go here a => gemlog/index.gmi full gemlogs here a r $WORKDIR/head-articles.gmi.temp a }" $LGMI/index.gmi echo "generate footer for every .gmi" while read -r file; do sed -i -e "/^---/,//{ d }" $file cat $WORKDIR/footer.gmi >> $file done < <(find $LGMI -type f -name \*.gmi) echo "DONE :)" } inline_parsing() { sed -E 's|\*([^\*]+)\*|\1|g' | sed -E 's|~~(.*)~~|\1|g' } gmi2html() { local in_list=no local in_preformated=no while read -r line; do if [[ $line == "---" ]]; then break fi if [[ "$in_list" == yes ]]; then if [[ "$line" == '* '* ]]; then printf "
  • %s
  • \n" "${line/\* /}" | inline_parsing continue else in_list=no printf "\n" fi elif [[ "$in_preformated" == yes ]]; then if [[ "$line" == '```'* ]]; then in_preformated=no printf "\n" else printf "%s\n" "$line" fi continue fi case "$line" in '') ;; '* '*) in_list=yes printf "