Something went wrong. Try again.
a tiny pet with a GPT-2 brain, living in your browser
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#!/bin/bash# Install an exported model and the vendored browser runtime into a static web# root. Both directories are immutable once published (they are meant to be# served with a long-lived immutable cache header): ship a new model id or# runtime name instead of replacing files.## Usage: publish.sh MODEL_DIR MODEL_ID RUNTIME_DIR RUNTIME_NAME# Env: STATIC_ROOT web root to publish into (required)# BASE directory under it for the app (default: tokenling)# FILE_MODE mode for published files (default: 0644)# DIR_MODE mode for created directories (default: 0755)# Result: $STATIC_ROOT/$BASE/models/MODEL_ID/ and $STATIC_ROOT/$BASE/runtime/RUNTIME_NAME/set -euo pipefail[ $# -eq 4 ] || { echo "usage: $0 MODEL_DIR MODEL_ID RUNTIME_DIR RUNTIME_NAME" >&2; exit 2; }SRC=$1 ID=$2 RT=$3 RTNAME=$4: "${STATIC_ROOT:?set STATIC_ROOT to the web root to publish into}"ROOT=$STATIC_ROOT/${BASE:-tokenling}FMODE=${FILE_MODE:-0644} DMODE=${DIR_MODE:-0755}(cd "$SRC" && sha256sum -c --quiet SHA256SUMS)install -d -m "$DMODE" "$ROOT" "$ROOT/models" "$ROOT/runtime"if [ -e "$ROOT/models/$ID" ]; then echo "$ROOT/models/$ID exists; refusing to replace a published model" >&2; exit 1; fiMODEL_PARTIAL=$ROOT/models/$ID.partialRUNTIME_PARTIAL=trap 'rm -rf "$MODEL_PARTIAL"; [ -z "$RUNTIME_PARTIAL" ] || rm -rf "$RUNTIME_PARTIAL"' EXITtrap 'exit 1' HUP INT TERMrm -rf "$MODEL_PARTIAL"install -d -m "$DMODE" "$MODEL_PARTIAL" "$MODEL_PARTIAL/onnx"for f in "$SRC"/*.json "$SRC"/SHA256SUMS; do install -m "$FMODE" "$f" "$MODEL_PARTIAL/"; donefor f in "$SRC"/onnx/*.onnx; do install -m "$FMODE" "$f" "$MODEL_PARTIAL/onnx/"; done(cd "$MODEL_PARTIAL" && sha256sum -c --quiet SHA256SUMS)if [ ! -e "$ROOT/runtime/$RTNAME" ]; then RUNTIME_PARTIAL=$ROOT/runtime/$RTNAME.partial rm -rf "$RUNTIME_PARTIAL" install -d -m "$DMODE" "$RUNTIME_PARTIAL" for f in "$RT"/*; do install -m "$FMODE" "$f" "$RUNTIME_PARTIAL/"; done # Generate the manifest from the copied payload, not from an old manifest. rm -f "$RUNTIME_PARTIAL/SHA256SUMS" (cd "$RUNTIME_PARTIAL" && sha256sum -- * > SHA256SUMS && chmod "$FMODE" SHA256SUMS && sha256sum -c --quiet SHA256SUMS)fi# Both copies are complete. Publish a newly needed runtime first, so a failed# runtime copy never consumes the immutable model id and a retry can reuse it.if [ -n "$RUNTIME_PARTIAL" ]; then mv -T -n "$RUNTIME_PARTIAL" "$ROOT/runtime/$RTNAME"fimv -T -n "$MODEL_PARTIAL" "$ROOT/models/$ID"[ ! -e "$MODEL_PARTIAL" ] || { echo "$ROOT/models/$ID exists; refusing to replace a published model" >&2; exit 1; }du -sh "$ROOT/models/$ID" "$ROOT/runtime/$RTNAME"