From bc6d80e01f113b91405e2aac626db0178b1aa210 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Sun, 5 Feb 2017 16:42:55 -0700 Subject: [PATCH] add install.sh, derp --- install.sh | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100755 install.sh diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..7e8fd51 --- /dev/null +++ b/install.sh @@ -0,0 +1,81 @@ +#! /bin/sh -e + +DESTDIR=$1 + +if [ -z "$DESTDIR" ]; then + echo "Usage: $0 DESTDIR" + exit +fi + +cd $(dirname $0) + +older () { + [ -z "$1" ] && return 1 + target=$1; shift + [ -f $target ] || return 0 + for i in "$@"; do + [ $i -nt $target ] && return 0 + done + return 1 +} + +copy () { + src=$1 + target=$2/$src + targetdir=$(dirname $target) + if older $target $src; then + echo "COPY $src" + mkdir -p $targetdir + cp $src $target + fi +} + +setup() { + [ -d $DESTDIR/state ] && return + echo "SETUP" + for i in points.new points.tmp teams; do + dir=$DESTDIR/state/$i + mkdir -p $dir + setfacl -m ${www}:rwx $dir + done + mkdir -p $DESTDIR/packages + >> $DESTDIR/state/points.log + if ! [ -f $DESTDIR/assigned.txt ]; then + hd $DESTDIR/assigned.txt + fi + + ln -sf ../state/points.json $DESTDIR/www + ln -sf ../state/puzzles.json $DESTDIR/www +} + + +echo "Figuring out web user..." +for www in www-data http tc _ _www; do + id $www && break +done +if [ $www = _ ]; then + echo "Unable to determine httpd user on this system. Dying." + exit 1 +fi + +mkdir -p $DESTDIR || exit 1 + +setup +git $SRCDIR ls-files | while read fn; do + case "$fn" in + example-puzzles/*|tools/*|docs/*|install.sh|setup.cfg|README.md|.gitignore|src/mothd) + true # skip + ;; + www/*) + copy $fn $DESTDIR/ + ;; + bin/*) + copy $fn $DESTDIR/ + ;; + *) + echo "??? $fn" + ;; + esac +done + +echo "All done installing."