#!/usr/bin/env bash # Publish one release asset through stoke, creating the release when needed. # # Usage: publish-release.sh set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" TAG="${1:?usage: publish-release.sh }" VERSION="${2:?usage: publish-release.sh }" DEB="${3:?usage: publish-release.sh }" OWNER="${4:?usage: publish-release.sh }" REPO="${5:?usage: publish-release.sh }" FORGE_URL="${FORGE_URL:-${GITHUB_SERVER_URL:?GITHUB_SERVER_URL or FORGE_URL is required}}" RELEASE_TOKEN="${RELEASE_TOKEN:?RELEASE_TOKEN is required}" [ -f "$DEB" ] || { echo "publish-release: no such asset: $DEB" >&2; exit 1; } if [ -n "${RUNNER_TEMP:-}" ]; then TMP="$(mktemp -d "$RUNNER_TEMP/stoke-release.XXXXXX")" else TMP="$(mktemp -d)" fi trap 'rm -rf "$TMP"' EXIT TOKEN_FILE="$TMP/token" CONFIG_FILE="$TMP/config.json" NOTES_FILE="$TMP/notes.md" umask 077 printf '%s' "$RELEASE_TOKEN" > "$TOKEN_FILE" chmod 0600 "$TOKEN_FILE" run_stoke() { if [ -n "${STOKE:-}" ]; then "$STOKE" --config "$CONFIG_FILE" "$@" else node "$ROOT/src/cli.js" --config "$CONFIG_FILE" "$@" fi } run_stoke auth login --url "$FORGE_URL" --token-file "$TOKEN_FILE" "$ROOT/scripts/changelog-section.sh" "$VERSION" CHANGELOG.md > "$NOTES_FILE" if run_stoke release view --owner "$OWNER" --repo "$REPO" --tag "$TAG" --json >/dev/null 2>&1; then run_stoke release upload --owner "$OWNER" --repo "$REPO" --tag "$TAG" --asset "$DEB" else run_stoke release create --owner "$OWNER" --repo "$REPO" --tag "$TAG" \ --title "$TAG" --body-file "$NOTES_FILE" --asset "$DEB" fi