#!/bin/bash # gets a Godot release, fetches export templates, # and builds a project with its native export options ################################################################################ PWD=`pwd` DIR_DOWNLOAD=$PWD/download DIR_TEMPLATES=$DIR_DOWNLOAD/templates DIR_DEBUG=$PWD/debug DIR_RELEASE=$PWD/release DIR_PROJECT=$PWD/project GODOT_VERSION=4.4-stable GODOT_ZIP=Godot_v${GODOT_VERSION}_linux.x86_64.zip GODOT_EXE=Godot_v${GODOT_VERSION}_linux.x86_64 GODOT_URI=https://github.com/godotengine/godot/releases/download/$GODOT_VERSION/$GODOT_ZIP GODOT_EXPORT_TEMPLATES=Godot_v${GODOT_VERSION}_export_templates.tpz GODOT_TEMPLATE_URI=https://github.com/godotengine/godot/releases/download/$GODOT_VERSION/$GODOT_EXPORT_TEMPLATES GODOT=$DIR_DOWNLOAD/$GODOT_EXE ################################################################################ # get Godot [[ -d $DIR_DOWNLOAD ]] || mkpath -p $DIR_DOWNLOAD [[ -f $DIR_DOWNLOAD/$GODOT_ZIP ]] || wget -P $DIR_DOWNLOAD $GODOT_URI [[ -f $DIR_DOWNLOAD/$GODOT_EXE ]] || unzip $DIR_DOWNLOAD/$GODOT_ZIP -d $DIR_DOWNLOAD echo Godot version - $($GODOT --headless --version) ################################################################################ # get export templates [[ -f $DIR_DOWNLOAD/$GODOT_EXPORT_TEMPLATES ]] || wget -P $DIR_DOWNLOAD $GODOT_TEMPLATE_URI [[ -d $DIR_TEMPLATES ]] || unzip -d $DIR_DOWNLOAD $DIR_DOWNLOAD/$GODOT_EXPORT_TEMPLATES GODOT_TEMPLATE_VERSION=$(cat $DIR_TEMPLATES/version.txt) LOCAL_TEMPLATES=$HOME/.local/share/godot/export_templates/$GODOT_TEMPLATE_VERSION if [[ ! -d $LOCAL_TEMPLATES ]] then mkdir -p $LOCAL_TEMPLATES cp $DIR_TEMPLATES/* $LOCAL_TEMPLATES # TODO: leaves extra copy of templates fi echo Godot export template version - $GODOT_TEMPLATE_VERSION echo Local templates - $LOCAL_TEMPLATES ################################################################################ # execute project build # iterate through all build types present in config file EXPORT_PRESETS_CFG=$DIR_PROJECT/export_presets.cfg GODOT_OPTS="--headless --path $DIR_PROJECT" # if arg is given, override automated export discovery if [[ -n "$1" ]] then EXPORT_NAMES=$1 else EXPORT_NAMES=$(awk -F= '$1=="name"{print $2}' $EXPORT_PRESETS_CFG | sed 's/"//g') fi for EXPORT_NAME in $EXPORT_NAMES do echo echo Starting project build for export $EXPORT_NAME # create build folders [[ -d $DIR_RELEASE/$EXPORT_NAME ]] || mkdir -p $DIR_RELEASE/$EXPORT_NAME [[ -d $DIR_DEBUG/$EXPORT_NAME ]] || mkdir -p $DIR_DEBUG/$EXPORT_NAME # get export name from config file EXPORT_FNAME=$(awk -vname=${EXPORT_NAME} -F= \ '$1=="name" && $2~name{f=1} f==1 && $1=="export_path"{print $2;exit}' \ $EXPORT_PRESETS_CFG | sed -e 's|^.*/||' -e 's/"//g') # do build! echo $GODOT $GODOT_OPTS --export-debug "$EXPORT_NAME" $DIR_DEBUG/$EXPORT_NAME/$EXPORT_FNAME $GODOT $GODOT_OPTS --export-debug "$EXPORT_NAME" $DIR_DEBUG/$EXPORT_NAME/$EXPORT_FNAME echo $GODOT $GODOT_OPTS --export-release "$EXPORT_NAME" $DIR_RELEASE/$EXPORT_NAME/$EXPORT_FNAME $GODOT $GODOT_OPTS --export-release "$EXPORT_NAME" $DIR_RELEASE/$EXPORT_NAME/$EXPORT_FNAME done