|
|
|
#!/bin/false Tohle je knihovna, nemá se spouštět, ale načítat pomocí source(1) nebo '.'
|
|
|
|
|
|
|
|
PYTHON="${PYTHON:-python3}"
|
|
|
|
VENV="${VENV:-${PYTHON} -m venv}"
|
|
|
|
VENV_PATH="${VENV_PATH:-env}"
|
|
|
|
BRANCH="${BRANCH:-master}"
|
|
|
|
|
|
|
|
REPO="${REPO:-git@gitea.ks.matfyz.cz:mam/mamweb.git}"
|
|
|
|
GIMLI='gimli.ms.mff.cuni.cz'
|
|
|
|
GIMLI_LOGIN="mam-web@$GIMLI"
|
|
|
|
# Skutečné cesty, jak je vrátí `realpath`
|
|
|
|
PRODWEB="/aux/akce/mam/www/mamweb-prod"
|
|
|
|
TESTWEB="/aux/akce/mam/www/mamweb-test"
|
|
|
|
|
|
|
|
function die {
|
|
|
|
echo "$@" >&2
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
# Vždycky chceme zajistit, že běžíme z rootu repozitáře
|
|
|
|
# TODO: chceme? Nechceme naopak umět to spouštět odkudkoliv, aspoň u většiny targetů?
|
|
|
|
test -d '.git' || die "Make skript spuštěn ve špatné složce, spusť ho z kořenového adresáře repozitáře."
|
|
|
|
|
|
|
|
function ensure_venv {
|
|
|
|
test -f "$VENV_PATH/bin/activate" || $VENV "$VENV_PATH"
|
|
|
|
. "$VENV_PATH/bin/activate"
|
|
|
|
}
|
|
|
|
|
|
|
|
function gimli_only {
|
|
|
|
# Rovnou zkontrolujeme i uživatele
|
|
|
|
if test "$HOSTNAME" != gimli -o "$USER" != mam-web
|
|
|
|
then
|
|
|
|
echo "Tento příkaz se má spouštět na gimlim, chceš pokračovat? Pokud ne, sestřel tento skript."
|
|
|
|
read
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function only_in_directory {
|
|
|
|
local DIR="$1"
|
|
|
|
local CURRENT="$(readlink -f .)"
|
|
|
|
if test "$CURRENT" != "$DIR"
|
|
|
|
then
|
|
|
|
echo "Tento příkaz se má spouštět ve složce $DIR, chceš pokračovat? Pokud ne, sestřel tento skript."
|
|
|
|
read
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function safe_checkout_branch {
|
|
|
|
if "$#" -ne 2
|
|
|
|
then
|
|
|
|
echo >&2 "Použití: $0 <branch> <current-script>"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
local BRANCH="$1"
|
|
|
|
local SCRIPT="$2"
|
|
|
|
|
|
|
|
echo "Debug: I am $0, $SCRIPT as param"
|
|
|
|
|
|
|
|
git fetch --all
|
|
|
|
# Od teď si musíme dát pozor, abychom nezměnili kód, který právě běží.
|
|
|
|
# Zkontrolujeme, že se nemění tahle knihovna a skript, který běží.
|
|
|
|
if test $(git rev-parse @:make/lib.sh) != $(git rev-parse "$BRANCH":make/lib.sh)
|
|
|
|
then
|
|
|
|
echo >&2 "Změna v make/lib.sh, prosím pullni manuálně"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if test $(git rev-parse @:"$SCRIPT") != $(git rev-parse "$BRANCH":"$SCRIPT")
|
|
|
|
then
|
|
|
|
echo >&2 "Změna v $SCRIPT, prosím pullni manuálně"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
git checkout "$BRANCH"
|
|
|
|
git pull
|
|
|
|
git clean -f
|
|
|
|
}
|
|
|
|
|
|
|
|
function install_everything {
|
|
|
|
# Skoro celé nasazení webu je stejné pro testweb i pro produkci, tak je to tady dohromady
|
|
|
|
ensure_venv
|
|
|
|
make/install
|
|
|
|
./manage.py migrate
|
|
|
|
./manage.py collectstatic --noinput
|
|
|
|
chown -R :mam . || true
|
|
|
|
chmod -R g+rX,go-w . || true
|
|
|
|
}
|
|
|
|
|