#!/usr/bin/env bash # # Package the JellyLMS plugin for one Jellyfin server generation. # # ./build-plugin.sh jf11 [version] -> Jellyfin 10.11.x, net9.0 # ./build-plugin.sh jf12 [version] -> Jellyfin 12.0.x, net10.0 # # jprm always reads ./build.yaml, so this temporarily rewrites the targetAbi and # framework fields for the requested variant and restores the file afterwards. # The resulting zip is written to artifacts/ with a variant suffix, and its path # is printed on stdout. set -euo pipefail VARIANT="${1:-}" VERSION="${2:-}" case "${VARIANT}" in jf11) TARGET_ABI="10.11.0.0"; FRAMEWORK="net9.0" ;; jf12) TARGET_ABI="12.0.0.0"; FRAMEWORK="net10.0" ;; *) echo "usage: $0 [version]" >&2; exit 1 ;; esac cd "$(dirname "$0")" if [ -z "${VERSION}" ]; then VERSION=$(sed -n 's/^version:[[:space:]]*"\{0,1\}\([^"]*\)"\{0,1\}[[:space:]]*$/\1/p' build.yaml) fi # jprm normalises the version to four components for the artifact name. FULL_VERSION="${VERSION}" while [ "$(printf '%s' "${FULL_VERSION}" | tr -cd '.' | wc -c)" -lt 3 ]; do FULL_VERSION="${FULL_VERSION}.0" done BACKUP=$(mktemp) cp build.yaml "${BACKUP}" trap 'cp "${BACKUP}" build.yaml; rm -f "${BACKUP}"' EXIT sed -i "s/^version:.*/version: \"${VERSION}\"/" build.yaml sed -i "s/^targetAbi:.*/targetAbi: \"${TARGET_ABI}\"/" build.yaml sed -i "s/^framework:.*/framework: \"${FRAMEWORK}\"/" build.yaml echo "Building ${VARIANT}: targetAbi=${TARGET_ABI} framework=${FRAMEWORK} version=${VERSION}" >&2 mkdir -p "artifacts/${VARIANT}" jprm --verbosity=debug plugin build ./ --output "artifacts/${VARIANT}" >&2 SRC="artifacts/${VARIANT}/jellylms_${FULL_VERSION}.zip" DEST="artifacts/jellylms_${FULL_VERSION}_${VARIANT}.zip" mv "${SRC}" "${DEST}" rm -rf "artifacts/${VARIANT}" echo "${DEST}"