File jupiter-dock-updater.sh.in of Package jupiter-dock-updater-bin

#!/bin/sh

BASE_URL="https://steamdeck-packages.steamos.cloud/archlinux-mirror/jupiter-main/os/x86_64"
PKG_VERSION="__VERSION__"
PKG_NAME="jupiter-dock-updater-bin-${PKG_VERSION}-1-x86_64.pkg.tar.zst"
PKG_URL="${BASE_URL}/${PKG_NAME}"

CHECKSUM_FILE="/usr/share/__NAME__/jupiter-dock-updater.pkg.sha256"
TARGET_DIR="/usr/lib/jupiter-dock-updater"
POST_MESSAGE="/var/adm/update-messages/__NAME__-__VERSION__-__RELEASE__-1"

exit_code=1
for arg in "$@"; do
    if [ "$arg" = "--no-fail" ]; then
        exit_code=0
        break
    fi
done

if [ -e "${TARGET_DIR}/jupiter-dock-updater.sh" ]; then
    echo "*** No update necessary. Dock updater already installed in ${TARGET_DIR}. ***"
    exit 0
fi

tmpname=$(basename "$0")
tmpdir=$(mktemp -d "/tmp/$tmpname.XXXXXX")
trap "rm -rf \"$tmpdir\"" EXIT

if [ ! -d "$tmpdir" ] || [ -z "$tmpdir" ]; then
    echo "$0: Can't create temp dir, exiting..."
    exit $exit_code
fi

cd "$tmpdir" || exit $exit_code

echo "Dock updater package:"
echo "  ${PKG_NAME}"
echo -n "  Fetching   ... "

if ! curl -L -s -o "$PKG_NAME" "$PKG_URL"; then
    echo "failed!"
    if [ "$exit_code" -ne 0 ]; then
        exit $exit_code
    fi
    echo "*** No dock updater installed. ***" | tee "$POST_MESSAGE"
    exit 0
fi

echo "done"

if [ -f "$CHECKSUM_FILE" ]; then
    if ! grep " $PKG_NAME" "$CHECKSUM_FILE" | sha256sum --check --quiet --status >/dev/null 2>&1; then
        echo "checksum mismatch for $PKG_NAME ... deleted!"
        rm -f "$PKG_NAME"
        if [ "$exit_code" -ne 0 ]; then
            exit $exit_code
        fi
        echo "*** No dock updater installed. ***" | tee "$POST_MESSAGE"
        exit 0
    fi
fi

echo -n "  Extracting ... "
if ! tar --zstd -xf "$PKG_NAME"; then
    echo "failed!"
    if [ "$exit_code" -ne 0 ]; then
        exit $exit_code
    fi
    echo "*** No dock updater installed. ***" | tee "$POST_MESSAGE"
    exit 0
fi
echo "done"

if [ ! -d "usr/lib/jupiter-dock-updater" ]; then
    echo "Expected directory usr/lib/jupiter-dock-updater not found in package."
    if [ "$exit_code" -ne 0 ]; then
        exit $exit_code
    fi
    echo "*** No dock updater installed. ***" | tee "$POST_MESSAGE"
    exit 0
fi

mkdir -p "$TARGET_DIR"

for f in \
    hub_update \
    jaguar-b0_LUXSHARE_spi_image_V0.013.15.0.128_20250213.bin \
    jaguar-b0_mca_i2c_isp_driver_payload.bin \
    jupiter-dock-updater-mock.sh \
    jupiter-dock-updater.sh \
    update.ini
do
    if [ -f "usr/lib/jupiter-dock-updater/$f" ]; then
        case "$f" in
            *.sh|hub_update)
                install -m 0755 "usr/lib/jupiter-dock-updater/$f" "$TARGET_DIR/$f"
                ;;
            *)
                install -m 0644 "usr/lib/jupiter-dock-updater/$f" "$TARGET_DIR/$f"
                ;;
        esac
    else
        echo "Warning: file $f not found in package."
    fi
done

echo "*** Dock updater installed in $TARGET_DIR. ***" | tee "$POST_MESSAGE"

exit 0
openSUSE Build Service is sponsored by