xonotic/all
Rudolf Polzer d931065aa3 ./all compile and ./all run -nexuiz now work.
Once xonotic is in DP's game list, ./all run will work too.
2010-03-26 09:18:04 +01:00

208 lines
3.9 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
set -e
verbose()
{
echo "+ $@"
"$@"
}
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
verbose cd "$d0/$d"
case "$d" in
.)
;;
*)
if $switch; then
verbose git config remote.origin.url "$url"
fi
;;
esac
verbose git pull
cd "$d0"
else
verbose git clone "$url" "$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
verbose cd "$d0/$d"
if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then
exists=true
verbose git checkout "$branch"
elif git rev-parse "refs/remotes/$remote/$branch" >/dev/null 2>&1; then
exists=true
verbose git checkout --track -b "$branch" "$remote/$branch"
else
verbose git checkout master
fi
cd "$d0"
done
if ! $exists; then
echo "The requested branch was not found in any repository."
fi
"$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
verbose git push "$remote" HEAD:"$branch"
verbose 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
verbose git push `git config "branch.$r.remote" || echo origin` HEAD
fi
fi
cd "$d0"
done
;;
compile)
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
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
;;
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
verbose "darkplaces/darkplaces$client" -xonotic $@
;;
each|foreach)
for d in $repos; do
verbose cd "$d0/$d"
verbose "$@"
cd "$d0"
done
;;
*)
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>"
echo " $0 each <command>"
;;
esac