Repo containing scripts to be used with dovel, and git hooks that powers our web interface.
Author: blmayer (bleemayer@gmail.com)
Date: Tue Nov 7 19:03:43 2023 -0300
Parent: 5396b89
Added markdown support
diff --git a/aux.sh b/aux.sh index 7298c5d..f9aa180 100755 --- a/aux.sh +++ b/aux.sh @@ -63,11 +63,116 @@ pagesummary() { </nav> <p><i>$(cat description)</i></p> </center> - <kbd>curl -O https://dovel.email/$1.tar</kbd> - <a style="float:right" href=/$1.tar filename=$1.tar>tar</a> + <kbd>curl -O https://dovel.email/$1.tar.gz</kbd> + <a style="float:right" href=/$1.tar.gz filename=$1.tar.gz>tar.gz</a> EOF } escapehtml() { sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/g' } + +type() { + for w in $* + do + [ "$DEBUG" = 1 ] && printf "\r[DEBUG] $w\n" + + if [ "$img" = 1 ] || [ "$link" = 1 ] + then + case "$w" in + *']('*) + alt="$alt ${w%]*}"; w="${w#*](}" + [ "$img" = 1 ] && printf '<img src="%s" alt="%s">' "${w%)}" "$alt" && img="0" + [ "$link" = 1 ] && printf '<a href="%s">%s</a>' "${w%)}" "$alt" && link="0" + ;; + *) alt="$alt $w" ;; + esac + continue + fi + + case "$w" in + # bold with ** + '**'*'**') w="${w#\*\*}" && printf "<strong>%s</strong>" "${w%\*\*}" ;; + '**'*) printf "<strong>%s" "${w#\*\*}" ;; + *'**') printf "%s</strong>" "${w%\*\*}" ;; + + # bold with __ + '__'*'__') w="${w#__}" && printf "<strong>%s</strong>" "${w%__}" ;; + '__'*) printf "<strong>%s" "${w#__}" ;; + *'__') printf "%s</strong>" "${w%__}" ;; + + # italics with * + '*'*'*') w="${w#\*}" && printf "<em>%s</em>" "${w%\*}" ;; + '*'*) printf "<em>%s" "${w#\*}" ;; + *'*') printf "%s</em>" "${w%\*}" ;; + + # italics with _ + '_'*'_') w="${w#_}" && printf "<em>%s</em>" "${w%_}" ;; + '_'*) printf "<em>%s" "${w#_}" ;; + *'_') printf "%s</em>" "${w%_}" ;; + + # code with ` + '`'*'`') w="${w#\`}" && printf "<kbd>%s</kbd>" "${w%\`}" ;; + '`'*) printf "<kbd>%s" "${w#\`}" ;; + *'`') printf "%s</kbd>" "${w%\`}" ;; + + # images + '!['*) img="1" && alt="${w#![}" ;; + # links + '['*) link="1" && alt="${w#[}" ;; + *) printf "$w" ;; + esac + printf " " + done +} + +mdown() { + p="0" + pre="0" + ul="0" + ol="0" + + while IFS= read -r l + do + if [ "$l" = '```' ] + then + if [ "$pre" = "0" ] + then + printf "<pre>\n" + else + printf "</pre>\n" + fi + + pre=$((1-pre)) + continue + fi + + [ "$pre" = "1" ] && printf "$l\n" && continue + + [ "$ul" -gt 0 ] && [ "${l%%- *}" != "" ] && { printf "</ul>\n"; ul="0"; } + [ "$ol" -gt 0 ] && [ "${l%%[0-9]. *}" != "" ] && { printf "</ol>\n"; ol="0"; } + + + case "$l" in + "###### "*) printf "<h6>%s</h6>\n" "$(type ${l#*\# })";; + "##### "*) printf "<h5>%s</h5>\n" "$(type ${l#*\# })" ;; + "#### "*) printf "<h4>%s</h4>\n" "$(type ${l#*\# })" ;; + "### "*) printf "<h3>%s</h3>\n" "$(type ${l#*\# })" ;; + "## "*) printf "<h2>%s</h2>\n" "$(type ${l#*\# })" ;; + "# "*) printf "<h1>%s</h1>\n" "$(type ${l#*\# })" ;; + "***"|"---"|"___") printf "<hr>\n" ;; + "- "*|"* "*|"+ "*) + [ "$ul" = "0" ] && printf "<ul>\n" && ul="1" + printf "\t<li>%s</li>\n" "$(type ${l#- })" + ;; + [0-9]". "*) + [ "$ol" = "0" ] && printf "<ol>\n" && ol="1" + printf "\t<li>%s</li>\n" "$(type ${l#[0-9]. })" + ;; + "") [ "$p" -gt "0" ] && { printf "\n</p>\n"; p="0"; } ;; + *) { [ "$p" = "0" ] && printf "<p>\n\t"; }; p="1"; type "$l" ;; + esac + done + + [ "$p" -gt "0" ] && printf "\n</p>\n" +}
diff --git a/post-receive b/post-receive index 9514204..366ef0c 100755 --- a/post-receive +++ b/post-receive @@ -68,10 +68,15 @@ updateindex() { $(pagesummary "$REPO") <hr> <p>Latest commit: $(git log -n 1 --format="(%h) by %an at %as: %s")</p> - <pre style="white-space:pre-line">$(cat "$OUT/raw/README"*)</pre> - </body> - </html> + <main> + EOF + + [ -f "$OUT/raw/README.md" ] && mdown < "$OUT/raw/README.md" >> "$OUT/index.html" + [ -f "$OUT/raw/README" ] && cat <<- EOF >> "$OUT/index.html" + <pre>$(cat "$OUT/raw/README")</pre> EOF + + printf "\t</main>\n</body>\n</html>\n" >> "$OUT/index.html" } createcommitpage() {