#!/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