This commit is contained in:
Jocelyn 2024-11-27 22:00:17 +01:00
commit 77c9234c9f
7 changed files with 68 additions and 6 deletions

53
README.md Normal file
View file

@ -0,0 +1,53 @@
# Jocelyns HSMW website
This repository contains the generator, static files and source files for my [HSMW website](https://www.student.hs-mittweida.de/~jotto5)
## Build
To build this website you need:
* GNU Bash (5.2.32)
* GNU awk (1.3.4)
* sed (4.9)
* Pandoc (3.1.11.1)
Any half-recent version should suffice, I added a tested version in parentheses. To run the build, execute the `build.sh` script from the root directory. This will:
* Delete the `dist` folder if it exists
* Create a dist folder
* Copy over all static files
* Compile the website from `src` into `dist`
## Templates
Templates use a custom template language heavily inspired by the one used by `werc`. It works by embedding bash code directly into the html skeleton used to build the pages. There are two ways of doing so:
### Escaped lines
If a line starts with an arbitrary amount of whitespace (even 0) followed by a percent sign, the rest of the line will be treated as a shell command, and the commands output will be inserted in its place. For example:
```
<h1>
% echo 'Hallo Mittweida!'
</h1>
```
will be evaluated to
```
<h1>
Hallo Mittweida!
</h1>
```
> NOTE: Keep control over your templates, as they could expose information about your system!
### Inline expressions
Inline expressions can be written by encasing the expression in `%(` and `%)`. Those expressions will be evaluated as if put in double quotes, and the result will be inserted in their place. Example:
```
<a href="%($LINK%)">link</a>
```
will put the contents of the shell variable `LINK` in the `href`-attribute field of the link object.

View file

@ -1,17 +1,16 @@
#!/bin/bash
source_to_target() { sed -E -e 's:\.\./src/:\./:' -e 's/.md$/.html/'; }
escape_newlines() { tr -d "\\n"; }
shopt -s globstar
rm -rf dist/
mkdir dist&&cd dist
cp ../style.css .
cp -r ../static/* .
for file in $(du -a ../src/ | cut -f2 | grep -E '.md$'); do
target="$(echo $file | source_to_target)"
export CONTENT="$(pandoc --from markdown+emoji --wrap=none -i $file)"
export PREFIX=$(realpath --relative-to $(dirname $target) .)
export SIDEBAR=$(for x in ../src/**/*.md; do echo "<li><a href=\"$(echo $PREFIX/$x | source_to_target)\">$(realpath --relative-to ../src/ $x | sed -e 's/.md$//')</a></li>"; done)
mkdir -p $(dirname $target)
cat ../template.tpl | awk -f ../template.awk | bash > $target
awk -f ../template.awk ../template.tpl | bash > $target
done

View file

@ -7,6 +7,6 @@ You can contact me in the following ways:
* Others on request
If you don't know what to contact me about: Try computers graphics, programming, music and trains! You can also talk to me if you want
to talk about trans-topics, or just want to vent about the difficulties of being queer :heart:
to talk about trans-topics, or just want to vent about the difficulties of being queer (see the `queer` page) :heart:
While not a contact channel per se, I can also be found in the fediverse as [@joss@tech.lgbt](https://tech.lgbt/@joss)!

View file

@ -2,7 +2,7 @@
This is a place for me to put links to friendly websites!
* Emil's site: [~emarche](https://www.student.hs-mittweida.de/~emarche)
* Emilian's site: [~emarche](https://www.student.hs-mittweida.de/~emarche)
* My private homepage at [jossco.de](https://jossco.de)
If you want to be here, contact me :grin:

View file

@ -1 +1,9 @@
# Yes.
# Being queer...
...can be an endless struggle, no matter which unique (and totally valid!) flavor of queer one might identify as. If you have any questions about being queer or queer identities in general you can reach out to me, see the `contact` page for more information.
My experience is mostly with being transfeminine, but I can talk about a lot more fields. I also have some ties with the queer community of the university.
Also please note that I am no psychologist, and can't help with everything.
<center>:rainbow_flag:</center>

View file

@ -17,6 +17,8 @@
</div>
<div class="content">
% echo $CONTENT
<hr>
<i>%(Last built $(date -I) on $(hostname)%)</i>
</div>
</body>
</html>