You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.6 KiB
69 lines
1.6 KiB
#!/bin/sh
|
|
|
|
# For use in .ssh/authorized keys as, e.g.,
|
|
# command="~/d-i-unpack-helper alpha [30]"
|
|
ARCH="$1"
|
|
NUM_KEEP="$2"
|
|
# Note that if NUM_KEEP is set, d-i-unpack-helper will expect
|
|
# to find daily-build and the rest of the d-i installer/build/ tree in
|
|
# the same directory as itself.
|
|
|
|
if [ -z "$BASEDIR" ]; then
|
|
BASEDIR=public_html/d-i/${ARCH:-images}
|
|
fi
|
|
|
|
if [ -z "$DIR" ]; then
|
|
DIR=$(date -u '+%Y%m%d-%H:%M')
|
|
fi
|
|
|
|
[ -n "$SSH_ORIGINAL_COMMAND" ] || exit 1
|
|
|
|
# Fix up the rsync command for security reasons (letting the user rsync
|
|
# over .ssh would be bad, mmkay)
|
|
# This mangles non-rsync commands quite badly, but since we disallow
|
|
# them below anyway, I don't care. :)
|
|
for WORD in $SSH_ORIGINAL_COMMAND; do
|
|
case $WORD in
|
|
rsync|-*|.)
|
|
SSH_FIXED_COMMAND="$SSH_FIXED_COMMAND $WORD"
|
|
;;
|
|
*)
|
|
SSH_FIXED_COMMAND="$SSH_FIXED_COMMAND $BASEDIR/${DIR}_RSYNC_IN_PROGRESS"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
set -- $SSH_FIXED_COMMAND
|
|
|
|
# Ignore all requests other than rsync (all other fixups are handled on
|
|
# this side when rsync is called)
|
|
bn=$(basename "$1")
|
|
if [ "$bn" != "rsync" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
shift
|
|
|
|
mkdir -p $BASEDIR/${DIR}_RSYNC_IN_PROGRESS
|
|
test ! -d $BASEDIR/daily || cp -a $BASEDIR/daily/* $BASEDIR/${DIR}_RSYNC_IN_PROGRESS/
|
|
rsync $@
|
|
rm -rf $BASEDIR/$DIR
|
|
mv $BASEDIR/${DIR}_RSYNC_IN_PROGRESS $BASEDIR/$DIR
|
|
rm -rf $BASEDIR/daily
|
|
ln -sf $DIR $BASEDIR/daily
|
|
|
|
if [ -n "$NUM_KEEP" ]; then
|
|
cd $BASEDIR
|
|
BASEDIR=$(pwd)
|
|
|
|
MYDIR=$(dirname $0)
|
|
if [ ! -x "$MYDIR/daily-build" ]; then
|
|
echo "$MYDIR/daily-build not found, cannot trim" >&2
|
|
exit 1
|
|
fi
|
|
cd "$MYDIR"
|
|
|
|
export NUM_KEEP
|
|
export BASEDIR
|
|
TRIM_LOG=$BASEDIR/$DIR/trim.log HOST=local ./daily-build trim
|
|
fi
|
|
|