app
adom-desktop-altium-bridge
Public Unreviewedby barrett-land
Adom Desktop bridge for Altium Designer — add LCSC/JLCPCB-tagged parts to file-based libraries (symbols, footprints with 3D, value-only display) by driving Altium via DelphiScript.
#!/usr/bin/env bash
# deploy.sh — build + publish + (re)install the altium bridge in one shot.
# Usage: ./deploy.sh <new-version> e.g. ./deploy.sh 0.0.30
set -euo pipefail
VER="${1:?usage: deploy.sh <version>}"
ROOT="/home/adom/project"
DIR="$ROOT/altium-bridge"
ZIP="$ROOT/altium-bridge-v${VER}.zip"
MANIFEST="$ROOT/altium-bridge-manifest.json"
BASE="https://barrett-land-dashboard-35mvr0hdyp1h.adom.cloud/proxy/8088"
KILL_PS1="C:\\Users\\barre\\Downloads\\altium\\kill_altium_bridge.ps1"
echo "$VER" > "$DIR/BRIDGE_VERSION"
python3 - "$DIR/bridge.json" "$VER" <<'PY'
import json, sys
p, ver = sys.argv[1], sys.argv[2]
d = json.load(open(p)); d["version"] = ver
json.dump(d, open(p, "w"), indent=2)
PY
rm -f "$ZIP"
( cd "$DIR" && zip -rq "$ZIP" . -x '*__pycache__*' -x '*.pyc' )
SHA=$(sha256sum "$ZIP" | cut -d' ' -f1)
SIZE=$(stat -c%s "$ZIP")
cat > "$MANIFEST" <<EOF
{ "manifest_version": 1, "name": "altium", "version": "${VER}",
"url": "${BASE}/altium-bridge-v${VER}.zip",
"sha256": "${SHA}", "size": ${SIZE}, "released_at": "2026-06-19T00:00:00Z" }
EOF
echo "built v${VER} size=${SIZE} sha=${SHA}"
# kill ONLY the altium bridge python PIDs (never a broad python kill), then reinstall.
# `|| true` so a "no running process" case doesn't abort the deploy under pipefail.
{ adom-desktop shell_execute "{\"command\":\"powershell -NoProfile -File ${KILL_PS1}\"}" \
| python3 -c "import sys,json;print('kill:', (json.load(sys.stdin).get('output') or '').strip() or 'no match')"; } || true
sleep 2
adom-desktop bridge_install "{\"manifestUrl\":\"${BASE}/altium-bridge-manifest.json\"}" \
| python3 -c "import sys,json;d=json.load(sys.stdin);o=json.loads(d['output']) if isinstance(d.get('output'),str) and d['output'] else d;print('install ok:', o.get('ok'), o.get('error') or '')"
sleep 1
adom-desktop altium_ping '{}' \
| python3 -c "import sys,json;d=json.load(sys.stdin);o=json.loads(d.get('output','{}')) if d.get('output') else {};print('bridge now v', o.get('version'))"