bazar_alea/start-bazar-client.sh
2023-10-22 20:42:13 +02:00

181 lines
3.5 KiB
Bash
Executable file

#!/bin/bash
declare DEBUG=0
declare HELP=0
declare EDITOR=0
declare FORCE=0
declare IMPORT=0
declare ERASEIMPORT=0
declare WORKDIR="$(dirname $(readlink -f $0))"
declare GODOT_SRC="https://downloads.tuxfamily.org/godotengine/4.1.2/Godot_v4.1.2-stable_linux.x86_64.zip"
declare OUTZIP="$WORKDIR/$(basename $GODOT_SRC)"
declare CLIENTDIR="$WORKDIR/client"
declare OPTION=""
declare NEWPRG=0
declare DISABLEAUTODETECTCARD=0
function msg_debug()
{
if [ $DEBUG -ne 0 ]
then
echo "### DEBUG : $*" >&2
fi
}
function msg_info()
{
echo "--- INFO : $*" >&2
}
function msg_error()
{
echo "*** ERROR : $*" >&2
}
function download()
{
local package="$1"
local out="$2"
if [[ $FORCE -eq 0 && -f $2 ]]
then
return 0
fi
which curl 1>/dev/null 2>/dev/null
if [ $? -eq 0 ]
then
curl -o $out $package
if [ $? -eq 0 ]
then
msg_info "Package GODOT downloaded"
return 0
fi
fi
which wget 1>/dev/null 2>/dev/null
if [ $? -eq 0 ]
then
wget $package -O $out
if [ $? -eq 0 ]
then
msg_info "Package GODOT downloaded"
return 0
fi
fi
msg_error "Impossible to download"
exit 2
}
function extract()
{
local compressed_file="$1"
which unzip 1>/dev/null 2>/dev/null
if [ $? -eq 0 ]
then
fileout=$(unzip -Z1 $compressed_file)
if [[ $FORCE -eq 0 && -f $fileout ]]
then
echo $fileout
return 0
fi
unzip -u $compressed_file -d $WORKDIR 1>&2
if [ $? -eq 0 ]
then
msg_info "Uncompressed GODOT"
echo $fileout
NEWPRG=1
return 0
fi
fi
msg_error "Impossible to extract"
exit 2
}
while getopts hdeo:s:fix flag
do
case "${flag}" in
h) HELP=1;;
d) DEBUG=1;;
e) EDITOR=1;;
o) OUTZIP=${OPTARG};;
s) GODOT_SRC=${OPTARG};;
f) FORCE=1;;
i) IMPORT=1;;
x) ERASEIMPORT=1;;
y) DISABLEAUTODETECTCARD=1;;
*) HELP=1;;
esac
done
if [[ $HELP -ne 0 ]]
then
cat << EOF
$(basename $0) [Option] : Donwload Launch Godot
Option:
-h : Show help
-d : Show debug message
-e : Start Godot in editor mode
-f : force download & uncompress
-i : force import data
-x : erase import data
-y : Disable auto detect host (OS/CPU/GPU)
-o <File> : target godot file (downloaded)
-s <Url> : Url to download a specific godot version
EOF
exit 1
fi
msg_info "Start"
msg_debug "WORKDIR:$WORKDIR OUTZIP:$OUTZIP GODOT_SRC:$GODOT_SRC"
download "$GODOT_SRC" "$OUTZIP"
EXE=$(extract "$OUTZIP")
msg_info "Prg:$EXE"
if [ $NEWPRG -ne 0 ]
then
echo "--- New program detected"
ERASEIMPORT=1
IMPORT=1
elif [ $DISABLEAUTODETECTCARD -eq 0 ]
then
echo "--- Check host"
$WORKDIR/$EXE --script precheck.gd > $WORKDIR/.current_version.tmp
if [ -f $WORKDIR/.current_version ]
then
diff $WORKDIR/.current_version.tmp $WORKDIR/.current_version >/dev/null
if [ $? -ne 0 ]
then
ERASEIMPORT=1
IMPORT=1
mv $WORKDIR/.current_version.tmp $WORKDIR/.current_version
else
rm $WORKDIR/.current_version.tmp
fi
else
ERASEIMPORT=1
IMPORT=1
mv $WORKDIR/.current_version.tmp $WORKDIR/.current_version
fi
fi
if [ $ERASEIMPORT -ne 0 ]
then
echo "--- Erase imported data"
rm -f $WORKDIR/.godot/imported/*
fi
if [[ ($IMPORT -ne 0) || (! -d $WORKDIR/.godot) ]]
then
echo "--- Launch import (please wait)"
$WORKDIR/$EXE --editor --quit
echo "--- Import finished"
fi
if [ $EDITOR -ne 0 ]
then
OPTION="$OPTION -e"
fi
cd $CLIENTDIR
$WORKDIR/$EXE $OPTION
msg_info "End"