181 lines
3.5 KiB
Bash
Executable file
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.0.2/Godot_v4.0.2-stable_linux.x86_64.zip"
|
|
declare OUTZIP="$WORKDIR/$(basename $GODOT_SRC)"
|
|
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
|
|
|
|
$WORKDIR/$EXE $OPTION
|
|
|
|
|
|
|
|
msg_info "End"
|