@@ -2346,6 +2346,7 @@ wstest-consolidate-reports:
23462346 du -hs docs/ _static/ websocket/ conformance/
23472347
23482348# Download GitHub release artifacts (usage: `just download-github-release` for nightly, or `just download-github-release stable`)
2349+ # Downloads wheels, sdist, conformance reports, and FlatBuffers schemas
23492350download-github-release release_type = " nightly":
23502351 #!/usr/bin/env bash
23512352 set -e
@@ -2358,8 +2359,7 @@ download-github-release release_type="nightly":
23582359 case " ${RELEASE_TYPE}" in
23592360 nightly)
23602361 echo " ==> Finding latest nightly release (tagged as master-YYYYMMDDHHMM)..."
2361- RELEASE_TAG=$(curl -s " https://api.github.com/repos/crossbario/autobahn-python/releases" \
2362- | grep ' "tag_name":' \
2362+ RELEASE_TAG=$(gh release list --repo crossbario/ autobahn-python --limit 20 \
23632363 | grep -o ' master-[0-9]*' \
23642364 | head -1)
23652365 if [ -z " $RELEASE_TAG" ]; then
@@ -2371,9 +2371,7 @@ download-github-release release_type="nightly":
23712371
23722372 stable|latest)
23732373 echo " ==> Finding latest stable release..."
2374- RELEASE_TAG=$(curl -s " https://api.github.com/repos/crossbario/autobahn-python/releases/latest" \
2375- | grep ' "tag_name":' \
2376- | sed ' s/.*"tag_name": "\([^"]*\)".*/\1/' )
2374+ RELEASE_TAG=$(gh release view --repo crossbario/ autobahn-python --json tagName -q ' .tagName' 2 >/ dev/ null || true )
23772375 if [ -z " $RELEASE_TAG" ]; then
23782376 echo " ❌ ERROR: No stable release found"
23792377 exit 1
@@ -2383,9 +2381,8 @@ download-github-release release_type="nightly":
23832381
23842382 development|dev)
23852383 echo " ==> Finding latest development release (tagged as fork-*)..."
2386- RELEASE_TAG=$(curl -s " https://api.github.com/repos/crossbario/autobahn-python/releases" \
2387- | grep ' "tag_name":' \
2388- | grep -o ' fork-[^"]*' \
2384+ RELEASE_TAG=$(gh release list --repo crossbario/ autobahn-python --limit 20 \
2385+ | grep -o ' fork-[^[:space:]]*' \
23892386 | head -1)
23902387 if [ -z " $RELEASE_TAG" ]; then
23912388 echo " ❌ ERROR: No development release found"
@@ -2401,44 +2398,58 @@ download-github-release release_type="nightly":
24012398 ;;
24022399 esac
24032400
2404- BASE_URL=" https://github.com/crossbario/autobahn-python/releases/download/${RELEASE_TAG}"
2405-
2406- # Create temporary directory for artifacts
2401+ # Create download directory
24072402 DOWNLOAD_DIR=" /tmp/autobahn-release-artifacts-${RELEASE_TAG}"
24082403 mkdir -p " ${DOWNLOAD_DIR}"
2404+
2405+ echo " "
2406+ echo " ==> Downloading all release artifacts using gh..."
2407+ gh release download " ${RELEASE_TAG}" \
2408+ - -repo crossbario/ autobahn-python \
2409+ - -dir " ${DOWNLOAD_DIR}" \
2410+ - -clobber
2411+
24092412 cd " ${DOWNLOAD_DIR}"
24102413
24112414 echo " "
2412- echo " ==> Downloading WebSocket conformance reports..."
2413- if curl -fL " ${BASE_URL}/autobahn-python-websocket-conformance-${RELEASE_TAG}.tar.gz" \
2414- - o conformance.tar.gz; then
2415- echo " ✅ Downloaded: autobahn-python-websocket-conformance-${RELEASE_TAG}.tar.gz"
2415+ echo " ==> Extracting documentation artifacts..."
2416+
2417+ # Extract conformance reports (for docs integration)
2418+ CONFORMANCE_TARBALL=" autobahn-python-websocket-conformance-${RELEASE_TAG}.tar.gz"
2419+ if [ -f " ${CONFORMANCE_TARBALL}" ]; then
2420+ mkdir -p conformance-extracted
2421+ tar -xzf " ${CONFORMANCE_TARBALL}" -C conformance-extracted
2422+ # Move with-nvx and without-nvx to top level for docs-integrate-github-release
2423+ if [ -d " conformance-extracted/with-nvx" ]; then
2424+ mv conformance-extracted/ with-nvx .
2425+ fi
2426+ if [ -d " conformance-extracted/without-nvx" ]; then
2427+ mv conformance-extracted/ without-nvx .
2428+ fi
2429+ rm -rf conformance-extracted
2430+ echo " ✅ Extracted conformance reports to with-nvx/, without-nvx/"
24162431 else
2417- echo " ⚠️ Failed to download conformance reports (may not exist for this release) "
2432+ echo " ⚠️ No conformance tarball found "
24182433 fi
24192434
2420- echo " "
2421- echo " ==> Downloading FlatBuffers schemas..."
2422- if curl -fL " ${BASE_URL}/flatbuffers-schema.tar.gz" \
2423- - o flatbuffers-schema.tar.gz; then
2424- echo " ✅ Downloaded: flatbuffers-schema.tar.gz "
2435+ # Extract FlatBuffers schemas (for docs integration)
2436+ if [ -f " flatbuffers-schema.tar.gz" ]; then
2437+ mkdir -p flatbuffers
2438+ tar -xzf flatbuffers-schema.tar.gz -C flatbuffers
2439+ echo " ✅ Extracted FlatBuffers schemas to flatbuffers/ "
24252440 else
2426- echo " ⚠️ Failed to download FlatBuffers schemas (may not exist for this release) "
2441+ echo " ⚠️ No FlatBuffers schema tarball found "
24272442 fi
24282443
24292444 echo " "
2430- echo " ==> Extracting artifacts..."
2431- if [ -f conformance.tar.gz ]; then
2432- tar -xzf conformance.tar.gz
2433- echo " ✅ Extracted conformance reports"
2434- fi
2435- if [ -f flatbuffers-schema.tar.gz ]; then
2436- tar -xzf flatbuffers-schema.tar.gz
2437- echo " ✅ Extracted FlatBuffers schemas"
2438- fi
2439-
2445+ echo " ==> Downloaded artifacts inventory:"
2446+ echo " "
2447+ WHEEL_COUNT=$(find . -maxdepth 1 -name " *.whl" | wc -l)
2448+ SDIST_COUNT=$(find . -maxdepth 1 -name " autobahn-*.tar.gz" | wc -l)
2449+ echo " Wheels: ${WHEEL_COUNT}"
2450+ echo " Source dist: ${SDIST_COUNT}"
24402451 echo " "
2441- echo " ==> Downloaded and extracted artifacts :"
2452+ echo " Files :"
24422453 ls -lh
24432454
24442455 echo " "
@@ -2449,9 +2460,11 @@ download-github-release release_type="nightly":
24492460 echo " Release: ${RELEASE_TAG}"
24502461 echo " Location: ${DOWNLOAD_DIR}"
24512462 echo " "
2452- echo " To use these artifacts:"
2463+ echo " Contents:"
2464+ echo " - Wheels: ${DOWNLOAD_DIR}/*.whl"
2465+ echo " - Source dist: ${DOWNLOAD_DIR}/autobahn-*.tar.gz"
24532466 echo " - Conformance reports: ${DOWNLOAD_DIR}/with-nvx/, ${DOWNLOAD_DIR}/without-nvx/"
2454- echo " - FlatBuffers schemas: ${DOWNLOAD_DIR}/*.fbs, ${DOWNLOAD_DIR}/*.bfbs "
2467+ echo " - FlatBuffers schemas: ${DOWNLOAD_DIR}/flatbuffers/ "
24552468 echo " "
24562469
24572470# Integrate downloaded GitHub release artifacts into docs build (usage: `just docs-integrate-github-release` or `just docs-integrate-github-release master-202510180103`)
@@ -2582,6 +2595,24 @@ docs-integrate-github-release release_tag="":
25822595 fi
25832596 fi
25842597
2598+ # Copy chain-of-custody / verification files
2599+ echo " ==> Copying chain-of-custody files..."
2600+ mkdir -p docs/ _build/ html/ _static/ release
2601+ CUSTODY_COUNT=0
2602+ for pattern in " *CHECKSUMS.sha256" " *VALIDATION.txt" " *build-info.txt" " *.verify.txt" ; do
2603+ for f in ${DOWNLOAD_DIR}/ ${pattern}; do
2604+ if [ -f " $f" ]; then
2605+ cp " $f" docs/ _build/ html/ _static/ release/
2606+ CUSTODY_COUNT=$((CUSTODY_COUNT + 1 ))
2607+ fi
2608+ done
2609+ done
2610+ if [ " ${CUSTODY_COUNT}" -gt 0 ]; then
2611+ echo " ✅ Copied ${CUSTODY_COUNT} chain-of-custody files to docs/_build/html/_static/release/"
2612+ else
2613+ echo " ⚠️ No chain-of-custody files found in ${DOWNLOAD_DIR}"
2614+ fi
2615+
25852616 echo " "
25862617 echo " ════════════════════════════════════════════════════════════"
25872618 echo " ✅ GitHub release artifacts integrated into built documentation"
@@ -2590,6 +2621,11 @@ docs-integrate-github-release release_tag="":
25902621 echo " Integrated artifacts from: ${RELEASE_TAG}"
25912622 echo " Target location: docs/_build/html/_static/"
25922623 echo " "
2624+ echo " Contents integrated:"
2625+ echo " - Conformance reports: docs/_build/html/_static/websocket/conformance/"
2626+ echo " - FlatBuffers schemas: docs/_build/html/_static/flatbuffers/"
2627+ echo " - Chain-of-custody: docs/_build/html/_static/release/"
2628+ echo " "
25932629 echo " Next steps:"
25942630 echo " 1. View documentation: just docs-view"
25952631 echo " 2. Check conformance reports at: http://localhost:8000/websocket/conformance.html"
0 commit comments