website/build.sh

65 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
set -euf
NL='
'
IFS="$NL"
POSIXLY_CORRECT=1
cd "$GIT_WORK_TREE"
while getopts :c OPT; do
case "$OPT" in
c) rm -rf ./build; exit 0 ;;
*) exit 1 ;;
esac
done
KEYWORDS="$(ls -w 1 "./BUILDING-HTML/")"
# build dir structure
fd -E '/build' -E '/BUILDING-HTML' -t d -x mkdir -p build/{}
# copy files
fd -E '/build' -E '/BUILDING-HTML' -E 'LICENSE' -E 'build.sh' -t f -x cp {} build/{}
# first do html
for file in $(fd -t f -e html -d 1 . ".") ; do
file2="./build/${file##*/}"
tmp="$(cat "$file")"
for k in $KEYWORDS; do
case $k in
titlebar.html|head.html)
# grab var line
line="$(rg -e '\t*<!-- RES '"$k"' (.+) -->' -r '$1' <<-EOF
$tmp
EOF
)" || continue
# set params
IFS=":"
set -- $line
IFS=" $NL"
rep="$(cat "./BUILDING-HTML/$k")"
# replace vars
for j in $@; do
rep="$(sed -e "s/var-${j%%=*}/${j#*=}/g" <<-EOF
$rep
EOF
)"
done
# final replacement
tmp="$(sd "<!-- RES $k .+ -->" "${rep}" <<-EOF
$tmp
EOF
)"
;;
*)
tmp="$(sed -e "/<!-- RES $k -->/r ./BUILDING-HTML/$k" -e "//d" <<-EOF
$tmp
EOF
)"
;;
esac
done
printf '%s' "$tmp" > "$file2"
done