#!/bin/sh
#programme
# Trying to update and switch to another version making the update and compile conveniently
# Author xliu
# history 2009-09-09
# first release
#set the variable pwd
#fina edition fix the bug for interrupting the script with ctrl+c
pwd=~/project
ip="*"
port="*"
#only one user can run the script at the same time
/bin/ps -ef | grep $USER | grep make_wars.sh | grep -v grep|wc -l >${pwd}/num
num=`cat ~/project/num`
if [ "$num" != "1" ]; then
echo "Another person is running ,please wait"
rm -f ${pwd}/num
exit 0
fi
rm -f ${pwd}/num
#load the configure of OS's environment
. ~/.bashrc
#if someone interupts the script,the following code will performance it
if [ -d ${pwd}/common_bak ]
then
/bin/rm -fr ${pwd}/common_bak
echo "Initialize common to p.a.0 because someone interrupted it last time,Please Wait"
sleep 3
cd ${pwd}/common
/usr/local/svn/bin/svn cleanup
/usr/local/svn/bin/svn switch -r HEAD svn://${ip}:${port}/home/svnsource/common/branches/p.a.0
fi
#if someone interupts the script,the following code will performance it
if [ -d ${pwd}/customtags_bak ]
then
/bin/rm -fr ${pwd}/customtags_bak
echo "Initialize customtags to p.b.0 because someone interrupted it last time,Please Wait"
sleep 3
cd ${pwd}/customtags
/usr/local/svn/bin/svn cleanup
/usr/local/svn/bin/svn switch -r HEAD svn://${ip}:${port}/home/svnsource/customtags/branches/p.b.0
fi
#if someone interupts the script,the following code will performance it
if [ -d ${pwd}/flextag_bak ]
then
/bin/rm -fr ${pwd}/flextag_bak
echo "Initialize flextag to p.c.0 because someone interrupted it last time,Please Wait"
sleep 3
cd ${pwd}/flextag
/usr/local/svn/bin/svn cleanup
/usr/local/svn/bin/svn switch -r HEAD svn://${ip}:${port}/home/svnsource/flextag/branches/p.c.0
fi
#shudown the port
echo "Your port is going to be shutdown,please waiting!!"
~/bin/myshutdown.sh
if [ -e ${pwd}/build.prop ] #when the build.prop file exists ,execute the following code
then
#If there is no parameter ,You are needed to pass
if [ $# -eq 0 ]
then
echo "Usage the prameter is needed such as: ./make_wars.sh ttv"
exit
fi
#the main process
for var in $@
do
#get the information from build.prop under ~/project
/bin/cat ${pwd}/build.prop| grep "^${var}" >${pwd}/${var}.txt
if [ "`cat ${pwd}/${var}.txt`" = "" ]
then
echo "The package name does not exist,Please fix it"
rm -f ${pwd}/${var}.txt
~/bin/mystartup.sh
exit
else
cat ${pwd}/${var}.txt|awk -F= '{print $2}'>${pwd}/${var}_info.txt
fi
# for testing whether it is in {dot internal rad rem ttv loc itv afl auf itv}
if [ "${var}" = "auf" -o "${var}" = "afl" -o "${var}" = "dot" -o "${var}" = "internal" -o "${var}" = "rad" -o "${var}" = "rem" -o "${var}" = "ttv" -o "${var}" = "mpm" -o "${var}" = "itv" -o "${var}" = "loc" ]
then
#common package update and switch
awk -F\; '{ print $1 }' ${pwd}/${var}_info.txt >${pwd}/${var}_info_common.txt
awk -F: '{ print $2 }' ${pwd}/${var}_info_common.txt >${pwd}/common_value.txt
branches=`awk -F, '{ print $1 }' ${pwd}/common_value.txt`
if [ "${branches}" = "branches" ]
then
directory=`awk -F, '{print $2}' ${pwd}/common_value.txt`
version=`awk -F, '{print $3}' ${pwd}/common_value.txt`
cd ${pwd}/common
svn cleanup
svn update
cp -r ${pwd}/common ${pwd}/common_bak
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches}/${directory}
elif [ "${branches}" = "tags" ]
then
directory=`awk -F, '{print $2}' ${pwd}/common_value.txt`
version=`awk -F, '{print $3}' ${pwd}/common_value.txt`
cd ${pwd}/common
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/common ${pwd}/common_bak
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches}/${directory} 2>>${pwd}/error.log
elif [ "${branches}" = "trunk" ]
then
version=`awk -F, '{print $2}' ${pwd}/common_value.txt`
cd ${pwd}/common
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/common ${pwd}/common_bak
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches} 2>>${pwd}/error.log
else
echo "No Match,use the default settings"
branches="branches"
directory="p.a.0"
version="head"
cd ${pwd}/common
svn cleanup 2>>${pwd}/error.log
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches}/${directory} 2>>${pwd}/error.log
fi
ant clean 2>>${pwd}/error.log
ant 2>>${pwd}/error.log
#echo "Convet Common Package to the original branches/p.a.0"
#svn switch -r HEAD svn://*:*/home/svnsource/common/branches/p.a.0
#customtags package update and switch
awk -F\; '{ print $2 }' ${pwd}/${var}_info.txt >${pwd}/${var}_info_customtags.txt
awk -F: '{print $2}' ${pwd}/${var}_info_customtags.txt >${pwd}/customtags_value.txt
branches=`awk -F, '{print $1}' ${pwd}/customtags_value.txt`
if [ "${branches}" = "branches" ]
then
directory=`awk -F, '{print $2}' ${pwd}/customtags_value.txt`
version=`awk -F, '{print $3}' ${pwd}/customtags_value.txt`
cd ${pwd}/customtags
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/customtags ${pwd}/customtags_bak
svn switch -r ${version} svn://*:*/home/svnsource/customtags/${branches}/${directory} 2>>${pwd}/error.log
elif [ "${branches}" = "tags" ]
then
directory=`awk -F, '{print $2}' ${pwd}/customtags_value.txt`
version=`awk -F, '{print $3}' ${pwd}/customtags_value.txt`
cd ${pwd}/customtags
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/customtags ${pwd}/customtags_bak
svn switch -r ${version} svn://*:*/home/svnsource/customtags/${branches}/${directory} 2>>${pwd}/error.log
elif [ "${branches}" = "trunk" ]
then
version=`awk -F, '{print $2}' ${pwd}/customtags_value.txt`
cd ${pwd}/customtags
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/customtags ${pwd}/customtags_bak
svn switch -r ${version} svn://*:*/home/svnsource/customtags/${branches} 2>>${pwd}/error.log
else
echo "No Match Use the defalut settings"
branches="branches"
directory="p.b.0"
version="head"
cd ${pwd}/customtags
svn cleanup 2>>${pwd}/error.log
svn switch -r ${version} svn://*:*/home/svnsource/customtags/${branches}/${directory} 2>>${pwd}/error.log
fi
ant clean 2>>${pwd}/error.log
ant 2>>${pwd}/error.log
#echo "Convert Customtags Package to the original branches/p.b.0"
#svn switch -r HEAD svn://*:*/home/svnsource/customtags/branches/p.b.0
#flextag package update and switch
awk -F\; '{ print $3 }' ${pwd}/${var}_info.txt >${pwd}/${var}_info_flextag.txt
awk -F: '{print $2}' ${pwd}/${var}_info_flextag.txt >${pwd}/flextag_value.txt
branches=`awk -F, '{print $1}' ${pwd}/flextag_value.txt`
if [ "${branches}" = "branches" ]
then
directory=`awk -F, '{print $2}' ${pwd}/flextag_value.txt`
version=`awk -F, '{print $3}' ${pwd}/flextag_value.txt`
cd ${pwd}/flextag
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/flextag ${pwd}/flextag_bak
svn switch -r ${version} svn://*:*/home/svnsource/flextag/${branches}/${directory} 2>>${pwd}/error.log
elif [ "${branches}" = "tags" ]
then
directory=`awk -F, '{print $2}' ${pwd}/flextag_value.txt`
version=`awk -F, '{print $3}' ${pwd}/flextag_value.txt`
cd ${pwd}/flextag
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/flextag ${pwd}/flextag_bak
svn switch -r ${version} svn://*:*/home/svnsource/flextag/${branches}/${directory} 2>>${pwd}/error.log
elif [ "${branches}" = "trunk" ]
then
version=`awk -F, '{print $2}' ${pwd}/flextag_value.txt`
cd ${pwd}/flextag
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/flextag ${pwd}/flextag_bak
svn switch -r ${version} svn://*:*/home/svnsource/flextag/${branches} 2>>${pwd}/error.log
else
echo "No Match,Use the default Settings"
branches="branches"
directory="p.c.0"
version="head"
cd ${pwd}/flextag
svn cleanup 2>>${pwd}/error.log
svn switch -r ${version} svn://*:*/home/svnsource/flextag/${branches}/${directory} 2>>${pwd}/error.log
fi
ant clean 2>>${pwd}/error.log
ant 2>>${pwd}/error.log
#echo "Convert Flextag package to the original branches/p.c.0"
#svn switch -r HEAD svn://*:*/home/svnsource/flextag/branches/p.c.0'
#remove the *.txt files generated by the script
rm -f ${pwd}/${var}.txt
rm -f ${pwd}/${var}_info.txt
rm -f ${pwd}/${var}_info_common.txt
rm -f ${pwd}/${var}_info_customtags.txt
rm -f ${pwd}/${var}_info_flextag.txt
rm -f ${pwd}/common_value.txt
rm -f ${pwd}/customtags_value.txt
rm -f ${pwd}/flextag_value.txt
#compile and deploy ${var} packages
cd ~/project/${var}
svn cleanup 2>>${pwd}/error.log
svn update 2>>${pwd}/error.log
ant clean 2>>${pwd}/error.log
sleep 3
ant deploy 2>>${pwd}/error.log
sleep 6
#deal with for common customtags flextag(generatated in the process)
rm -fr ${pwd}/common
rm -fr ${pwd}/customtags
rm -fr ${pwd}/flextag
mv ${pwd}/common_bak ${pwd}/common
svn cleanup
svn update
mv ${pwd}/customtags_bak ${pwd}/customtags
svn cleanup
svn update
mv ${pwd}/flextag_bak ${pwd}/flextag
svn cleanup
svn update
# $var is flextag or customtags
else
#the process for handling when the parameter is in {flextag customtags}
#handle the common package when the parameter is in {flextag customtags}
awk -F\; '{ print $1 }' ${pwd}/${var}_info.txt >${pwd}/${var}_info_common.txt
awk -F: '{ print $2 }' ${pwd}/${var}_info_common.txt >${pwd}/common_value.txt
awk -F\; '{ print $2 }' ${pwd}/${var}_info.txt >${pwd}/${var}_info_value.txt
awk -F: '{ print $2 }' ${pwd}/${var}_info_value.txt >${pwd}/${var}_value.txt
branches=`awk -F, '{print $1}' ${pwd}/common_value.txt`
if [ "${branches}" = "branches" ]
then
directory=`awk -F, '{print $2}' ${pwd}/common_value.txt`
version=`awk -F, '{print $3}' ${pwd}/common_value.txt`
cd ${pwd}/common
svn cleanup
svn update
cp -r ${pwd}/common ${pwd}/common_bak
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches}/${directory}
elif [ "${branches}" = "tags" ]
then
directory=`awk -F, '{print $2}' ${pwd}/common_value.txt`
version=`awk -F, '{print $3}' ${pwd}/common_value.txt`
cd ${pwd}/common
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/common ${pwd}/common_bak
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches}/${directory} 2>>${pwd}/error.log
elif [ "${branches}" = "trunk" ]
then
version=`awk -F, '{print $2}' ${pwd}/common_value.txt`
cd ${pwd}/common
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/common ${pwd}/common_bak
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches} 2>>${pwd}/error.log
else
echo "No Match,use the default settings"
branches="branches"
directory="p.a.0"
version="head"
cd ${pwd}/common
svn cleanup 2>>${pwd}/error.log
svn switch -r ${version} svn://*:*/home/svnsource/common/${branches}/${directory} 2>>${pwd}/error.log
fi
ant clean 2>>${pwd}/error.log
sleep 2
ant 2>>${pwd}/error.log
echo " Convert Common package to the original branches/p.a.0"
#svn switch -r HEAD svn://*:*/home/svnsource/common/branches/p.a.0
#handle when the parameter flextag or cutomtags
branches=`awk -F, '{print $1}' ${pwd}/${var}_value.txt`
if [ "${branches}" = "branches" ]
then
directory=`awk -F, '{print $2}' ${pwd}/${var}_value.txt`
version=`awk -F, '{print $3}' ${pwd}/${var}_value.txt`
cd ${pwd}/${var}
svn cleanup
svn update
cp -r ${pwd}/${var} ${pwd}/${var}_bak
svn switch -r ${version} svn://*:*/home/svnsource/${var}/${branches}/${directory}
elif [ "${branches}" = "tags" ]
then
directory=`awk -F, '{print $2}' ${pwd}/${var}_value.txt`
version=`awk -F, '{print $3}' ${pwd}/${var}_value.txt`
cd ${pwd}/${var}
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/${var} ${pwd}/${var}_bak
svn switch -r ${version} svn://*:*/home/svnsource/${var}/${branches}/${directory} 2>>${pwd}/error.log
elif [ "${branches}" = "trunk" ]
then
version=`awk -F, '{print $2}' ${pwd}/common_value.txt`
cd ${pwd}/${var}
svn cleanup 2>>${pwd}/error.log
svn update
cp -r ${pwd}/common ${pwd}/common_bak
svn switch -r ${version} svn://*:*/home/svnsource/${var}/${branches} 2>>${pwd}/error.log
else
echo "No Match,use please check the parameter that you passed"
rm -f ${pwd}/${var}.txt
rm -f ${pwd}/${var}_info.txt
rm -f ${pwd}/${var}_info_common.txt
rm -f ${pwd}/${var}_value.txt
fi
ant clean 2>>${pwd}/error.log
sleep 2
ant 2>>${pwd}/error.log
##convert to the original version
#if [ "${var}" = "customtags" ]
# then
# echo "Convert Customtags Package to original branches/p.b.0"
# cd ${pwd}/customtags
# svn switch -r HEAD svn://*:*/home/svnsource/customtags/branches/p.b.0
#
#fi
#if [ "${var}" = "flextag" ]
# then
# echo "Convert Flextag Package to original branches/p.c.0"
# cd ${pwd}/flextag
# svn switch -r HEAD svn://*:*/home/svnsource/flextag/branches/p.c.0
#fi
#deal with for common and ${var} package
rm -fr ${pwd}/common
mv ${pwd}/common_bak ${pwd}/common
cd ${pwd}/common
svn cleanup
svn update
rm -fr ${pwd}/${var}
mv ${pwd}/${var}_bak ${pwd}/${var}
svn cleanup
svn update
#remove unnecessary files
rm -f ${pwd}/{${var}_value.txt,${var}_info_common.txt,${var}_info_value.txt,common_value.txt,project_${var}.txt,${var}.txt,${var}_info.txt}
fi
done
else #when the build.prop file does exist ,excute the following code
if [ $# -eq 0 ]
then
echo "Usage the prameter is needed such as: ./make_wars.sh ttv"
exit
fi
#complile customtags and flextag
for var in common customtags flextag
do
cd ${pwd}/$var
svn cleanup
svn update
ant clean 2>>${pwd}/error.log
sleep 3
ant 2>>${pwd}/error.log
sleep 5
done
#compile package auf\dot\dot2\intenal\ms2\rad\rem\loc\ttv
for var in $@
do
cd ${pwd}/$var
svn cleanup
svn update
ant clean 2>>${pwd}/error.log
sleep 3
ant deploy 2>>${pwd}/error.log
sleep 5
done
fi
#startup the port
~/bin/mystartup.sh