aboutsummaryrefslogtreecommitdiff
path: root/build.sh
blob: 7cb3ff1922d461427905eb16b3a9c433c3a88613 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/sh

recursivebuild() {
	local destdir=$(echo $1 | sed 's|^src|http|')
	local destdir_gmi=$(echo $1 | sed 's|^src|gemini|')
	mkdir -p "$destdir"
	mkdir -p "$destdir_gmi"
	for file in $(ls $1); do
		if [ -d "$1/$file" ]; then
			mkdir -p "$destdir/$file"
			mkdir -p "$destdir_gmi/$file"
			recursivebuild "$1/$file"
		else
			extension=$(echo "$file" | sed 's/.*\.//')
			if [ "$extension" = "md" ]; then
				sed "s/TITLE/$(grep '^\# ' < "$1/$file" \
					| head -n 1 \
					| sed 's/^\# //')/" < top.html \
					> "$destdir/index.html"
				lowdown "$1/$file" >> "$destdir/index.html"
				cat bottom.html >> "$destdir/index.html"

				# TODO: the following lines contain a dirty fix
				# to deal with a bug in lowdown. Remove all the
				# sed lines when fixed.
				lowdown -Tgemini --gemini-link-roman \
					"$1/$file" \
					| sed '/```./i\
```
					' \
					| sed '/```./ s/```//' \
					> "$destdir_gmi/index.gmi"
				cat bottom.gmi >> "$destdir_gmi/index.gmi"
			elif [ "$extension" = "html" ]; then
				cat top.html "$1/$file" bottom.html \
					| sed "s/TITLE/$(grep '<!--TITLE: ' <\
							"$1/$file" \
						| sed 's/^<!--TITLE: //' \
						| sed 's/-->$//')/" \
					> "$destdir/index.html"
			elif [ "$extension" = "gmi" ]; then
				cat "$1/$file" bottom.gmi > \
					"$destdir_gmi/index.gmi"
			else
				cp "$1/$file" "$destdir/$file"
				cp "$1/$file" "$destdir_gmi/$file"
			fi
		fi
	done
}

makeblog() {
	bf=src/blog/blog.md
	ff=src/blog/feed.xml

	printf "# Blog\n\n[RSS Feed](feed.xml)\n\n" > $bf
	cp feed-top.xml $ff

	for i in $(ls src/blog | sort -r); do
		if [ -d src/blog/$i ]; then
			f="src/blog/$i/*.md"
			d=$(echo $i | grep -oE '^[0-9]{4}-[0-9]{2}-[0-9]{2}')
			t=$(head -n 1 $f | sed 's/# //')
			echo "* $d [$t]($i)" >> $bf

			echo "<item>" >> $ff
			echo "<title>$t</title>" >> $ff
			echo "<link>https://sebastiano.tronto.net/blog/$i</link>" >> $ff
			echo "<description>$t</description>" >> $ff
			echo "<pubDate>$d</pubDate>" >> $ff
			echo "</item>" >> $ff
			echo "" >> $ff
		fi
	done

	echo "" >> $ff
	echo "</channel>" >> $ff
	echo "</rss>" >> $ff
}

gemblog() {
	bg=gemini/blog/index.gmi

	printf "# Blog\n\n=> feed.xml RSS Feed\n\n" > $bg
	for i in $(ls src/blog | sort -r); do
		if [ -d src/blog/$i ]; then
			d=$(echo $i | grep -oE '^[0-9]{4}-[0-9]{2}-[0-9]{2}')
			t=$(head -n 1 src/blog/$i/*.md | sed 's/# //')
			echo "=> $i $d $t" >> $bg
		fi
	done
	echo "" >> $bg
	cat bottom.gmi >> $bg
}

makeblog
recursivebuild src
gemblog

Generated with cgit - Back to sebastiano.tronto.net