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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

118 lines
3.0 KiB

#!/bin/bash
# Based on ksp/web/tools/deploy
set -e
die ()
{
echo >&2 "ERROR: $1"
exit 1
}
get_git_branch ()
{
CURRENT_BRANCH=$(git symbolic-ref --short HEAD) || die "HEAD is not a symbolic ref. Your head is probably detached."
}
check_git_pushed ()
{
if ! $(git diff --quiet) || ! $(git diff --cached --quiet) ; then
if [ -n "$KSP_FORCE_DIFF" ] ; then
echo "## WARNING: There are uncommitted changes, but KSP_FORCE_DIFF makes us proceed."
else
git status
die "There are uncommitted changes. Set KSP_FORCE_DIFF=1 if you really want to install."
fi
fi
if [ $(git rev-parse $CURRENT_BRANCH) != $(git rev-parse origin/$CURRENT_BRANCH) ] ; then
if [ -n "$KSP_FORCE_PUSHED" ] ; then
echo "## WARNING: There are unpushed changes, but KSP_FORCE_PUSHED makes us proceed."
else
die "There are unpushed changes. Set KSP_FORCE_PUSHED=1 if you really know what you are doing."
fi
fi
}
check_git_branch ()
{
local NEED=$1
if [ $CURRENT_BRANCH != $NEED ] ; then
if [ -n "$KSP_FORCE_BRANCH" ] ; then
echo "## WARNING: Not on branch $NEED, but KSP_FORCE_BRANCH makes us proceed."
else
die "Public web must be installed from branch '$NEED'. Set KSP_FORCE_BRANCH=1 if you really want to install from '$CURRENT_BRANCH'."
fi
fi
}
QUICK=
if [ "$1" = "--quick" ] ; then
QUICK=1
shift
fi
if [ $# -ne 1 -a $# -ne 2 -o "${1:0:1}" = "-" ] ; then
echo >&2 "Usage: $(basename $0) [--quick] <instance> [<commit>]"
exit 1
fi
INST="$1"
COMMIT="$2"
get_git_branch
case "$INST" in
test) REMOTE_LOGIN="ksp-web@gimli.ms.mff.cuni.cz"
REMOTE_PATH=/akce/ksp/testweb
;;
pub) REMOTE_LOGIN="ksp-web@gimli.ms.mff.cuni.cz"
REMOTE_PATH=/akce/ksp/web
check_git_branch master
;;
*) die "Unknown web instance $INST."
;;
esac
if [ -z "$COMMIT" ] ; then
COMMIT=$(git rev-parse HEAD)
echo "## Installing branch $CURRENT_BRANCH (head $COMMIT) to web instance $INST"
else
COMMIT=$(git rev-parse $COMMIT)
echo "## Installing commit $COMMIT to web instance $INST"
fi
check_git_pushed
if [ -n "$QUICK" ] ; then
echo "## WARNING: This is an incremental build"
fi
# XXX: Beware of quotes!
ssh -t $REMOTE_LOGIN "
set -e
cd $REMOTE_PATH
echo '## Obtaining installation lock'
# XXX: Keep in sync with ksp/tools/deploy
if ! lockfile -1 -r10 $REMOTE_PATH/install.lock ; then
echo '## Failed to obtain $REMOTE_PATH/install.lock, please check manually'
exit 1
fi
install_unlock () {
if [ -f $REMOTE_PATH/install.lock ] ; then
echo '## Releasing installation lock'
rm -f $REMOTE_PATH/install.lock
fi
}
trap install_unlock SIGINT SIGHUP EXIT
if [ -d kurz-src ] ; then
echo '## Updating from repository'
( cd kurz-src && git fetch )
else
echo '## Cloning repository'
git clone --quiet --no-checkout git@gitea.ks.matfyz.cz:KSP/graf-uloh.git kurz-src
fi
echo '## Checking out files'
if [ -z '$QUICK' ] ; then
rm -rf kurz-src/*
( cd kurz-src && git checkout --quiet $COMMIT && git reset --hard )
else
( cd kurz-src && git checkout --quiet $COMMIT )
fi
( cd kurz-src/frontend && tools/deploy-local )
"