#!/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.3/Godot_v4.1.3-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 : target godot file (downloaded) -s : 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"