blob: 906167fa5499a7afa10fac4edc06b3f0b6e6935a (
plain) (
blame)
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
#!/bin/sh
# hitler.rip
# script to build my website using pandoc
# © 2025 hitler.rip <git@hitler.rip>
# licensed under AGPLv3-or-later; see licenses/code.md for more information
echo "[build] starting to build webpage..."
rm -rf ./tmp/
rm -rf ./web
mkdir -p ./con/
mkdir -p ./src/articles/
mkdir -p ./tmp/articles/
mkdir -p ./web/articles/
mkdir -p ./web/licenses/
mkdir -p ./dir/
touch ./con/header.html
touch ./con/footer.html
touch ./con/style.css
touch ./con/rss-header.xml
touch ./con/rss-footer.xml
touch ./con/contact.md
touch ./src/index.md
touch ./src/articles/index.md
echo "[build] writing index..."
cd ./src/
for i in *.md; do
echo "[build] converting: $i"
filename=$( echo "$i" | rev | cut -c4- | rev )
pandoc "$i" -o ../tmp/"$filename".html \
-f gfm -t html5 \
--lua-filter=../con/links.lua
if [ "$filename" == "index" ]; then
pandoc ../con/contact.md -o ../tmp/con-contact-tmp-file.html \
-f gfm -t html5 \
--lua-filter=../con/links.lua
cat ../con/header.html \
../tmp/"$filename".html \
../tmp/con-contact-tmp-file.html \
../con/footer.html \
> ../web/"$filename".html
cat "$i" \
../con/contact.md \
> ../web/"$filename".md
else
mkdir -p ../web/"$filename"/
cat ../con/header.html \
../tmp/"$filename".html \
../con/footer.html \
> ../web/"$filename"/index.html
cp "$i" ../web/"$filename"/index.md
fi
done
echo "[build] writing articles..."
cd ./articles/
for i in *.md; do
echo "[build] converting: $i"
filename=$( echo "$i" | rev | cut -c4- | rev )
pandoc "$i" -o ../../tmp/articles/"$filename".html \
-f gfm -t html5 \
--lua-filter=../../con/links.lua
if [ "$filename" == "index" ]; then
echo "[build] skipping index file for later..."
else
mkdir -p ../../web/articles/"$filename"/
cat ../../con/header.html \
../../tmp/articles/"$filename".html \
../../con/footer.html \
> ../../web/articles/"$filename"/index.html
cp "$i" ../../web/articles/"$filename"/index.md
fi
cp "$i" ../../web/articles/
# sort this by date
if [ -e "$filename".meta ]; then
source ./"$filename".meta
# `.meta` is a simple shell script that uses `export` to
# set some variables, notably:
# WEBMETA_TITLE (title string)
# WEBMETA_DATE (date string YYYY-MM-DD)
# WEBMETA_AUTH (author string)
# WEBMETA_SUMMARY (summary string)
# please note that you have to actually check if this data is correct
# and you should not just import random `.meta` files as they can arbitrarily
# execute code on your system and are directly injected into the HTML.
export WEBMETA_BASELINK="https://hitler.rip/articles/"
# you will also have to manually change this link to the final destination
# of your articles so that the RSS feed can successfully link there.
touch ../../tmp/articles/gen-articles-tmp-list.html
tee -a ../../tmp/articles/gen-articles-tmp-list.html > /dev/null << EOF
<article>
<a href="$filename"><h2>$WEBMETA_TITLE</h2></a>
<h6><code>$WEBMETA_DATE</code> by $WEBMETA_AUTH</h6>
<p>$WEBMETA_SUMMARY</p>
</article>
EOF
touch ../../tmp/articles/gen-articles-tmp-rss.xml
tee -a ../../tmp/articles/gen-articles-tmp-rss.xml > /dev/null << EOF
<item>
<title>$WEBMETA_TITLE</title>
<pubDate>$(date -d "$WEBMETA_DATE" +"%a, %d %b %Y %H:%M:%S +0000" )</pubDate>
<author>$WEBMETA_AUTHOR</author>
<description>$WEBMETA_SUMMARY</description>
<link>/$filename</link>
<guid>/$filename</guid>
</item>
EOF
fi
done
cd ../..
echo "[build] generating feed..."
cat ./con/header.html \
./tmp/articles/index.html \
./tmp/articles/gen-articles-tmp-list.html \
./con/footer.html \
> ./web/articles/index.html
cat ./con/rss-header.xml \
./tmp/articles/gen-articles-tmp-rss.xml \
./con/rss-footer.xml \
> ./web/articles/feed.xml
echo "[build] copying static files..."
cp ./con/style.css ./web/style.css
cp ./con/icon.png ./web/icon.png
cp ./licenses/* ./web/licenses/
cp -r ./dir/* ./web/
echo "[build] removing temporary build files..."
rm -rf ./tmp
echo "[build] done!"
|