nutools/update-nutools

95 lines
2.5 KiB
Plaintext
Raw Normal View History

2013-10-24 16:03:50 +04:00
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
2013-10-28 14:33:14 +04:00
SCRIPTNAME=update-nutools
TMPSCRIPT="/tmp/$SCRIPTNAME"
PRIV_REPO=http://vcs.univ.run/anongit/modules/nutools.git
PUB_REPO=http://vcs.univ-reunion.fr/anongit/modules/nutools.git
2013-10-24 16:03:50 +04:00
NAME=nutools
################################################################################
if [ $# -eq 1 -a "$1" == --help ]; then
echo "update-nutools: mettre à jour nutools
USAGE:
update-nutools [--develop]
OPTIONS
-d, --develop
Mettre à jour avec la branche develop pour avoir les dernières fonctions
qui ne sont pas encore stabilisées. Par défaut, la mise à jour est faite
avec la branche master."
exit 0
fi
[ -z "$update_nutools_use_proxy" ] && export http_proxy=
CURL="$(which curl 2>/dev/null)"
WGET="$(which wget 2>/dev/null)"
if [ -n "$NUTOOLS_REPO" ]; then
REPO="$NUTOOLS_REPO"
elif [ -n "$CURL" ]; then
if curl -fs "$PRIV_REPO" >&/dev/null; then
REPO="$PRIV_REPO"
else
REPO="$PUB_REPO"
fi
elif [ -n "$WGET" ]; then
if wget -q -O - "$PRIV_REPO" >&/dev/null; then
REPO="$PRIV_REPO"
else
REPO="$PUB_REPO"
fi
else
REPO="$PUB_REPO"
echo "\
WARN: impossible de déterminer la source pour la mise à jour.
sélection de l'adresse publique $PUB_REPO"
echo "\
NOTE: si une erreur se produit, utiliser l'adresse privée, e.g.
NUTOOLS_REPO=$PRIV_REPO $0"
fi
case "$1" in
-d|--d|--dev|--develop) develop=develop;;
*) develop=;;
esac
scriptdir="$(dirname "$0")"
if [ $# -ne 3 -o "$1" != --do-update ]; then
2013-10-28 14:33:14 +04:00
cp "$0" "$TMPSCRIPT"
2013-10-24 16:03:50 +04:00
chmod 755 "$TMPSCRIPT"
exec bash "$TMPSCRIPT" --do-update "$scriptdir" "$develop"
fi
scriptdir="$2"
develop="$3"
clonerepo=
2014-04-11 17:03:02 +04:00
if [ -z "$NUTOOLS_REPO" -a -f "$scriptdir/.nutools-devel" -a -d "$scriptdir/.git" ]; then
echo "NOTE: tentative de mise à jour du dépôt local"
cd "$scriptdir"
git pull || clonerepo=1
else
clonerepo=1
fi
if [ -n "$clonerepo" ]; then
echo "NOTE: clonage du dépôt distant $REPO"
cd /tmp
rm -rf "$NAME"
git clone --depth 1 ${develop:+--branch "$develop"} "$REPO" || exit 1
cd "$NAME"
2013-10-24 16:03:50 +04:00
fi
2013-10-28 14:33:14 +04:00
if ! diff -q "$SCRIPTNAME" "$0"; then
echo "NOTE: Le script $SCRIPTNAME a été mis à jour. Il va être relancé."
exec bash "./$SCRIPTNAME" ${develop:+--develop}
fi
bash ./uinst -y || exit 1
if [ -n "$clonerepo" ]; then
cd ..
rm -rf "$NAME"
fi
2014-07-07 22:06:38 +04:00
# IMPORTANT: la ligne suivante ne doit pas se terminer par un retour à la ligne:
rm "$0"; exit 0