#!/bin/bash
# Regenerate html files.
# If given a single argument, try to regenerate just that file. Not supported everywhere.
set -e
( cd tools; c++ -g linkify.cc -o linkify; )
# generate html/$1.html using /tmp/tags
process() {
mkdir -p html/$(dirname $1)
rm -f html/$1.html
convert_html $1
tools/linkify /tmp/tags $1.html
mv $1.html.out html/$1.html
rm $1.html
}
URL_BASE='https://github.com/akkartik/mu/blob/main'
convert_html() {
vim -c "set number" -c TOhtml -c write -c qall $1
sed -i 's,
.*/mu/,Mu - ,' $1.html
sed -i 's,\.html,,' $1.html
sed -i "/^$URL_BASE/$1" $1.html
sed -i 's/^\* { \(.*\) }/* { font-size:12pt; \1 }/g' $1.html
sed -i 's/^body { \(.*\) }/body { font-size:12pt; \1 }/g' $1.html
sed -i '/^body {/a a { color:inherit; }' $1.html
# switch unicode characters around in the rendered html
# the ones we have in the source files render double-wide in html
# the ones we want in the html cause iTerm2 to slow down in alt-tabbing for some reason
# the following commands give us the best of both worlds
sed -i -e 's/┈/╌/g' -e 's/┊/╎/g' $1.html
}
ctags -x boot.subx [0-9]*.subx [0-9]*.mu > /tmp/tags
for f in boot.subx [0-9]*.subx [0-9]*.mu
do
test $# -gt 0 && test $1 != $f && continue
process $f
done
for f in [^0-9]*.subx [^0-9]*.mu
do
test $# -gt 0 && test $1 != $f && continue
test $f = "boot.subx" && continue
ctags -x boot.subx [0-9]*.subx [0-9]*.mu $f > /tmp/tags
process $f
done
( cd shell
ctags -x ../boot.subx ../[0-9]*.subx ../[0-9]*.mu *.mu > /tmp/tags
)
for f in shell/*.mu
do
test $# -gt 0 && test $1 != shell/$f && continue
process $f
done
( cd linux
ctags -x [0-9]*.subx [0-9]*.mu > /tmp/tags
)
for f in linux/[0-9]*.subx linux/[0-9]*.mu
do
process $f
done
for f in linux/[^0-9]*.subx linux/[^0-9]*.mu
do
( cd $(dirname $f)
ctags -x [0-9]*.subx [0-9]*.mu $(basename $f) > /tmp/tags
)
process $f
done
for f in linux/advent2020/*.mu
do
( cd $(dirname $f)
ctags -x ../[0-9]*.subx ../[0-9]*.mu $(basename $f) > /tmp/tags
)
process $f
done
for dir in linux/raytracing linux/tile
do
( cd $dir
ctags -x ../[0-9]*.subx ../[0-9]*.mu *.mu > /tmp/tags
)
for f in $dir/*.mu
do
process $f
done
done
( cd linux/bootstrap
ctags -x *.cc |grep -v '^. ' > /tmp/tags # don't hyperlink every 'i' to the integer register variant
)
for f in linux/bootstrap/*.cc
do
process $f
done
rm /tmp/tags