2005-03-03 13:46:48 +01:00
#!/bin/bash
####################################################
# Bygfoot Football Manager #
# AUTHOR: Gyozo Both (gyboth@bygfoot.com) #
2005-08-24 15:40:30 +02:00
# http://bygfoot.sourceforge.net #
2005-03-03 13:46:48 +01:00
####################################################
# Skript that updates src packages of the Bygfoot Football Manager
# using wget to retrieve patches from the homepage
# version number
2005-12-14 15:05:59 +01:00
version="1.9.3"
2005-03-03 13:46:48 +01:00
# the bygfoot release version the script is shipped with
2005-09-07 21:33:03 +02:00
relversion=UNKNOWN_VERSION
2005-03-03 13:46:48 +01:00
# the current release version on the server
packversion=
# exit codes
EXITOK=0
EXITNOPROG=1
EXITNOREV=2
EXITABORT=3
EXITWGETFAIL=4
EXITUSR=6
EXITNEWSCRIPT=7
EXITCOUNTRY=8
EXITDEBIAN=10
# variables
# a variable we sometimes read something into
tempvar=
# the directory containing the Bygfoot src package
packdir=
# a directory we can write to and read from
tmpdir=
# destination for the country files
countrydir=
# the Bygfoot package type, stable or unstable
type_stable=stable
type_unstable=unstable
type=
# the current revision number of the user's package
revnr=
# revision numbers fetched from the homepage
newrevnr=
# number of new revisions found
found=0
# the arguments for the script
args="$*"
# which cvs version to get
cvs_version1=bygfoot-unstable
cvs_version2=bygfoot2-unstable
cvs_version=
2005-08-24 15:40:30 +02:00
# whether we use zenity
use_zenity=
2005-03-03 13:46:48 +01:00
# The file we redirect dialog output to
input_file=$PWD/bygfoot-update-dialog.tmp
# The file containing all output
log_file=$PWD/bygfoot-update.log
# options
# whether all new patches should be applied automatically
apply_all=0
# whether we should skip some queries and assume standard values
auto=0
# whether we recompile automatically after patching
recompile=0
# whether we check for auxiliary programs and
# newer update script versions
check=1
2005-08-24 15:40:30 +02:00
# SourceForge.Net username (for cvs checkout)
cvs_user=
2005-03-03 13:46:48 +01:00
# whether we show the log file before terminating
# if so, the file doesn't get deleted by cleanup()
show_log=0
# operation modes
# source update
mode_src=0
# country file download
mode_country=1
# package download
mode_pack=2
# get cvs version
mode_cvs=3
mode=
# print a help text
function print_help()
{
cat <<END
Usage: bygfoot-update [OPTIONS]
Note: You can call bygfoot-update without any options.
MAIN OPTIONS:
2005-08-24 15:40:30 +02:00
-c|--country-files Download some official team names of well known teams
2005-03-03 13:46:48 +01:00
-n|--new-package Download the latest complete package
-b|--cvs Get CVS version
AUXILIARY OPTIONS:
Global:
-A|--auto Assume [y] for all prompts
-h|--help Print help and exit
-l|--show-log Don't clear the log file before exiting;
show its contents instead.
-t|--temp-dir DIR Set temp directory to DIR
-v|--version Print version information and exit
2005-08-24 15:40:30 +02:00
-Z|--no-zenity Don't use zenity even if the version installed
is usable
directory
2005-03-03 13:46:48 +01:00
Relevant for package download mode:
-t|--temp-dir DIR Set download destination directory
to DIR (same as temp directory)
-T|--type TYPE Download latest TYPE package, TYPE
being either 'stable' or 'unstable'.
Relevant for CVS mode:
-B|--branch BRANCH Which CVS branch to get; currently 1 or 2
for the 1.8 or 1.9 branch.
-U|--username NAME Your SourceForge.Net username used for
checking out, or A for anonymous checkout.
END
}
# print program version
function print_version()
{
cat <<END
bygfoot-update: A bash script keeping your Bygfoot Football Manager up-to-date.
Version $version.
See the file UPDATE for some more information.
Call bygfoot-update -h|--help for usage information.
END
}
# print output to stdout and the log file
function my_echo()
{
echo "$@" 2>> $log_file | tee -a $log_file
}
# show log file before exiting if the option is set
function my_exit()
{
2005-08-24 15:40:30 +02:00
2005-03-03 13:46:48 +01:00
if [ $show_log -eq 1 ]; then
if [ -r $log_file ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update Log" --text-info --filename=$log_file
else
dialog --title "Bygfoot Online Update" --textbox $log_file 22 75
fi
2005-03-03 13:46:48 +01:00
else
echo "** WARNING: log file $log_file not readable."
fi
fi
cleanup
exit $1
}
# parse arguments
function parse_args()
{
2005-09-07 21:33:03 +02:00
TEMP=`getopt -o aAbcB:C:hlnNp:rRt:T:uU:vZ --long apply-all,\
auto,branch:,country-files,country-dir:,cvs,,help,new-package,no-check,\
2005-03-03 13:46:48 +01:00
package-dir:,recompile,no-recompile,show-log,temp-dir:,type:,update,username:\
2005-09-07 21:33:03 +02:00
version,no-zenity -- $*`
2005-03-03 13:46:48 +01:00
if [ $? != 0 ]; then
my_echo "** b-u: There was an error parsing the arguments."
my_echo "** b-u: The arguments will be ignored."
return
fi
eval set -- "$TEMP"
while true; do
case "$1" in
-a|--apply-all) apply_all=1; shift ;;
-A|--auto) auto=1; apply_all=1; shift ;;
-b|--cvs) mode=$mode_cvs; shift ;;
-B|--branch) set_branch $2; shift 2 ;;
-c|--country-files) mode=$mode_country; shift ;;
-C|--country-dir) pushd $2 &> /dev/null; countrydir=$PWD; popd &> /dev/null; shift 2 ;;
-h|--help) print_help; exit $EXITOK ;;
-l|--show-log) show_log=1; shift ;;
-n|--new-package) mode=$mode_pack; shift ;;
-N|--no-check) check=0; shift ;;
-p|--package-dir) pushd $2 &> /dev/null; packdir=$PWD; popd &> /dev/null; shift 2 ;;
-r|--recompile) recompile=1; shift ;;
-R|--no-recompile) recompile=-1; shift ;;
-t|--temp-dir) pushd $2 &> /dev/null; tmpdir=$PWD; popd &> /dev/null; shift 2 ;;
-T|--type) type=$2; shift 2 ;;
-u|--update) mode=$mode_src; shift ;;
-U|--username) cvs_user=$2; shift 2 ;;
-v|--version) print_version; exit $EXITOK ;;
2005-08-24 15:40:30 +02:00
-Z|--no-zenity) use_zenity=0; shift ;;
2005-03-03 13:46:48 +01:00
--) shift; break ;;
esac
done
}
# clean up in the temp dir
function cleanup()
{
my_echo
2005-08-24 15:40:30 +02:00
my_echo "** b-u: Removing output file $input_file."
2005-03-03 13:46:48 +01:00
rm -rfv $input_file 2>> $log_file | tee -a $log_file
2005-08-24 15:40:30 +02:00
if [ ! -z $tmpdir ]; then
if [ $mode -ne $mode_pack ]; then
my_echo "** b-u: Cleaning up in the temp directory."
rm -rfv 2>> $log_file | tee -a $log_file
fi
2005-03-03 13:46:48 +01:00
fi
if [ $show_log -eq 0 ]; then
my_echo "** b-u: Removing log file $log_file."
rm -rfv $log_file
fi
}
# wget something, exit if it doesn't work
function my_wget()
{
if ! wget -v $1 2>> $log_file | tee -a $log_file; then
my_echo
my_echo "** b-u: wget failure."
my_exit $EXITWGETFAIL
fi
}
2005-08-24 15:40:30 +02:00
# wrapper for zenity
function my_zenity()
{
zenity "$@" 1> $input_file
exitval=$?
if [ $exitval -eq 255 ]; then
my_echo "** b-u: zenity error."
read a
elif [ $exitval -eq 1 ]; then
my_echo "** b-u: User abort."
my_exit $EXITUSR
fi
}
# check for high enough version of zenity
function check_zenity()
{
my_echo -n "** b-u: checking for zenity..."
if ! which zenity &> /dev/null; then
my_echo " not installed. I'm going to use dialog."
else
zenver=$(zenity --version)
zenver1=$(echo $zenver |sed "s/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/g")
zenver2=$(echo $zenver |sed "s/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/g")
zenver3=$(echo $zenver |sed "s/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/g")
if [ $zenver1 -ge 2 -a $zenver2 -ge 9 -a $zenver3 -ge 0 ]; then
my_echo " $zenver1.$zenver2.$zenver3 found."
use_zenity=1
else
my_echo " $zenver1.$zenver2.$zenver3 not good enough. I'm going to use dialog."
use_zenity=0
fi
fi
}
2005-03-03 13:46:48 +01:00
# check for the programs needed
function check_progs()
{
if [ $check -eq 0 ]; then
return
fi
my_echo
for i in sed tar bzip2 wget patch cvs; do
my_echo -n "** b-u: checking for $i... "
if which $i &> /dev/null; then
my_echo "ok"
else
my_echo "failed"
my_echo
my_echo "** WARNING: Didn't find working $i, maybe it's not in your PATH."
my_echo "** WARNING: You might not be able to use all bygfoot-update features."
read a
fi
done
2005-08-24 15:40:30 +02:00
if [ -z $use_zenity ]; then
check_zenity
fi
2005-03-03 13:46:48 +01:00
}
function read_input()
{
if [ $? -eq 1 ];then
my_echo "** b-u: User abort."
my_exit $EXITUSR
2005-08-24 15:40:30 +02:00
fi
2005-03-03 13:46:48 +01:00
if [ -r $input_file ]; then
tempvar=$(cat $input_file)
else
tempvar=
fi
my_echo "** b-u: User input: $tempvar"
my_echo
}
2005-09-07 09:13:38 +02:00
# get team definitions
function get_team_defs()
{
2005-09-12 23:01:35 +02:00
if [ ! -d teams ]; then
mkdir teams
2005-09-07 09:13:38 +02:00
fi
2005-09-12 23:01:35 +02:00
pushd teams &> /dev/null
2005-09-07 09:13:38 +02:00
rm -vf team_defs 2>> $log_file | tee -a $log_file
my_wget http://bygfoot.sourceforge.net/revisions/team_defs
2005-09-12 23:01:35 +02:00
while read key value; do
2005-09-07 09:13:38 +02:00
if [ ! -z $key ]; then
if [ $key = "end_section" ]; then
file_name=$(echo $uri | sed "s/.*\(team_.*bz2\)/\1/g" | sed "s/\.bz2//g")
def_name=$(echo $file_name | sed "s/team_//g" | sed "s/\..*//g")
if [ -e $file_name.xml ]; then
mv $file_name.xml $file_name.xml.old
fi
if [ -e $file_name.png ]; then
mv $file_name.png $file_name.png.old
fi
my_wget $uri
tar xfj $file_name.bz2
2005-10-13 10:52:33 +02:00
rm -rfv $file_name.bz2 2>> $log_file | tee -a $log_file
2005-09-07 09:13:38 +02:00
if [ -d ../$country ]; then
pushd ../$country &> /dev/null
2005-12-07 16:03:42 +01:00
team_found=0
2005-09-07 09:13:38 +02:00
for league in league*xml; do
for team in "$team_name1" "$team_name2"; do
if grep "<team_name>$team</team_name>" $league &> /dev/null; then
2005-12-07 16:03:42 +01:00
team_found=1
2005-09-07 09:13:38 +02:00
cp -f $league $league.bak
my_echo " + Adding $team to $league..."
2005-09-07 21:33:03 +02:00
perl -0777 -pe "s+(team_name\>$team\</team_name\>)[\n\t ]*\<def_file\>[^\<]*\</def_file\>[\n\t ]*+\1\n+g" $league.bak | perl -0777 -pe "s+([\t ]*)(\<team_name\>$team\</team_name\>)+\1\2\n\1\<def_file\>$def_name\</def_file>+g" > $league
2005-09-07 09:13:38 +02:00
fi
done
done
2005-12-07 16:03:42 +01:00
if [ $team_found -eq 0 ]; then
echo " ** $team_name1 / $team_name2 not found in any of the leagues! **"
fi
2005-09-07 09:13:38 +02:00
popd &> /dev/null
else
my_echo "Country directory $country not found."
fi
team_name1=
team_name2=
uri=
country=
else
case $key in
uri) uri=$value ;;
team_name1) team_name1="$value" ;;
team_name2) team_name2="$value" ;;
country) country=$value ;;
esac
fi
fi
done < team_defs
rm -vf team_defs 2>> $log_file | tee -a $log_file
popd &> /dev/null
}
2005-03-03 13:46:48 +01:00
# get country files with official team names
function get_country_files()
{
my_echo
2005-08-24 15:40:30 +02:00
my_echo "** b-u: Fetching official team names and"
my_echo "** b-u: team definitions files."
2005-03-03 13:46:48 +01:00
pushd $countrydir &>/dev/null
2005-09-07 09:13:38 +02:00
2005-09-12 23:01:35 +02:00
my_wget http://bygfoot.sourceforge.net/revisions/official_names
2005-03-03 13:46:48 +01:00
2005-08-24 15:40:30 +02:00
while read -d : oldname && read newname
do
if [ "$oldname" == "League" ]; then
DIRNAME=$newname
2005-09-07 09:13:38 +02:00
my_echo " + Adding official names to $DIRNAME..."
2005-08-24 15:40:30 +02:00
else
oldname="${oldname## }"
newname="${newname%% }"
2005-09-12 23:01:35 +02:00
sed -i -e "s/>$oldname</>$newname</" $DIRNAME/league*.xml
2005-08-24 15:40:30 +02:00
fi
done < official_names
2005-03-03 13:46:48 +01:00
2005-08-24 15:40:30 +02:00
rm -vf official_names 2>> $log_file | tee -a $log_file
2005-03-03 13:46:48 +01:00
2005-09-07 09:13:38 +02:00
get_team_defs
popd &> /dev/null
2005-03-03 13:46:48 +01:00
my_echo "** b-u: done."
my_exit $EXITCOUNTRY
}
# get the paths for a temp directory and
# the location of the user's bygfoot src package
function get_paths()
{
if [ $mode -eq $mode_src ]; then
if [ -z $packdir ]; then
if [ $auto -eq 0 ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Select source package directory" \
--file-selection --directory
else
dialog --title "Bygfoot Online Update" \
--inputbox "Source package directory" 22 80 $PWD 2> $input_file
fi
2005-03-03 13:46:48 +01:00
read_input
2005-09-07 09:13:38 +02:00
pushd $tempvar &> /dev/null; packdir=$PWD; popd &> /dev/null
2005-03-03 13:46:48 +01:00
else
packdir=$PWD
fi
my_echo
my_echo "** b-u: Package dir set to"
my_echo "** b-u: $packdir"
fi
fi
if [ $mode -ne $mode_country ]; then
if [ -z $tmpdir ]; then
if [ $auto -eq 0 ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Select temporary directory" \
--file-selection --directory
else
dialog --title "Bygfoot Online Update" \
--inputbox "Temporary directory\n(you need read/write permissions there)" \
22 80 /tmp 2> $input_file
fi
2005-03-03 13:46:48 +01:00
read_input
if [ ! -z $tempvar ]; then
pushd $tempvar &> /dev/null ; tmpdir=$PWD; popd &> /dev/null
else
tmpdir=/tmp
fi
else
tmpdir=/tmp
fi
my_echo
my_echo "** b-u: Temp dir set to"
my_echo "** b-u: $tmpdir"
fi
fi
if [ $mode -eq $mode_country ]; then
2005-09-12 23:01:35 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --info \
--info-text="If you use the binary version of Bygfoot, you should specify './support_files/definitions' as country dir. If you use an installed version, you should specify '$HOME/.bygfoot-X/definitions' (X being the version number you use)."
else
dialog --title "Bygfoot Online Update" --msgbox "If you use the binary version of Bygfoot, you should specify './support_files/definitons' as country dir. If you use an installed version, you should specify '$HOME/.bygfoot-X/definitions' (X being the version number you use)." \
22 80 2> $input_file
fi
2005-03-03 13:46:48 +01:00
if [ -z $countrydir ]; then
if [ $auto -eq 0 ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
2005-09-12 23:01:35 +02:00
my_zenity --title="Definitions dir (right click to show hidden)" \
2005-08-24 15:40:30 +02:00
--file-selection --directory
else
dialog --title "Bygfoot Online Update" \
2005-09-12 23:01:35 +02:00
--inputbox "Directory containing definitions directory" \
22 80 $HOME/.bygfoot-1.9/definitions 2> $input_file
2005-08-24 15:40:30 +02:00
fi
2005-03-03 13:46:48 +01:00
read_input
if [ ! -z $tempvar ]; then
2005-09-07 09:13:38 +02:00
pushd $tempvar &> /dev/null; countrydir=$PWD; popd &> /dev/null
2005-03-03 13:46:48 +01:00
else
2005-09-12 23:01:35 +02:00
countrydir=$HOME/.bygfoot-1.9/definitions
2005-03-03 13:46:48 +01:00
fi
else
2005-09-12 23:01:35 +02:00
countrydir=$HOME/.bygfoot-1.9/definitions
2005-03-03 13:46:48 +01:00
fi
my_echo
my_echo "** b-u: Country dir set to"
my_echo "** b-u: $countrydir"
fi
fi
}
# find out revision number and type
function get_rev_type()
{
echo
if [ ! -e $packdir/revision_number ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --error \
--error-text="I couldn't find the file containing your current revision number and type ($packdir/revision_number)."
else
dialog --title "Bygfoot Online Update" --msgbox \
2005-03-03 13:46:48 +01:00
"I couldn't find the file containing your current revision number and type ($packdir/revision_number).\nFailure." \
2005-08-24 15:40:30 +02:00
22 80 2> $input_file
fi
read_input
my_exit $EXITNOREV
2005-03-03 13:46:48 +01:00
fi
type=$(cat $packdir/revision_number | sed s/[0-9]*//g)
revnr=$(cat $packdir/revision_number | sed s/[a-z]*//g)
my_echo "** b-u: Your current revision is: $type $revnr."
}
function apply_rev()
{
my_echo
my_echo "** b-u: Applying patch revision_$type$newrevnr"
cd $packdir
if [ -e $newrevdir/prepatch ]; then
$newrevdir/prepatch 2>> $log_file | tee -a $log_file
fi
patch -p1 < $newrevdir/patch* 2>> $log_file | tee -a $log_file
if [ -e $newrevdir/postpatch ]; then
$newrevdir/postpatch 2>> $log_file | tee -a $log_file
fi
2005-09-12 23:01:35 +02:00
cd $tmpdir/bygfoot-update-tmp
2005-03-03 13:46:48 +01:00
}
# fetch a revision archive from the homepage and
# patch the src package
function get_revision()
{
2005-09-12 23:01:35 +02:00
local newrevdir=$tmpdir/bygfoot-update-tmp/revision_$type$newrevnr
2005-03-03 13:46:48 +01:00
my_echo
my_echo "** b-u: Retrieving revision_$type$newrevnr.tar.bz2."
my_wget http://bygfoot.sourceforge.net/revisions/$type/revision_$type$newrevnr.tar.bz2
mkdir $newrevdir
cd $newrevdir
tar xfjv ../revision_$type$newrevnr.tar.bz2 2>> $log_file | tee -a $log_file
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Patch README" --text-info --filename=README
else
dialog --title "Bygfoot Online Update" --textbox README 22 75
fi
2005-03-03 13:46:48 +01:00
if [ $apply_all -eq 0 ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --list \
--list-text="Apply patch? (You can't apply newer ones if you don't apply this one because they depend on each other." \
--radiolist --column "" --column "" --column "" \
TRUE 1 Yes \
FALSE 2 No \
FALSE 3 All
else
dialog --title "Bygfoot Online Update" --menu \
2005-03-03 13:46:48 +01:00
"Apply patch?\n(You can't apply newer ones if you don't apply this one because they depend on each other.)" \
2005-08-24 15:40:30 +02:00
22 80 10 \
1 Yes \
2 No \
3 All 2> $input_file
fi
read_input
2005-03-03 13:46:48 +01:00
if [ ! -z $tempvar ]; then
if [ $tempvar -eq 3 ]; then
apply_all=1
elif [ $tempvar -ne 1 ]; then
my_echo
my_echo "** b-u: User abort."
my_exit $EXITUSR
fi
fi
fi
apply_rev
}
# look for new revisions
function get_revs()
{
my_echo
cd $tmpdir
my_echo "** b-u: Cleaning up old update directories and creating a new one..."
2005-09-12 23:01:35 +02:00
rm -rfv bygfoot-update-tmp 2>> $log_file | tee -a $log_file
mkdir -v bygfoot-update-tmp 2>> $log_file | tee -a $log_file
cd bygfoot-update-tmp
2005-03-03 13:46:48 +01:00
my_echo
my_echo "** b-u: Fetching revision list..."
my_wget http://bygfoot.sourceforge.net/revisions/$type/revisions_$type
for i in $(cat revisions_$type); do
my_echo
newrevnr=$(echo $i | sed s/'[a-z_]*\([0-9]*\).*'/'\1'/g)
if [ $newrevnr -gt $revnr ]; then
found=$[found + 1]
get_revision
else
my_echo "** b-u: $i is older than your revision..."
fi
done
}
# clean up etc.
function update_end()
{
my_echo
if [ $found -ge 1 ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --info \
--info-text="$found new revisions found. Your new revision number should be $[revnr + found]. Have a look at the files README, ChangeLog and ReleaseNotes to see the changes that were made."
else
dialog --title "Bygfoot Online Update" --msgbox "$found new revisions found.\nYour new revision number should be $[revnr + found].\nHave a look at the files README, ChangeLog and ReleaseNotes to see the changes that were made." 2> $input_file
fi
2005-03-03 13:46:48 +01:00
if [ $recompile -eq 0 -a $auto -eq 0 ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --question --question-text="Would you like me to execute 'configure && make' ?"
else
dialog --title "Bygfoot Online Update" --yesno "Would you like me to execute 'configure && make' ?" 22 80 2> $input_file
fi
2005-03-03 13:46:48 +01:00
read_input
fi
if [ $recompile -ne -1 ]; then
cd $packdir
./configure && make 2>> $log_file | tee -a $log_file
fi
else
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --info \
--info-text="No new revisions found.\nYour package seems to be up-to-date."
else
dialog --title "Bygfoot Online Update" --msgbox "No new revisions found.\nYour package seems to be up-to-date." 22 80 2> $input_file
fi
2005-03-03 13:46:48 +01:00
fi
my_echo
my_echo "** b-u: done."
my_exit $EXITOK
}
# set cvs branch from command line option
function set_branch()
{
if [ $1 -eq 1 ]; then
cvs_version=$cvs_version1;
else
cvs_version=$cvs_version2;
fi
}
# ask for the package type (stable/unstable)
function get_type()
{
if [ ! -z $type ]; then
return
fi
if [ $auto -ne 1 ];then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --list \
--list-text="Specify package type:" \
--radiolist --column "" --column "" --column "" \
TRUE 1 Stable \
FALSE 2 Unstable
else
dialog --title "Bygfoot Online Update" --menu "Specify package type" \
22 80 10 \
1 "Stable" \
2 "Unstable" 2> $input_file
fi
2005-03-03 13:46:48 +01:00
read_input
if [ $tempvar -eq 2 ]; then
type=$type_unstable
else
type=$type_stable
fi
else
type=$type_stable
fi
}
2005-09-07 21:33:03 +02:00
function get_latest_versions()
2005-03-03 13:46:48 +01:00
{
pushd $tmpdir &> /dev/null
2005-09-12 23:01:35 +02:00
rm -rfv bygfoot-update-tmp 2>> $log_file | tee -a $log_file
mkdir -v bygfoot-update-tmp
cd bygfoot-update-tmp
2005-09-07 21:33:03 +02:00
my_wget http://bygfoot.sourceforge.net/packages/$type/versions
2005-03-03 13:46:48 +01:00
2005-09-07 21:33:03 +02:00
packlist=`cat versions`
2005-03-03 13:46:48 +01:00
if [ $auto -eq 1 ]; then
return
fi
2005-09-07 21:33:03 +02:00
if [ $use_zenity -eq 1 ]; then
zencmd="zenity --title=Bygfoot_Online_Update --list --list-text=Select_package.Your_version_is_$relversion(as_far_as_I_know). --radiolist --print-column 2"
zencmd="$zencmd --column - --column - --column Package"
cnt=1
for package in $packlist; do
if [ $cnt -eq 1 ]; then
zencmd="$zencmd TRUE $cnt $package"
else
zencmd="$zencmd FALSE $cnt $package"
fi
cnt=$[cnt + 1];
done
selected_package=$($zencmd)
if [ $? -eq 1 ];then
my_echo "** b-u: User abort."
my_exit $EXITUSR
fi
2005-08-24 15:40:30 +02:00
else
2005-09-07 21:33:03 +02:00
dialcmd="dialog --title Bygfoot_Online_Update --menu Select_package.Your_version_is_$relversion(as_far_as_I_know). 22 80 10"
2005-03-03 13:46:48 +01:00
2005-09-07 21:33:03 +02:00
for package in $packlist; do
dialcmd="$dialcmd $package -"
done
2005-03-03 13:46:48 +01:00
2005-09-07 21:33:03 +02:00
$dialcmd 2> $input_file
2005-03-03 13:46:48 +01:00
2005-09-07 21:33:03 +02:00
read_input
selected_package=$tempvar
2005-03-03 13:46:48 +01:00
fi
2005-09-07 21:33:03 +02:00
}
2005-03-03 13:46:48 +01:00
2005-09-07 21:33:03 +02:00
function get_new_package()
{
my_wget http://bygfoot.sourceforge.net/packages/$type/$selected_package
2005-03-03 13:46:48 +01:00
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --info \
2005-09-07 21:33:03 +02:00
--info-text="You can find the package $selected_package in the directory $PWD."
2005-08-24 15:40:30 +02:00
else
dialog --title "Bygfoot Online Update" \
2005-09-07 21:33:03 +02:00
--msgbox "You can find the package $selected_package\nin the directory $PWD." \
2005-08-24 15:40:30 +02:00
22 80 2> $input_file
fi
2005-03-03 13:46:48 +01:00
my_echo "** b-u: Done."
my_exit $EXITOK
}
# download a bygfoot package
function get_package()
{
get_type
2005-09-07 21:33:03 +02:00
get_latest_versions
2005-03-03 13:46:48 +01:00
get_new_package
}
function get_mode()
{
if [ ! -z $mode ]; then
return
fi
if [ $auto -eq 1 ]; then
mode=$mode_src
return
fi
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --list \
--list-text="Main Menu" \
--radiolist --column "" --column "" --column "" \
2005-12-14 15:05:59 +01:00
TRUE 1 "Download the latest Bygfoot release" \
FALSE 2 "Get official team names and team definitions" \
FALSE 3 "Get CVS version (2+ MB 'cause it's not compressed)"
2005-08-24 15:40:30 +02:00
else
dialog --title "Bygfoot Online Update" --menu "Main Menu" 22 80 10 \
2005-12-14 15:05:59 +01:00
1 " Download the latest Bygfoot release" \
2 " Get official team names and team definitions" \
3 " Get CVS version (2+ MB 'cause it's not compressed)" 2> $input_file
2005-08-24 15:40:30 +02:00
fi
2005-03-03 13:46:48 +01:00
read_input
if [ -z $tempvar ]; then
2005-12-14 15:05:59 +01:00
mode=$mode_pack
2005-03-03 13:46:48 +01:00
return
fi
2005-12-14 15:05:59 +01:00
if [ $tempvar -eq 1 ]; then
2005-03-03 13:46:48 +01:00
mode=$mode_pack
2005-12-14 15:05:59 +01:00
elif [ $tempvar -eq 2 ]; then
2005-03-03 13:46:48 +01:00
mode=$mode_country
else
2005-12-14 15:05:59 +01:00
mode=$mode_cvs
2005-03-03 13:46:48 +01:00
fi
}
function get_cvs()
{
if [ -z $cvs_version ];then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --list \
--list-text="Specify CVS version" \
--radiolist --column "" --column "" --column "" \
FALSE 1 " 1.8 branch" \
TRUE 2 " 1.9 branch"
else
dialog --title "Bygfoot Online Update" --menu "Specify CVS version" 22 80 10 \
1 " 1.8 branch" \
2 " 1.9 branch" 2> $input_file
fi
2005-03-03 13:46:48 +01:00
read_input
if [ $tempvar -eq 2 ]; then
cvs_version=$cvs_version2
else
cvs_version=$cvs_version1
fi
fi
if [ -z $cvs_user ];then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --entry \
--text="If you'd like to check out as a developer, enter your SourceForge.net username. Leave empty to check out anonymously."
else
dialog --title "Bygfoot Online Update" --inputbox "If you'd like to check out as a developer, enter your\nSourceForge.net username. Press RETURN to download anonymously." 22 80 2> $input_file
fi
2005-03-03 13:46:48 +01:00
read_input
if [ -z $tempvar ]; then
cvs_command="cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/bygfoot"
else
cvs_command="cvs -d:ext:$tempvar@cvs.sf.net:/cvsroot/bygfoot"
fi
else
if [ $cvs_user = "A" ]; then
cvs_command="cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/bygfoot"
else
cvs_command="cvs -d:ext:$cvs_user@cvs.sf.net:/cvsroot/bygfoot"
fi
fi
cd $tmpdir
$cvs_command checkout $cvs_version 2>> $log_file | tee -a $log_file
if [ $recompile -eq 0 -a $auto -eq 0 ]; then
2005-08-24 15:40:30 +02:00
if [ $use_zenity -eq 1 ]; then
my_zenity --title="Bygfoot Online Update" --question \
--question-text="Would you like me to execute 'autogen.sh && make' ?"
else
dialog --title "Bygfoot Online Update" \
--yesno "Would you like me to execute 'autogen.sh && make' ?" 22 80 2> $input_file
fi
2005-03-03 13:46:48 +01:00
read_input
fi
if [ $recompile -ne -1 ]; then
cd $cvs_version
./autogen.sh && make 2>> $log_file | tee -a $log_file
fi
my_exit $EXITOK
}
parse_args $*
print_version
echo "Bygfoot Online Update $version log file" > $log_file
echo "Don't forget to remove this file if you don't need it anymore." >> $log_file
check_progs
get_mode
get_paths
# what to do when user presses Ctrl-C
trap 'my_echo; my_echo "** b-u: User abort." & my_exit $EXITABORT' 2
if [ $mode -eq $mode_country ]; then
get_country_files
elif [ $mode -eq $mode_pack ]; then
get_package
elif [ $mode -eq $mode_cvs ]; then
get_cvs
else
get_rev_type
get_revs
update_end
fi