mirror of https://github.com/tstellar/bygfoot.git
947 lines
24 KiB
Bash
Executable File
947 lines
24 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
####################################################
|
|
# Bygfoot Football Manager #
|
|
# AUTHOR: Gyozo Both (gyboth@bygfoot.com) #
|
|
# http://bygfoot.sourceforge.net #
|
|
####################################################
|
|
|
|
# Skript that updates src packages of the Bygfoot Football Manager
|
|
# using wget to retrieve patches from the homepage
|
|
|
|
# version number
|
|
version="2.0.0"
|
|
# the bygfoot release version the script is shipped with
|
|
relversion=UNKNOWN_VERSION
|
|
# 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=
|
|
|
|
# whether we use zenity
|
|
use_zenity=
|
|
|
|
# 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
|
|
|
|
# SourceForge.Net username (for cvs checkout)
|
|
cvs_user=
|
|
|
|
# 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:
|
|
-c|--country-files Download some official team names of well known teams
|
|
-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
|
|
-Z|--no-zenity Don't use zenity even if the version installed
|
|
is usable
|
|
directory
|
|
|
|
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 2.0 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()
|
|
{
|
|
|
|
if [ $show_log -eq 1 ]; then
|
|
if [ -r $log_file ]; then
|
|
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
|
|
else
|
|
echo "** WARNING: log file $log_file not readable."
|
|
fi
|
|
fi
|
|
|
|
cleanup
|
|
exit $1
|
|
}
|
|
|
|
# parse arguments
|
|
function parse_args()
|
|
{
|
|
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,\
|
|
package-dir:,recompile,no-recompile,show-log,temp-dir:,type:,update,username:\
|
|
version,no-zenity -- $*`
|
|
|
|
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 ;;
|
|
-Z|--no-zenity) use_zenity=0; shift ;;
|
|
--) shift; break ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# clean up in the temp dir
|
|
function cleanup()
|
|
{
|
|
my_echo
|
|
my_echo "** b-u: Removing output file $input_file."
|
|
rm -rfv $input_file 2>> $log_file | tee -a $log_file
|
|
|
|
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
|
|
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
|
|
}
|
|
|
|
# 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
|
|
}
|
|
|
|
# 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
|
|
|
|
if [ -z $use_zenity ]; then
|
|
check_zenity
|
|
fi
|
|
}
|
|
|
|
function read_input()
|
|
{
|
|
if [ $? -eq 1 ];then
|
|
my_echo "** b-u: User abort."
|
|
my_exit $EXITUSR
|
|
fi
|
|
|
|
if [ -r $input_file ]; then
|
|
tempvar=$(cat $input_file)
|
|
else
|
|
tempvar=
|
|
fi
|
|
|
|
my_echo "** b-u: User input: $tempvar"
|
|
my_echo
|
|
}
|
|
|
|
# get team definitions
|
|
function get_team_defs()
|
|
{
|
|
if [ ! -d teams ]; then
|
|
mkdir teams
|
|
fi
|
|
|
|
pushd teams &> /dev/null
|
|
|
|
rm -vf team_defs 2>> $log_file | tee -a $log_file
|
|
my_wget http://bygfoot.sourceforge.net/revisions/team_defs
|
|
|
|
while read key value; do
|
|
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
|
|
rm -rfv $file_name.bz2 2>> $log_file | tee -a $log_file
|
|
|
|
if [ -d ../$country ]; then
|
|
pushd ../$country &> /dev/null
|
|
team_found=0
|
|
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
|
|
team_found=1
|
|
cp -f $league $league.bak
|
|
my_echo " + Adding $team to $league..."
|
|
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
|
|
fi
|
|
done
|
|
done
|
|
|
|
if [ $team_found -eq 0 ]; then
|
|
echo " ** $team_name1 / $team_name2 not found in any of the leagues! **"
|
|
fi
|
|
|
|
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
|
|
}
|
|
|
|
# get country files with official team names
|
|
function get_country_files()
|
|
{
|
|
my_echo
|
|
my_echo "** b-u: Fetching official team names and"
|
|
my_echo "** b-u: team definitions files."
|
|
|
|
pushd $countrydir &>/dev/null
|
|
|
|
my_wget http://bygfoot.sourceforge.net/revisions/official_names
|
|
|
|
while read -d : oldname && read newname
|
|
do
|
|
if [ "$oldname" == "League" ]; then
|
|
DIRNAME=$newname
|
|
my_echo " + Adding official names to $DIRNAME..."
|
|
else
|
|
oldname="${oldname## }"
|
|
newname="${newname%% }"
|
|
sed -i -e "s/>$oldname</>$newname</" $DIRNAME/league*.xml
|
|
fi
|
|
|
|
done < official_names
|
|
|
|
rm -vf official_names 2>> $log_file | tee -a $log_file
|
|
|
|
get_team_defs
|
|
|
|
popd &> /dev/null
|
|
|
|
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
|
|
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
|
|
|
|
read_input
|
|
|
|
pushd $tempvar &> /dev/null; packdir=$PWD; popd &> /dev/null
|
|
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
|
|
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
|
|
|
|
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
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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
|
|
|
|
if [ -z $countrydir ]; then
|
|
if [ $auto -eq 0 ]; then
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Definitions dir (right click to show hidden)" \
|
|
--file-selection --directory
|
|
else
|
|
dialog --title "Bygfoot Online Update" \
|
|
--inputbox "Directory containing definitions directory" \
|
|
22 80 $HOME/.bygfoot/definitions 2> $input_file
|
|
fi
|
|
|
|
read_input
|
|
|
|
if [ ! -z $tempvar ]; then
|
|
pushd $tempvar &> /dev/null; countrydir=$PWD; popd &> /dev/null
|
|
else
|
|
countrydir=$HOME/.bygfoot/definitions
|
|
fi
|
|
else
|
|
countrydir=$HOME/.bygfoot/definitions
|
|
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
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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 \
|
|
"I couldn't find the file containing your current revision number and type ($packdir/revision_number).\nFailure." \
|
|
22 80 2> $input_file
|
|
fi
|
|
|
|
read_input
|
|
my_exit $EXITNOREV
|
|
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
|
|
|
|
cd $tmpdir/bygfoot-update-tmp
|
|
}
|
|
|
|
# fetch a revision archive from the homepage and
|
|
# patch the src package
|
|
function get_revision()
|
|
{
|
|
local newrevdir=$tmpdir/bygfoot-update-tmp/revision_$type$newrevnr
|
|
|
|
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
|
|
|
|
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
|
|
|
|
if [ $apply_all -eq 0 ]; then
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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 \
|
|
"Apply patch?\n(You can't apply newer ones if you don't apply this one because they depend on each other.)" \
|
|
22 80 10 \
|
|
1 Yes \
|
|
2 No \
|
|
3 All 2> $input_file
|
|
fi
|
|
|
|
read_input
|
|
|
|
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..."
|
|
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
|
|
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
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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
|
|
|
|
if [ $recompile -eq 0 -a $auto -eq 0 ]; then
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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
|
|
|
|
read_input
|
|
fi
|
|
|
|
if [ $recompile -ne -1 ]; then
|
|
cd $packdir
|
|
./configure && make 2>> $log_file | tee -a $log_file
|
|
fi
|
|
|
|
else
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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
|
|
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
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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
|
|
|
|
read_input
|
|
|
|
if [ $tempvar -eq 2 ]; then
|
|
type=$type_unstable
|
|
else
|
|
type=$type_stable
|
|
fi
|
|
else
|
|
type=$type_stable
|
|
fi
|
|
}
|
|
|
|
function get_latest_versions()
|
|
{
|
|
pushd $tmpdir &> /dev/null
|
|
rm -rfv bygfoot-update-tmp 2>> $log_file | tee -a $log_file
|
|
mkdir -v bygfoot-update-tmp
|
|
cd bygfoot-update-tmp
|
|
my_wget http://bygfoot.sourceforge.net/packages/$type/versions
|
|
|
|
packlist=`cat versions`
|
|
|
|
if [ $auto -eq 1 ]; then
|
|
return
|
|
fi
|
|
|
|
if [ $use_zenity -eq 1 ]; then
|
|
zencmd="zenity --title=Bygfoot_Online_Update --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
|
|
|
|
else
|
|
dialcmd="dialog --title Bygfoot_Online_Update --menu Select_package.Your_version_is_$relversion(as_far_as_I_know). 22 80 10"
|
|
|
|
for package in $packlist; do
|
|
dialcmd="$dialcmd $package -"
|
|
done
|
|
|
|
$dialcmd 2> $input_file
|
|
|
|
read_input
|
|
selected_package=$tempvar
|
|
fi
|
|
}
|
|
|
|
function get_new_package()
|
|
{
|
|
my_wget http://bygfoot.sourceforge.net/packages/$type/$selected_package
|
|
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --info \
|
|
--text="You can find the package $selected_package in the directory $PWD."
|
|
else
|
|
dialog --title "Bygfoot Online Update" \
|
|
--msgbox "You can find the package $selected_package\nin the directory $PWD." \
|
|
22 80 2> $input_file
|
|
fi
|
|
|
|
my_echo "** b-u: Done."
|
|
|
|
my_exit $EXITOK
|
|
}
|
|
|
|
# download a bygfoot package
|
|
function get_package()
|
|
{
|
|
get_type
|
|
|
|
get_latest_versions
|
|
|
|
get_new_package
|
|
}
|
|
|
|
function get_mode()
|
|
{
|
|
if [ ! -z $mode ]; then
|
|
return
|
|
fi
|
|
|
|
if [ $auto -eq 1 ]; then
|
|
mode=$mode_src
|
|
return
|
|
fi
|
|
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --list \
|
|
--text="Main Menu" \
|
|
--radiolist --column "" --column "" --column "" \
|
|
TRUE 1 "Download the latest Bygfoot release" \
|
|
FALSE 2 "Get official team names and team definitions" \
|
|
FALSE 3 "Get CVS version (11+ MB)"
|
|
else
|
|
dialog --title "Bygfoot Online Update" --menu "Main Menu" 22 80 10 \
|
|
1 " Download the latest Bygfoot release" \
|
|
2 " Get official team names and team definitions" \
|
|
3 " Get CVS version (11+ MB)" 2> $input_file
|
|
fi
|
|
|
|
read_input
|
|
|
|
if [ -z $tempvar ]; then
|
|
mode=$mode_pack
|
|
return
|
|
fi
|
|
|
|
if [ $tempvar -eq 1 ]; then
|
|
mode=$mode_pack
|
|
elif [ $tempvar -eq 2 ]; then
|
|
mode=$mode_country
|
|
else
|
|
mode=$mode_cvs
|
|
fi
|
|
}
|
|
|
|
function get_cvs()
|
|
{
|
|
if [ -z $cvs_version ];then
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --list \
|
|
--text="Specify CVS version" \
|
|
--radiolist --column "" --column "" --column "" \
|
|
FALSE 1 " 1.8 branch" \
|
|
TRUE 2 " 2.0 branch"
|
|
else
|
|
dialog --title "Bygfoot Online Update" --menu "Specify CVS version" 22 80 10 \
|
|
1 " 1.8 branch" \
|
|
2 " 2.0 branch" 2> $input_file
|
|
fi
|
|
|
|
read_input
|
|
|
|
if [ $tempvar -eq 2 ]; then
|
|
cvs_version=$cvs_version2
|
|
else
|
|
cvs_version=$cvs_version1
|
|
fi
|
|
fi
|
|
|
|
if [ -z $cvs_user ];then
|
|
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
|
|
|
|
read_input
|
|
|
|
if [ -z $tempvar ]; then
|
|
cvs_command="cvs -z3 -d:pserver:anonymous@bygfoot.cvs.sourceforge.net:/cvsroot/bygfoot"
|
|
else
|
|
cvs_command="cvs -z3 -d:ext:$tempvar@bygfoot.cvs.sourceforge.net:/cvsroot/bygfoot"
|
|
fi
|
|
else
|
|
if [ $cvs_user = "A" ]; then
|
|
cvs_command="cvs -z3 -d:pserver:anonymous@bygfoot.cvs.sourceforge.net:/cvsroot/bygfoot"
|
|
else
|
|
cvs_command="cvs -z3 -d:ext:$cvs_user@bygfoot.cvs.sourceforge.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
|
|
if [ $use_zenity -eq 1 ]; then
|
|
my_zenity --title="Bygfoot Online Update" --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
|
|
|
|
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
|