sebastiano.tronto.net

Source files and build scripts for my personal website
git clone https://git.tronto.net/sebastiano.tronto.net
Download | Log | Files | Refs | README

build.sh (2784B)


      1 #!/bin/sh
      2 
      3 recursivebuild() {
      4 	local destdir=$(echo $1 | sed 's|^src|http|')
      5 	local destdir_gmi=$(echo $1 | sed 's|^src|gemini|')
      6 	mkdir -p "$destdir"
      7 	mkdir -p "$destdir_gmi"
      8 	for file in $(ls $1); do
      9 		if [ -d "$1/$file" ]; then
     10 			mkdir -p "$destdir/$file"
     11 			mkdir -p "$destdir_gmi/$file"
     12 			recursivebuild "$1/$file"
     13 		else
     14 			extension=$(echo "$file" | sed 's/.*\.//')
     15 			if [ "$extension" = "md" ]; then
     16 				sed "s/TITLE/$(grep '^\# ' < "$1/$file" \
     17 					| head -n 1 \
     18 					| sed 's/^\# //')/" < top.html \
     19 					> "$destdir/index.html"
     20 				lowdown "$1/$file" >> "$destdir/index.html"
     21 				cat bottom.html >> "$destdir/index.html"
     22 
     23 				# TODO: the following lines contain a dirty fix
     24 				# to deal with a bug in lowdown. Remove all the
     25 				# sed lines when fixed.
     26 				lowdown -Tgemini --gemini-link-roman \
     27 					"$1/$file" \
     28 					| sed '/```./i\
     29 ```
     30 					' \
     31 					| sed '/```./ s/```//' \
     32 					> "$destdir_gmi/index.gmi"
     33 				cat bottom.gmi >> "$destdir_gmi/index.gmi"
     34 			elif [ "$extension" = "html" ]; then
     35 				cat top.html "$1/$file" bottom.html \
     36 					| sed "s/TITLE/$(grep '<!--TITLE: ' <\
     37 							"$1/$file" \
     38 						| sed 's/^<!--TITLE: //' \
     39 						| sed 's/-->$//')/" \
     40 					> "$destdir/index.html"
     41 			elif [ "$extension" = "gmi" ]; then
     42 				cat "$1/$file" bottom.gmi > \
     43 					"$destdir_gmi/index.gmi"
     44 			else
     45 				cp "$1/$file" "$destdir/$file"
     46 				cp "$1/$file" "$destdir_gmi/$file"
     47 			fi
     48 		fi
     49 	done
     50 }
     51 
     52 makeblog() {
     53 	bf=src/blog/blog.md
     54 	ff=src/blog/feed.xml
     55 
     56 	printf "# Blog\n\n[RSS Feed](feed.xml)\n\n" > $bf
     57 	cp feed-top.xml $ff
     58 
     59 	for i in $(ls src/blog | sort -r); do
     60 		if [ -d src/blog/$i ]; then
     61 			f="src/blog/$i/*.md"
     62 			d=$(echo $i | grep -oE '^[0-9]{4}-[0-9]{2}-[0-9]{2}')
     63 			t=$(head -n 1 $f | sed 's/# //')
     64 
     65 			thisyear=$(echo $d | sed 's/-.*//')
     66 			if [ "$thisyear" != "$lastyear" ]; then
     67 				printf "\n## $thisyear\n\n" >> $bf
     68 				lastyear=$thisyear
     69 			fi
     70 
     71 			echo "* $d [$t]($i)" >> $bf
     72 
     73 			echo "<item>" >> $ff
     74 			echo "<title>$t</title>" >> $ff
     75 			echo "<link>https://sebastiano.tronto.net/blog/$i</link>" >> $ff
     76 			echo "<description>$t</description>" >> $ff
     77 			echo "<pubDate>$d</pubDate>" >> $ff
     78 			echo "</item>" >> $ff
     79 			echo "" >> $ff
     80 		fi
     81 	done
     82 
     83 	echo "" >> $ff
     84 	echo "</channel>" >> $ff
     85 	echo "</rss>" >> $ff
     86 }
     87 
     88 gemblog() {
     89 	bg=gemini/blog/index.gmi
     90 
     91 	printf "# Blog\n\n=> feed.xml RSS Feed\n\n" > $bg
     92 	for i in $(ls src/blog | sort -r); do
     93 		if [ -d src/blog/$i ]; then
     94 			d=$(echo $i | grep -oE '^[0-9]{4}-[0-9]{2}-[0-9]{2}')
     95 			t=$(head -n 1 src/blog/$i/*.md | sed 's/# //')
     96 
     97 			thisyear=$(echo $d | sed 's/-.*//')
     98 			if [ "$thisyear" != "$lastyear" ]; then
     99 				printf "\n## $thisyear\n\n" >> $bg
    100 				lastyear=$thisyear
    101 			fi
    102 			echo "=> $i $d $t" >> $bg
    103 		fi
    104 	done
    105 	echo "" >> $bg
    106 	cat bottom.gmi >> $bg
    107 }
    108 
    109 makeblog
    110 recursivebuild src
    111 gemblog