2010-03-18 15:46:07 +00:00
|
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
2010-03-29 13:21:24 +00:00
|
|
|
|
msg()
|
|
|
|
|
{
|
2010-03-29 13:22:29 +00:00
|
|
|
|
echo "[1m$*[m"
|
2010-03-29 13:21:24 +00:00
|
|
|
|
}
|
|
|
|
|
|
2010-03-29 13:46:47 +00:00
|
|
|
|
self=`cksum "$0"`
|
2010-03-29 13:21:24 +00:00
|
|
|
|
checkself()
|
|
|
|
|
{
|
2010-03-29 13:46:47 +00:00
|
|
|
|
self_new=`cksum "$0"`
|
2010-03-29 13:21:24 +00:00
|
|
|
|
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
|
2010-03-31 11:27:14 +00:00
|
|
|
|
exec "$0" "$@"
|
2010-03-29 13:21:24 +00:00
|
|
|
|
else
|
|
|
|
|
msg "Please try $0 update, and then retry your requested operation."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
fi
|
2010-03-29 13:24:49 +00:00
|
|
|
|
return 0
|
2010-03-29 13:21:24 +00:00
|
|
|
|
}
|
2010-03-29 13:17:50 +00:00
|
|
|
|
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose()
|
|
|
|
|
{
|
2010-03-29 13:21:24 +00:00
|
|
|
|
msg "+ $*"
|
2010-03-26 08:18:04 +00:00
|
|
|
|
"$@"
|
|
|
|
|
}
|
|
|
|
|
|
2010-03-26 07:59:06 +00:00
|
|
|
|
repos_urls="
|
2010-03-20 13:23:39 +00:00
|
|
|
|
.
|
2010-03-18 15:46:07 +00:00
|
|
|
|
data/xonotic-data.pk3dir
|
|
|
|
|
data/xonotic-maps.pk3dir
|
|
|
|
|
data/xonotic-music.pk3dir
|
2010-03-23 12:17:13 +00:00
|
|
|
|
data/xonotic-nexcompat.pk3dir
|
2010-03-18 15:46:07 +00:00
|
|
|
|
darkplaces
|
2010-03-26 07:59:06 +00:00
|
|
|
|
fteqcc@git://github.com/Blub/qclib.git
|
2010-03-31 07:18:59 +00:00
|
|
|
|
div0-gittools@git://git.icculus.org/divverent/div0-gittools.git
|
2010-04-02 13:18:46 +00:00
|
|
|
|
netradiant
|
2010-03-18 15:46:07 +00:00
|
|
|
|
"
|
|
|
|
|
|
2010-03-26 07:59:06 +00:00
|
|
|
|
repos=`for X in $repos_urls; do echo "${X%%@*}"; done`
|
|
|
|
|
|
2010-03-18 15:57:21 +00:00
|
|
|
|
if [ "$#" = 0 ]; then
|
|
|
|
|
set -- help
|
|
|
|
|
fi
|
2010-03-18 15:46:07 +00:00
|
|
|
|
cmd=$1
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
|
|
d0=`pwd`
|
|
|
|
|
case "$cmd" in
|
2010-03-20 13:20:07 +00:00
|
|
|
|
update|pull)
|
2010-03-18 15:46:07 +00:00
|
|
|
|
base=`git config remote.origin.url`
|
2010-03-22 13:25:30 +00:00
|
|
|
|
base=${base%xonotic.git}
|
2010-03-26 07:59:06 +00:00
|
|
|
|
for dcomplete in $repos_urls; do
|
|
|
|
|
case "$dcomplete" in
|
|
|
|
|
*@*)
|
|
|
|
|
d=${dcomplete%%@*}
|
|
|
|
|
url=${dcomplete#*@}
|
|
|
|
|
switch=false
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
d=${dcomplete%%@*}
|
|
|
|
|
url=$base${d##*/}.git
|
|
|
|
|
switch=true
|
|
|
|
|
;;
|
|
|
|
|
esac
|
2010-03-18 15:46:07 +00:00
|
|
|
|
if [ -d "$d0/$d" ]; then
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose cd "$d0/$d"
|
2010-03-20 13:29:27 +00:00
|
|
|
|
case "$d" in
|
|
|
|
|
.)
|
|
|
|
|
;;
|
|
|
|
|
*)
|
2010-03-26 07:59:06 +00:00
|
|
|
|
if $switch; then
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git config remote.origin.url "$url"
|
2010-03-26 07:59:06 +00:00
|
|
|
|
fi
|
2010-03-20 13:29:27 +00:00
|
|
|
|
;;
|
|
|
|
|
esac
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git pull
|
2010-03-29 13:21:24 +00:00
|
|
|
|
cd "$d0"
|
2010-03-29 13:24:49 +00:00
|
|
|
|
checkself "$0" "$@"
|
2010-03-29 13:21:24 +00:00
|
|
|
|
cd "$d0/$d"
|
2010-03-28 18:55:16 +00:00
|
|
|
|
verbose git remote prune origin
|
2010-03-18 15:46:07 +00:00
|
|
|
|
cd "$d0"
|
|
|
|
|
else
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git clone "$url" "$d0/$d"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
;;
|
2010-03-24 14:09:55 +00:00
|
|
|
|
checkout|switch)
|
2010-03-18 15:46:07 +00:00
|
|
|
|
remote=$1
|
|
|
|
|
branch=$2
|
|
|
|
|
if [ -z "$branch" ]; then
|
|
|
|
|
branch=$remote
|
|
|
|
|
remote=origin
|
|
|
|
|
fi
|
|
|
|
|
exists=false
|
|
|
|
|
for d in $repos; do
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose cd "$d0/$d"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then
|
|
|
|
|
exists=true
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git checkout "$branch"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
elif git rev-parse "refs/remotes/$remote/$branch" >/dev/null 2>&1; then
|
|
|
|
|
exists=true
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git checkout --track -b "$branch" "$remote/$branch"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
else
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git checkout master
|
2010-03-18 15:46:07 +00:00
|
|
|
|
fi
|
|
|
|
|
cd "$d0"
|
2010-03-29 13:24:49 +00:00
|
|
|
|
checkself "$0" "$@"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
done
|
2010-03-26 08:18:04 +00:00
|
|
|
|
if ! $exists; then
|
|
|
|
|
echo "The requested branch was not found in any repository."
|
|
|
|
|
fi
|
2010-03-18 15:46:07 +00:00
|
|
|
|
"$0" branch
|
|
|
|
|
;;
|
|
|
|
|
branch)
|
2010-03-20 13:23:39 +00:00
|
|
|
|
remote=$1
|
|
|
|
|
branch=$2
|
|
|
|
|
if [ -z "$branch" ]; then
|
|
|
|
|
branch=$remote
|
|
|
|
|
remote=origin
|
|
|
|
|
fi
|
|
|
|
|
if [ -z "$branch" ]; then
|
2010-03-20 13:14:50 +00:00
|
|
|
|
for d in $repos; do
|
|
|
|
|
cd "$d0/$d"
|
|
|
|
|
r=`git symbolic-ref HEAD`
|
|
|
|
|
r=${r#refs/heads/}
|
|
|
|
|
echo "$d is at $r"
|
|
|
|
|
cd "$d0"
|
|
|
|
|
done
|
|
|
|
|
else
|
|
|
|
|
for d in $repos; do
|
|
|
|
|
cd "$d0/$d"
|
|
|
|
|
a=
|
|
|
|
|
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
|
2010-04-02 18:09:03 +00:00
|
|
|
|
echo "Branch in \"$d\"?"
|
2010-03-20 13:14:50 +00:00
|
|
|
|
read -r a
|
|
|
|
|
done
|
2010-03-20 13:23:39 +00:00
|
|
|
|
if [ x"$a" = x"y" ]; then
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git push "$remote" HEAD:"$branch"
|
|
|
|
|
verbose git checkout --track -b "$branch" "$remote/$branch"
|
2010-03-20 13:14:50 +00:00
|
|
|
|
fi
|
|
|
|
|
cd "$d0"
|
|
|
|
|
done
|
|
|
|
|
"$0" branch
|
|
|
|
|
fi
|
2010-03-18 15:46:07 +00:00
|
|
|
|
;;
|
|
|
|
|
branches)
|
|
|
|
|
for d in $repos; do
|
|
|
|
|
cd "$d0/$d"
|
|
|
|
|
echo "In $d:"
|
2010-03-24 12:11:30 +00:00
|
|
|
|
git branch -a | sed 's/^/ /; /->/d'
|
2010-03-18 15:46:07 +00:00
|
|
|
|
cd "$d0"
|
|
|
|
|
done
|
|
|
|
|
;;
|
2010-03-20 13:20:07 +00:00
|
|
|
|
push)
|
|
|
|
|
for d in $repos; do
|
|
|
|
|
cd "$d0/$d"
|
|
|
|
|
r=`git symbolic-ref HEAD`
|
|
|
|
|
r=${r#refs/heads/}
|
|
|
|
|
a=
|
2010-04-02 18:09:03 +00:00
|
|
|
|
if git diff HEAD | grep .; then
|
|
|
|
|
# we have uncommitted changes
|
|
|
|
|
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
|
|
|
|
|
echo "Uncommitted changes in \"$r\" in \"$d\". Commit?"
|
|
|
|
|
read -r a
|
|
|
|
|
done
|
|
|
|
|
if [ x"$a" = x"y" ]; then
|
|
|
|
|
verbose git commit -a
|
|
|
|
|
fi
|
|
|
|
|
fi
|
2010-03-20 13:23:39 +00:00
|
|
|
|
if git log "origin/$r".."$r" | grep .; then
|
|
|
|
|
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
|
2010-04-02 18:09:03 +00:00
|
|
|
|
echo "Push \"$r\" in \"$d\"?"
|
2010-03-20 13:23:39 +00:00
|
|
|
|
read -r a
|
|
|
|
|
done
|
|
|
|
|
if [ x"$a" = x"y" ]; then
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose git push `git config "branch.$r.remote" || echo origin` HEAD
|
2010-03-20 13:23:39 +00:00
|
|
|
|
fi
|
2010-03-20 13:20:07 +00:00
|
|
|
|
fi
|
|
|
|
|
cd "$d0"
|
|
|
|
|
done
|
|
|
|
|
;;
|
2010-03-24 12:11:30 +00:00
|
|
|
|
compile)
|
2010-03-26 08:18:04 +00:00
|
|
|
|
if [ -z "$MAKEFLAGS" ]; then
|
|
|
|
|
if [ -f /proc/cpuinfo ]; then
|
|
|
|
|
ncpus=$((`grep -c '^processor :' /proc/cpuinfo`+0))
|
|
|
|
|
if [ $ncpus -gt 1 ]; then
|
|
|
|
|
MAKEFLAGS=-j$ncpus
|
2010-03-25 08:18:19 +00:00
|
|
|
|
fi
|
|
|
|
|
fi
|
2010-03-26 08:18:04 +00:00
|
|
|
|
fi
|
|
|
|
|
verbose cd "$d0/fteqcc"
|
|
|
|
|
verbose make $MAKEFLAGS
|
|
|
|
|
verbose cd "$d0/data/xonotic-data.pk3dir"
|
|
|
|
|
verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" $MAKEFLAGS
|
|
|
|
|
verbose cd "$d0/darkplaces"
|
|
|
|
|
verbose make $MAKEFLAGS sv-debug
|
|
|
|
|
verbose make $MAKEFLAGS cl-debug
|
|
|
|
|
verbose make $MAKEFLAGS sdl-debug
|
2010-03-25 08:18:19 +00:00
|
|
|
|
;;
|
|
|
|
|
run)
|
|
|
|
|
client=-sdl
|
|
|
|
|
case "$1" in
|
|
|
|
|
sdl|glx|agl|dedicated)
|
|
|
|
|
client=-$1
|
|
|
|
|
shift
|
|
|
|
|
;;
|
|
|
|
|
wgl)
|
|
|
|
|
client=
|
|
|
|
|
shift
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
if ! [ -x "darkplaces/darkplaces$client" ]; then
|
|
|
|
|
if [ -x "darkplaces/darkplaces$client.exe" ]; then
|
|
|
|
|
client=$client.exe
|
|
|
|
|
else
|
|
|
|
|
echo "Client darkplaces/darkplaces$client not found, aborting"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
fi
|
2010-03-29 06:36:55 +00:00
|
|
|
|
#verbose "darkplaces/darkplaces$client" -xonotic "$@"
|
|
|
|
|
verbose "darkplaces/darkplaces$client" -nexuiz -customgamename Xonotic -customgamedirname1 data -customgamedirname2 "" -customgamescreenshotname xonotic -customgameuserdirname xonotic "$@"
|
2010-03-24 12:11:30 +00:00
|
|
|
|
;;
|
2010-03-25 14:40:42 +00:00
|
|
|
|
each|foreach)
|
2010-03-25 14:37:47 +00:00
|
|
|
|
for d in $repos; do
|
2010-03-26 08:18:04 +00:00
|
|
|
|
verbose cd "$d0/$d"
|
|
|
|
|
verbose "$@"
|
2010-03-25 14:37:47 +00:00
|
|
|
|
cd "$d0"
|
|
|
|
|
done
|
|
|
|
|
;;
|
2010-03-18 15:46:07 +00:00
|
|
|
|
*)
|
|
|
|
|
echo "Usage:"
|
2010-03-20 13:20:07 +00:00
|
|
|
|
echo " $0 pull"
|
|
|
|
|
echo " $0 push"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
echo " $0 branches"
|
2010-03-24 14:05:11 +00:00
|
|
|
|
echo " $0 branch <remote> <branchname>"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
echo " $0 checkout"
|
2010-03-24 14:03:38 +00:00
|
|
|
|
echo " $0 compile"
|
2010-03-25 08:18:19 +00:00
|
|
|
|
echo " $0 run <client> <options>"
|
2010-03-25 14:37:47 +00:00
|
|
|
|
echo " $0 each <command>"
|
2010-03-18 15:46:07 +00:00
|
|
|
|
;;
|
|
|
|
|
esac
|