xonotic/all
2010-03-26 08:59:06 +01:00

193 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
set -e
repos_urls="
.
data/xonotic-data.pk3dir
data/xonotic-maps.pk3dir
data/xonotic-music.pk3dir
data/xonotic-nexcompat.pk3dir
darkplaces
fteqcc@git://github.com/Blub/qclib.git
"
repos=`for X in $repos_urls; do echo "${X%%@*}"; done`
if [ "$#" = 0 ]; then
set -- help
fi
cmd=$1
shift
d0=`pwd`
case "$cmd" in
update|pull)
base=`git config remote.origin.url`
base=${base%xonotic.git}
for dcomplete in $repos_urls; do
case "$dcomplete" in
*@*)
d=${dcomplete%%@*}
url=${dcomplete#*@}
switch=false
;;
*)
d=${dcomplete%%@*}
url=$base${d##*/}.git
switch=true
;;
esac
if [ -d "$d0/$d" ]; then
cd "$d0/$d"
case "$d" in
.)
;;
*)
if $switch; then
git config remote.origin.url "$base${d##*/}.git"
fi
;;
esac
git pull
cd "$d0"
else
git clone "$base${d##*/}.git" "$d0/$d"
fi
done
;;
checkout|switch)
remote=$1
branch=$2
if [ -z "$branch" ]; then
branch=$remote
remote=origin
fi
exists=false
for d in $repos; do
cd "$d0/$d"
if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then
exists=true
git checkout "$branch"
elif git rev-parse "refs/remotes/$remote/$branch" >/dev/null 2>&1; then
exists=true
git checkout --track -b "$branch" "$remote/$branch"
else
git checkout master
fi
cd "$d0"
done
"$0" branch
;;
branch)
remote=$1
branch=$2
if [ -z "$branch" ]; then
branch=$remote
remote=origin
fi
if [ -z "$branch" ]; then
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
echo "Branch in $d?"
read -r a
done
if [ x"$a" = x"y" ]; then
git push "$remote" HEAD:"$branch"
git checkout --track -b "$branch" "$remote/$branch"
fi
cd "$d0"
done
"$0" branch
fi
;;
branches)
for d in $repos; do
cd "$d0/$d"
echo "In $d:"
git branch -a | sed 's/^/ /; /->/d'
cd "$d0"
done
;;
push)
for d in $repos; do
cd "$d0/$d"
r=`git symbolic-ref HEAD`
r=${r#refs/heads/}
a=
if git log "origin/$r".."$r" | grep .; then
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
echo "Push $r in $d?"
read -r a
done
if [ x"$a" = x"y" ]; then
git push `git config "branch.$r.remote" || echo origin` HEAD
fi
fi
cd "$d0"
done
;;
compile)
(
cd data/xonotic-data.pk3dir
make $MAKEFLAGS
) || exit $?
(
if [ -z "$MAKEFLAGS" ]; then
if [ -f /proc/cpuinfo ]; then
ncpus=$((`grep -c '^processor :' /proc/cpuinfo`+0))
if [ $ncpus -gt 1 ]; then
MAKEFLAGS=-j$ncpus
fi
fi
fi
cd darkplaces
make $MAKEFLAGS sv-debug
make $MAKEFLAGS cl-debug
make $MAKEFLAGS sdl-debug
) || exit $?
;;
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
exec "darkplaces/darkplaces$client" -xonotic $@
;;
*)
echo "Usage:"
echo " $0 pull"
echo " $0 push"
echo " $0 branches"
echo " $0 branch <remote> <branchname>"
echo " $0 checkout"
echo " $0 compile"
echo " $0 run <client> <options>"
;;
esac