#!/bin/bash # Build & publish the insin anydesk package. # # Required env: # INSIN_URL - e.g. https://insin.example.com # INSIN_TOKEN - service token from the Insin admin panel # # Optional env: # ANYDESK_VERSION - full deb version tag (default: 6.4.0-1) # PKG_VERSION - insin package semver (default: derived from ANYDESK_VERSION) # INSIN_CLI_RID - CLI artifact rid (default: auto-detected from uname -m) set -euo pipefail : "${INSIN_URL:?INSIN_URL must be set}" : "${INSIN_TOKEN:?INSIN_TOKEN must be set}" ANYDESK_VERSION="${ANYDESK_VERSION:-6.4.0-1}" PKG_VERSION="${PKG_VERSION:-${ANYDESK_VERSION%-*}}" case "${INSIN_CLI_RID:-$(uname -m)}" in linux-arm64|aarch64|arm64) RID="linux-arm64" ;; linux-x64|x86_64|amd64) echo "ERROR: no linux-x64 insin CLI artifact — run on an arm64 runner" >&2 exit 1 ;; *) RID="${INSIN_CLI_RID:-linux-arm64}" ;; esac HERE="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" SRC="$HERE/src" redact() { sed -E "s|${INSIN_TOKEN}|***|g"; } echo "==> Downloading AnyDesk ${ANYDESK_VERSION} arm64 .deb" curl -fsSL "https://download.anydesk.com/rpi/anydesk_${ANYDESK_VERSION}_arm64.deb" \ -o "$SRC/anydesk_arm64.deb" echo "==> Fetching latest insin CLI ($RID)" CLI_META="$(curl -fsSL "$INSIN_URL/api/v1/downloads/cli" 2>&1 | redact)" read -r CLI_VERSION CLI_FILE < <(python3 -c ' import json, sys m = json.loads(sys.argv[1])[0] a = next(x for x in m["artifacts"] if x["rid"] == sys.argv[2]) print(m["version"], a["filename"]) ' "$CLI_META" "$RID") mkdir -p /tmp/insin curl -fsSL "$INSIN_URL/api/v1/downloads/cli/$CLI_VERSION/$CLI_FILE" \ -o /tmp/insin.tar.gz 2>&1 | redact tar -xzf /tmp/insin.tar.gz -C /tmp/insin chmod +x /tmp/insin/insin echo "==> Packing anydesk@${PKG_VERSION}" ( cd "$SRC" && /tmp/insin/insin pack "anydesk@${PKG_VERSION}" ) PKG="$HERE/packages/anydesk@${PKG_VERSION}.pkg" [[ -f "$PKG" ]] || { echo "ERROR: expected $PKG but it wasn't produced" >&2; exit 1; } echo "==> Publishing $PKG" /tmp/insin/insin publish "$PKG" 2>&1 | redact echo "==> Done: anydesk@${PKG_VERSION} published"