mirror of
https://gitlab.com/xonotic/xonotic
synced 2024-12-15 19:35:24 +00:00
119 lines
1.9 KiB
Bash
Executable File
119 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
||
# vim: filetype=zsh
|
||
|
||
set -e
|
||
if [ -n "$ZSH_VERSION" ]; then
|
||
setopt SH_WORD_SPLIT
|
||
fi
|
||
if [ -z "$ECHO" ]; then
|
||
if echo "\\\\" | grep .. >/dev/null; then
|
||
ECHO=echo
|
||
else
|
||
ECHO=`which echo`
|
||
fi
|
||
fi
|
||
|
||
# I use this in EVERY shell script ;)
|
||
LF="
|
||
"
|
||
ESC=""
|
||
|
||
d00=`pwd`
|
||
while ! [ -f ./all ]; do
|
||
if [ x"`pwd`" = x"/" ]; then
|
||
$ECHO "Cannot find myself."
|
||
$ECHO "Please run this script with the working directory inside a Xonotic checkout."
|
||
exit 1
|
||
fi
|
||
cd ..
|
||
done
|
||
export d0=`pwd`
|
||
SELF="$d0/all"
|
||
|
||
# If we are on WINDOWS:
|
||
case "$0" in
|
||
all|*/all)
|
||
case "`uname`" in
|
||
MINGW*|Win*)
|
||
# Windows hates users. So this script has to copy itself elsewhere first...
|
||
cp "$SELF" ../all.xonotic.sh
|
||
export WE_HATE_OUR_USERS=1
|
||
exec ../all.xonotic.sh "$@"
|
||
;;
|
||
esac
|
||
;;
|
||
esac
|
||
|
||
msg()
|
||
{
|
||
$ECHO >&2 "$ESC""[1m$*$ESC""[m"
|
||
}
|
||
|
||
self=`git hash-object "$SELF"`
|
||
checkself()
|
||
{
|
||
self_new=`git hash-object "$SELF"`
|
||
if [ x"$self" != x"$self_new" ]; then
|
||
msg "./all has changed."
|
||
if [ -z "$XONOTIC_FORBID_RERUN_ALL" ]; then
|
||
msg "Rerunning the requested operation to make sure."
|
||
export XONOTIC_FORBID_RERUN_ALL=1
|
||
exec "$SELF" "$@"
|
||
else
|
||
msg "Please try $SELF update, and then retry your requested operation."
|
||
exit 1
|
||
fi
|
||
fi
|
||
return 0
|
||
}
|
||
|
||
verbose()
|
||
{
|
||
msg "+ $*"
|
||
"$@"
|
||
}
|
||
|
||
yesno()
|
||
{
|
||
yesno=
|
||
while [ x"$yesno" != x"y" -a x"$yesno" != x"n" ]; do
|
||
eval "$2"
|
||
$ECHO "$1"
|
||
if ! IFS= read -r yesno; then
|
||
yesno=n
|
||
break
|
||
fi
|
||
done
|
||
[ x"$yesno" = x"y" ]
|
||
}
|
||
|
||
enter()
|
||
{
|
||
$2 cd "$1" || exit 1
|
||
check_mergeconflict "$1" # defined in git.subr
|
||
}
|
||
|
||
if [ "$#" = 0 ]; then
|
||
set -- help
|
||
fi
|
||
cmd=$1
|
||
shift
|
||
|
||
# project config
|
||
. "$d0/misc/tools/all/config.subr"
|
||
|
||
# shared commands
|
||
handled=false
|
||
. "$d0/misc/tools/all/git.subr" "$@"
|
||
|
||
# optional modules
|
||
$handled || . "$d0/misc/tools/all/release.subr" "$@"
|
||
$handled || . "$d0/misc/tools/all/xonotic.subr" "$@"
|
||
|
||
if ! $handled; then
|
||
if [ x"$cmd" != x"help" ]; then
|
||
$ECHO "Run $SELF help for help."
|
||
exit 1
|
||
fi
|
||
fi
|