#!/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/beta3/Godot_v4.0-beta3_linux.x86_64.zip" declare OUTZIP="$WORKDIR/$(basename $GODOT_SRC)" declare OPTION="" declare NEWPRG=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;; *) 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 -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 ERASEIMPORT=1 IMPORT=1 fi if [ $ERASEIMPORT -ne 0 ] then 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"