141 lines
3.3 KiB
Bash
141 lines
3.3 KiB
Bash
#!/bin/zsh
|
|
database="db/games.rec"
|
|
|
|
|
|
## BEGIN: TEMPLATES ##
|
|
gameheadertmpl='<article>
|
|
<h2 id={{Id}}>{{Module}} ({{System}}) <small><a href="#{{Id}}">#</a></small></h2>
|
|
<p>{{Module}} is a game of {{System}} that I started playing on {{Started}} as a {{Role}}. It is a {{Format}} {{Length}} and is currently {{Status}}.</p>
|
|
<p>Here is how it went!</p>
|
|
'
|
|
|
|
updatetmpl='<h3 id="u{{Id}}">{{Created}} <small><a href="#u{{Id}}">#</a></small></h3>
|
|
|
|
{{Text}}
|
|
'
|
|
|
|
updateupdatetmpl='<h3 id="u{{Id}}">{{Created}} {{Game_System}}: {{Game_Module}}<small><a href="#u{{Id}}">#</a></small></h3>
|
|
|
|
{{Text}}
|
|
'
|
|
|
|
gamefootertmpl='<center>🎲🎲</center>
|
|
</article>'
|
|
|
|
toctmpl='<li><a href="#{{Id}}">{{Module}} ({{System}})</a></li>'
|
|
## END: TEMPLATES ##
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN=$(
|
|
cat<<EOF
|
|
<html>
|
|
<head>
|
|
<title>The Most Interesting Thing That Happened To Me Today</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="alternate" type="application/rss+xml" href="rss.xml" title="dozens interesting microblog">
|
|
<style>
|
|
body {
|
|
max-width: 80ch;
|
|
margin: 0 auto;
|
|
padding: 3rem 1rem;
|
|
}
|
|
h2 {
|
|
border-bottom: solid 1px black;
|
|
margin-top: 3rem;
|
|
}
|
|
h2, h3 {
|
|
position: relative;
|
|
}
|
|
h2 a, h3 a {
|
|
position: absolute;
|
|
left: -1.2rem;
|
|
text-decoration: none;
|
|
opacity: 0.2;
|
|
}
|
|
h2 a {
|
|
line-height: 1.4;
|
|
}
|
|
h3 a {
|
|
line-height: 1.2;
|
|
}
|
|
h2:hover a, h3:hover a {
|
|
opacity: 1;
|
|
}
|
|
@media (prefers-color-scheme: dark) {
|
|
html, body {
|
|
background: #15191d;
|
|
color: #ddd;
|
|
}
|
|
body a, body a:visited {
|
|
color: #809fff;
|
|
}
|
|
h2 {
|
|
border-bottom: solid 1px white;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>Gamelogs</h1>
|
|
<p>All the roleplaying games I\'ve played.</p>
|
|
<li>src: <a href="https://git.tilde.town/dozens/gamelog">https://git.tilde.town/dozens/gamelog</a></li>
|
|
<li>dozens webring: <a href="https://tilde.town/%7Edozens/webring/dozens/index.html?name=gamelog&dir=prev">previous</a> <a href="https://tilde.town/%7Edozens/webring/dozens/index.html">index</a> <a href="https://tilde.town/%7Edozens/webring/dozens/index.html?name=gamelog&dir=next">next</a></li>
|
|
<li><a href="feed.xml">rss</a></li>
|
|
<p>
|
|
View by:
|
|
<a href="index.html">Game</a>
|
|
<a href="updates.html">Update</a>
|
|
</p>
|
|
</header>
|
|
<main>
|
|
EOF
|
|
)
|
|
|
|
|
|
END=$(
|
|
cat<<'END-OF-END'
|
|
</main>
|
|
</body>
|
|
</html>
|
|
END-OF-END
|
|
)
|
|
|
|
|
|
|
|
## INDEX (View by Game) ##
|
|
exec > dist/index.html
|
|
echo $BEGIN
|
|
echo '<h2>Contents</h2>'
|
|
recsel $database -t Game | recfmt "$toctmpl"
|
|
allgames=(`recsel $database -t Game -P Id -C | tr '\n' ' '`)
|
|
for idx in "${allgames[@]}"
|
|
do
|
|
recsel $database -t Game -e "Id = $idx" \
|
|
| recfmt "$gameheadertmpl"
|
|
recsel $database -t Update -e "Game = $idx" \
|
|
| recfmt "$updatetmpl" | markdown
|
|
echo $gamefootertmpl
|
|
done
|
|
echo $END
|
|
|
|
|
|
## UPDATE (View by Update) ##
|
|
exec > dist/updates.html
|
|
echo $BEGIN
|
|
recsel db/games.rec -t Update -j Game \
|
|
| awk '
|
|
BEGIN { RS="";FS="\n" }
|
|
{ rec[NR] = $0 }
|
|
END {
|
|
for (i=length(rec);i>0;i--) {
|
|
print rec[i]; print "";
|
|
}
|
|
}' \
|
|
| recfmt "$updateupdatetmpl" \
|
|
| markdown
|
|
echo $END
|