#!/bin/bash BUILD_DIR=$PWD CACHE_DIR=$PWD/../.godot-ubports ARCH='arm64' # The latest build can always be obtained from this URL URL_LATEST=https://gitlab.com/abmyii/ubports-godot/-/jobs/1808536472/artifacts/download # Determine the ID of the latest successful pipeline function getNewestVersion() { wget -qO - https://gitlab.com/api/v4/projects/23065313/pipelines?status=success | tr ',' '\n' | grep id | head -n 1 | cut -d ':' -f 2 > newest } # Download a build function download() { # Accept job ID as single argument if [ $# = 1 ]; then # Check if the most recently downloaded build for this architecture is from the same pipeline if [ -f $1.* ]; then echo "Already downloaded artifacts from from job $1. Using cached files." else # Download requested build and update version indicator wget https://gitlab.com/api/v4/projects/23065313/jobs/$1/artifacts -O temp.zip DOWNLOADED=`unzip -Z -1 temp.zip` DOWNLOADED=${DOWNLOADED##*.} rm -f *.$DOWNLOADED touch "$1.$DOWNLOADED" echo "Downloaded build for $DOWNLOADED from job $JOB." unzip -o temp.zip rm temp.zip fi # If no argument given, download latest build else echo "Removing references to other builds..." rm -f *.${ARCH} echo "Downloading latest build..." wget $URL_LATEST -O temp.zip unzip -o temp.zip rm temp.zip fi } # Store everything in a separate cache directory mkdir -p "$CACHE_DIR" cd "$CACHE_DIR" # If single argument given, download from that pipeline if [ $# = 1 ]; then wget -qO - https://gitlab.com/api/v4/projects/23065313/pipelines/$1/jobs | tr ',' '\n' | grep -E -e "^\W+id" | sed -e 's/[^0-9]//g' | while read JOB; do echo "Downloading artifacts from job $JOB in pipeline $1..." download $JOB done # If nothing has been downloaded before, download newest build elif [ ! -f "local-version.${ARCH}" ]; then echo "No local copy found." getNewestVersion download mv newest local-version.${ARCH} # Otherwise, check if there's a newer version available else getNewestVersion diff newest local-version.${ARCH} > /dev/null if [ $? = 0 ]; then echo "No newer version to download. Using cached build." rm newest else echo "Newer version available." download mv newest local-version.${ARCH} fi fi # Copy Godot executable to build directory cd "$BUILD_DIR" cp "$CACHE_DIR"/godot.ubports.${ARCH} godot