Some checks failed
release / build-release (push) Has been cancelled
- IChannel: creators -> sub-channels -> video posts (public listing API, search mapped) - IRequiresMediaInfoCallback -> signed proxy URLs; stream controller rewrites HLS so the AES-128 key is fetched server-side with the session cookie, segments stay on the CDN - delivery/info cached per token lifetime and throttled (~2/min) - config page: paste sails.sid + validate, extra creators, quality, search test - scripts/package.sh -> plugin folder + zip + md5 + manifest.json; Gitea release workflow - research docs, HAR analysis (HAR itself gitignored), install-pi5.sh Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
61 lines
3.3 KiB
Bash
Executable File
61 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Builds the plugin and produces what Jellyfin needs to install it:
|
|
# build/Floatplane_<ver>/ plugin folder (DLL + meta.json) -> copy into <jellyfin>/plugins/
|
|
# build/floatplane_<ver>.zip plugin package -> release asset
|
|
# build/floatplane_<ver>.zip.md5 checksum
|
|
# build/manifest.json plugin-repository manifest (needs BASE_URL)
|
|
#
|
|
# Usage: scripts/package.sh [version] [base-url-for-zip]
|
|
# version defaults to the version in build.yaml; CI passes X.Y.Z.N
|
|
# base-url URL prefix where the zip will be downloadable (for manifest.json sourceUrl)
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
VERSION="${1:-$(sed -n 's/^version: *"\(.*\)"/\1/p' build.yaml)}"
|
|
BASE_URL="${2:-}"
|
|
NAME=$(sed -n 's/^name: *"\(.*\)"/\1/p' build.yaml)
|
|
GUID=$(sed -n 's/^guid: *"\(.*\)"/\1/p' build.yaml)
|
|
ABI=$(sed -n 's/^targetAbi: *"\(.*\)"/\1/p' build.yaml)
|
|
OVERVIEW=$(sed -n 's/^overview: *"\(.*\)"/\1/p' build.yaml)
|
|
CATEGORY=$(sed -n 's/^category: *"\(.*\)"/\1/p' build.yaml)
|
|
OWNER=$(sed -n 's/^owner: *"\(.*\)"/\1/p' build.yaml)
|
|
# multi-line "description: >" and "changelog: >" blocks → single line
|
|
DESCRIPTION=$(awk '/^description: >/{f=1;next} /^[a-z]/{f=0} f{gsub(/^ +/,""); printf "%s ", $0}' build.yaml | sed 's/ *$//')
|
|
CHANGELOG=$(awk '/^changelog: >/{f=1;next} /^[a-z]/{f=0} f{gsub(/^ +/,""); printf "%s ", $0}' build.yaml | sed 's/ *$//')
|
|
SLUG=$(echo "$NAME" | tr '[:upper:]' '[:lower:]' | tr -c 'a-z0-9\n' '_')
|
|
TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
|
|
rm -rf build/publish "build/${NAME}_${VERSION}" "build/${SLUG}_${VERSION}.zip"*
|
|
mkdir -p build
|
|
dotnet publish Jellyfin.Plugin.Floatplane/Jellyfin.Plugin.Floatplane.csproj \
|
|
-c Release -o build/publish -p:Version="$VERSION" -p:AssemblyVersion="$VERSION" -p:FileVersion="$VERSION" --nologo
|
|
|
|
PLUGIN_DIR="build/${NAME}_${VERSION}"
|
|
mkdir -p "$PLUGIN_DIR"
|
|
cp build/publish/Jellyfin.Plugin.Floatplane.dll "$PLUGIN_DIR/"
|
|
jq -n --arg guid "$GUID" --arg name "$NAME" --arg desc "$DESCRIPTION" --arg ov "$OVERVIEW" \
|
|
--arg owner "$OWNER" --arg cat "$CATEGORY" --arg ver "$VERSION" --arg cl "$CHANGELOG" \
|
|
--arg abi "$ABI" --arg ts "$TS" \
|
|
'{guid:$guid, name:$name, description:$desc, overview:$ov, owner:$owner, category:$cat,
|
|
version:$ver, changelog:$cl, targetAbi:$abi, timestamp:$ts, status:"Active", autoUpdate:true,
|
|
imagePath:"", assemblies:["Jellyfin.Plugin.Floatplane.dll"]}' > "$PLUGIN_DIR/meta.json"
|
|
|
|
ZIP="build/${SLUG}_${VERSION}.zip"
|
|
(cd "$PLUGIN_DIR" && zip -q -j "../../$ZIP" Jellyfin.Plugin.Floatplane.dll meta.json)
|
|
MD5=$(md5sum "$ZIP" | cut -d' ' -f1)
|
|
echo "$MD5 $(basename "$ZIP")" > "$ZIP.md5"
|
|
|
|
if [ -n "$BASE_URL" ]; then
|
|
jq -n --arg guid "$GUID" --arg name "$NAME" --arg desc "$DESCRIPTION" --arg ov "$OVERVIEW" \
|
|
--arg owner "$OWNER" --arg cat "$CATEGORY" --arg ver "$VERSION" --arg cl "$CHANGELOG" \
|
|
--arg abi "$ABI" --arg ts "$TS" --arg md5 "$MD5" --arg url "${BASE_URL%/}/$(basename "$ZIP")" \
|
|
'[{guid:$guid, name:$name, description:$desc, overview:$ov, owner:$owner, category:$cat, imageUrl:"",
|
|
versions:[{version:$ver, changelog:$cl, targetAbi:$abi, sourceUrl:$url, checksum:$md5, timestamp:$ts}]}]' \
|
|
> build/manifest.json
|
|
fi
|
|
|
|
echo "plugin folder: $PLUGIN_DIR"
|
|
echo "package: $ZIP (md5 $MD5)"
|
|
[ -n "$BASE_URL" ] && echo "manifest: build/manifest.json -> $BASE_URL"
|
|
exit 0
|