homepage/install

96 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
DESTDIR=${1:-/home/neale/public_html}
GOPATH=$HOME/go export GOPATH
cd $(dirname $0)
older () {
tgt=$1
[ -f "$tgt" ] || return 0
for src in "$@"; do
[ "$src" -nt "$tgt" ] && return 0
done
return 1
}
html () {
target=$DESTDIR/${1%md}html
if older $target $1 tmpl/*; then
echo "HTML $1"
mkdir -p $(dirname $target)
./tmpl/mdwntohtml < $1 > $target
fi
}
copy () {
target=$DESTDIR/$1
if older $target $1; then
echo "COPY $1"
mkdir -p $(dirname $target)
cp $1 $target
fi
}
cc () {
target=$DESTDIR/${1%.c}
if older $target $1; then
echo "CC $1"
gcc -o $target $1
fi
}
gc () {
target=$DESTDIR/${1%.go}
if older $target $1; then
echo "GO $1"
go build -o $target $1
fi
}
setuid () {
target=$DESTDIR/${1%.*}
if ! [ -u $target ]; then
echo "SETUID $target"
chmod u+s $target
fi
}
install () {
fd=$(dirname $fn)
echo "SUBINSTALL $fd"
(cd $fd && ./install $DESTDIR/$fd)
}
git ls-files | while read fn; do
case "$fn" in
.*|*/.*|*~|install)
true # Skip
;;
*/install)
install $fn
;;
trigger.cgi.go|g.cgi.go)
gc $fn
setuid $fn
;;
*.md)
html $fn
;;
*.cgi.c)
cc $fn
;;
*.cgi.go)
gc $fn
;;
*)
copy $fn
;;
esac
done