Merge branch 'DaCool-DMG-Use-Regex' into 'master'

DMG-CI-Build - Use regex

See merge request sheepitrenderfarm/client!228
This commit is contained in:
Sheepit Renderfarm
2023-08-16 10:46:22 +00:00

View File

@@ -11,22 +11,36 @@ LAUDIR="$HOME/Library/Application Support/SheepIt Launcher"
ARCH="$(uname -m)"
if [ "$ARCH" = "x86_64" ]; then
REPO="https://api.github.com/repos/adoptium/temurin11-binaries/releases"
JREDISTRO="OpenJDK11U-jre_x64_mac_hotspot"
JRE_ARCH="x64"
elif [ "$ARCH" = "arm64" ]; then
REPO="https://api.github.com/repos/adoptium/temurin17-binaries/releases"
JREDISTRO="OpenJDK17U-jre_aarch64_mac_hotspot"
JRE_ARCH="aarch64"
else
echo "What the fudge, what kind of Mac are you running ths under, PowerPC? Get outta here!"
echo "What the fudge, what kind of Mac are you running this under, PowerPC? Get outta here!"
exit 1
fi
echo "NOTICE:"
echo "Please only pin the first window - the launcher to the Dock"
if [ ! -e "./$APP" ]; then #If JRE exists in the dmg, don't download it
if [ ! -e "./$APP" ]; then # If JRE exists in the dmg, don't download it
mkdir -p "$LAUDIR"
BIN="$LAUDIR/$APP"
JREVERSION="$LAUDIR/JRE-Version"
echo "Checking for JRE updates"
JRE_LATEST="$(curl --connect-timeout 20 --retry 4 --silent --show-error $REPO | grep $JREDISTRO | grep name | grep tar | grep -v json | grep -v txt | grep -v sig | cut -d '"' -f 4 | head -n 1)"
# Let me explain this before it gets unexplainable/unmaintainable
# sed -nE
# -n aka --quiet for not printing our entire pattern space, more on that later
# -E aka --regexp-extended is self-explanatory, note, this ain't your luxurious PCRE, this is what we can work with:
# https://en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions
# 's|regexp|replacement|p'
# s is substitute mode, for more on that, consult `man sed(1)`
# | is our separator, sed in s mode is often used with / as a separator, we don't since we are working with URLs and paths
# regexp is the regex, I can't explain that here, read up on it or spare yourself the suffering
# replacement is in our case \1 which is the first capture group, the stuff in ()
# p instructs sed to print our match and since we used -n, only our match
# Using different types of quoted strings like ''"" after one another, it concatenates them
JRE_SED_PATTERN='s|.*\"(https.*OpenJDK.*jre.*'"$JRE_ARCH"'.*mac.*\.tar\.gz)\".*|\1|p'
JRE_URL="$(curl --connect-timeout 20 --retry 4 --silent --show-error $REPO | sed -nE "$JRE_SED_PATTERN" | head -n 1)"
JRE_LATEST="$(echo "$JRE_URL" | sed -nE 's|.*/(OpenJDK.*)$|\1|p')" # Separate filename after last slash
if [ -z "$JRE_LATEST" ]; then
# Empty JRE_LATEST is a good indicator of a critical failure
echo "!!! Failed parsing JRE information! Aborting !!!"
@@ -40,7 +54,7 @@ if [ ! -e "./$APP" ]; then #If JRE exists in the dmg, don't download it
echo "Updates detected, updating JRE to $JRE_LATEST"
rm -rf "$LAUDIR/jdk*" "$BIN" || true # The "|| true" is that we expect the command to fail (If there is nothing to remove), needed since we are running in strict mode
echo "$JRE_LATEST" > "$JREVERSION"
curl --connect-timeout 20 --retry 4 -# -L -o "$LAUDIR/$JRE_LATEST" "$(curl --connect-timeout 20 --retry 4 -s $REPO | grep $JREDISTRO | grep browser_download_url | grep tar | grep -v json | grep -v txt | cut -d '"' -f 4 | head -n 1)"
curl --connect-timeout 20 --retry 4 -# -L -o "$LAUDIR/$JRE_LATEST" "$JRE_URL"
tar -xf "$LAUDIR/$JRE_LATEST" -C "$LAUDIR"
rm "$LAUDIR/$JRE_LATEST"
ln -s "$(find "$LAUDIR" -name java)" "$LAUDIR/$APP" # We symlink java to make the title appearing in the dock to read "SheepIt", not "java"
@@ -51,13 +65,13 @@ else
BIN="./$APP"
fi
JAR="$APP.jar"
if [ ! -e ./$JAR ]; then #If Jar exists in the dmg, don't download it
if [ ! -e ./$JAR ]; then # If Jar exists in the dmg, don't download it
URL=https://www.sheepit-renderfarm.com/media/applet/client-latest.php
if [ -e "$LAUDIR/JOINBETA" ]; then
URL=https://www.sheepit-renderfarm.com/media/applet/client-beta.php
fi
echo "Checking for $APP Jar updates"
JAR_LATEST="$(curl --connect-timeout 20 --retry 4 --silent --show-error --head $URL | grep -i content-disposition | cut -d '=' -f 2 | tr -ud '\r ')"
JAR_LATEST="$(curl --connect-timeout 20 --retry 4 --silent --show-error --head $URL | sed -nE 's|.*(sheepit.*\.jar).*|\1|p')"
JAR="$LAUDIR/$JAR_LATEST"
if [ -z "$JAR_LATEST" ]; then
# Empty JAR_LATEST is a good indicator of a critical failure