#! /usr/bin/env bash # Args: [] [] ARG_REPO="$1" ARG_REPO_SOURCE="$2" ARG_REMOTE="$3" ARG_REMOTE_PATH="$4" ARG_GPG="$5" ARG_COLLECTION="$6" # # Generate # if [ -z "$NO_UPDATE" ] then REPO=() FLATPAK=() if [ -n "$ARG_GPG" ] then REPO=( "${REPO[@]}" "--gpg" "$ARG_GPG" ) FLATPAK=( "${FLATPAK[@]}" "--gpg-sign=$ARG_GPG" ) fi if [ -n "$ARG_COLLECTION" ] then REPO=( "${REPO[@]}" "-c" "$ARG_COLLECTION" ) FLATPAK=( "${FLATPAK[@]}" "--collection-id=$ARG_COLLECTION" "--deploy-collection-id" ) fi "$(dirname "$0")/update_repo.py" --no-fsync "${REPO[@]}" "$ARG_REPO" "$ARG_REPO_SOURCE" && flatpak build-update-repo --prune --prune-depth=5 "${FLATPAK[@]}" "$ARG_REPO" fi && # # Send data # if [ -z "$PORT" ] then export PORT=8000 fi && echo "PORT: $PORT" && export "LOCK_FILE=$(mktemp)" && ( ( cd "$ARG_REPO" && exec python3 -m http.server --bind 127.0.0.1 "$PORT" 2> /dev/null & SESSION="$!" && sleep 1 && exec 200> "$LOCK_FILE" && flock -x 200 && kill "$SESSION" && wait rm "$LOCK_FILE" ) &) && ( exec 200> "$LOCK_FILE" && flock -x 200 && sleep 10 && ssh "$ARG_REMOTE" -R"$PORT":127.0.0.1:"$PORT" bash -c \''ostree remote add --force --no-gpg-verify --repo "$0" origin http://127.0.0.1:'"$PORT"'/ && ostree pull --repo "$0" --mirror origin && flatpak build-update-repo --prune --prune-depth=5 --no-update-summary --no-update-appstream --generate-static-deltas "$0" '\' "$ARG_REMOTE_PATH" )