#!/usr/bin/env bash # Upload local files to a GitHub release on the public distro repo (default: Dawnforger/Fractured-Distro). # # Usage (from repo root or this directory): # export GH_TOKEN=ghp_... # PAT with repo/releases on the distro repo # ./tools/fractured-launcher-electron/scripts/publish-to-distro.sh v1.0.0 Wow-patched.exe # # Optional: # DISTRO_REPO=YourOrg/Fratured-Distro # if your GitHub slug differs # SRC_TAG=v1.0.0 ./publish-to-distro.sh v1.0.0 # copy all assets from SOURCE_REPO release SRC_TAG # set -euo pipefail DISTRO_REPO="${DISTRO_REPO:-Dawnforger/Fractured-Distro}" SOURCE_REPO="${SOURCE_REPO:-Dawnforger/Fractured}" if ! command -v gh >/dev/null 2>&1; then echo "Install GitHub CLI: https://cli.github.com/" exit 1 fi if [ -z "${GH_TOKEN:-}" ]; then echo "Set GH_TOKEN to a PAT with releases write access to ${DISTRO_REPO}." exit 1 fi if [ "$#" -lt 1 ]; then echo "Usage: $0 [files...]" echo " or: SRC_TAG=v1.0.0 $0 # copies all assets from ${SOURCE_REPO} release SRC_TAG" exit 1 fi TAG="$1" shift if [ "$#" -eq 0 ] && [ -z "${SRC_TAG:-}" ]; then echo "After the tag, list files to upload, or set SRC_TAG=... to copy all assets from ${SOURCE_REPO}." exit 1 fi tmpdir=$(mktemp -d) cleanup() { rm -rf "$tmpdir"; } trap cleanup EXIT if [ "$#" -eq 0 ] && [ -n "${SRC_TAG:-}" ]; then echo "Downloading assets from ${SOURCE_REPO}@${SRC_TAG} …" gh release download "$SRC_TAG" -R "$SOURCE_REPO" -D "$tmpdir" else for f in "$@"; do if [ ! -f "$f" ]; then echo "Not a file: $f" exit 1 fi cp -a "$f" "$tmpdir/" done fi shopt -s nullglob files=("$tmpdir"/*) if [ "${#files[@]}" -eq 0 ]; then echo "No files to upload." exit 1 fi if gh release view "$TAG" -R "$DISTRO_REPO" &>/dev/null; then gh release upload "$TAG" -R "$DISTRO_REPO" "${files[@]}" --clobber echo "Uploaded to https://github.com/${DISTRO_REPO}/releases/tag/${TAG}" else gh release create "$TAG" -R "$DISTRO_REPO" \ --title "Fractured ${TAG}" \ --notes "Published from ${SOURCE_REPO} (local script)." \ "${files[@]}" echo "Created https://github.com/${DISTRO_REPO}/releases/tag/${TAG}" fi