Compare commits
4 commits
bfb6544b09
...
d353f2e5e6
Author | SHA1 | Date | |
---|---|---|---|
d353f2e5e6 | |||
5794cc38f7 | |||
5d0cbfc000 | |||
c99afd569d |
4 changed files with 56 additions and 3 deletions
53
README.md
Normal file
53
README.md
Normal 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.
|
4
build.sh
4
build.sh
|
@ -5,12 +5,12 @@ source_to_target() { sed -E -e 's:\.\./src/:\./:' -e 's/.md$/.html/'; }
|
||||||
shopt -s globstar
|
shopt -s globstar
|
||||||
rm -rf dist/
|
rm -rf dist/
|
||||||
mkdir dist&&cd dist
|
mkdir dist&&cd dist
|
||||||
cp ../style.css .
|
cp -r ../static/* .
|
||||||
for file in $(du -a ../src/ | cut -f2 | grep -E '.md$'); do
|
for file in $(du -a ../src/ | cut -f2 | grep -E '.md$'); do
|
||||||
target="$(echo $file | source_to_target)"
|
target="$(echo $file | source_to_target)"
|
||||||
export CONTENT="$(pandoc --from markdown+emoji --wrap=none -i $file)"
|
export CONTENT="$(pandoc --from markdown+emoji --wrap=none -i $file)"
|
||||||
export PREFIX=$(realpath --relative-to $(dirname $target) .)
|
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)
|
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)
|
mkdir -p $(dirname $target)
|
||||||
cat ../template.tpl | awk -f ../template.awk | bash > $target
|
awk -f ../template.awk ../template.tpl | bash > $target
|
||||||
done
|
done
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
This is a place for me to put links to friendly websites!
|
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)
|
* My private homepage at [jossco.de](https://jossco.de)
|
||||||
|
|
||||||
If you want to be here, contact me :grin:
|
If you want to be here, contact me :grin:
|
||||||
|
|
Loading…
Reference in a new issue