Skip to content

Instantly share code, notes, and snippets.

@drhayes
Created February 18, 2020 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drhayes/7c0d09e3e799510b34e9a395a1017767 to your computer and use it in GitHub Desktop.
Save drhayes/7c0d09e3e799510b34e9a395a1017767 to your computer and use it in GitHub Desktop.
Gemini Rising release script as of 2020-02-18
#!/usr/bin/env bash
set -e
set -x
MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MY_DIR=$(realpath "${MY_DIR}"/..)
GITHUB_WORKSPACE=${GITHUB_WORKSPACE:-$MY_DIR}
LOVEVERSION="11.2"
ITCH_USER=drhayes
GAME_NAME=gemini-rising
VERSION=$(git describe --tags)
CHANNEL=alpha
BINDIR=$(realpath "${GITHUB_WORKSPACE}/bin")
SRCDIR=$(realpath "${GITHUB_WORKSPACE}/src")
RELEASEDIR=$(realpath "${GITHUB_WORKSPACE}/release")
LOVEFILE=${RELEASEDIR}/${GAME_NAME}.love
WIN64=love-${LOVEVERSION}-win64
OSX=love-${LOVEVERSION}-macos
# Sanity, we haz it.
echo LOVEFILE is "${LOVEFILE}"
echo RELEASEDIR is "${RELEASEDIR}"
echo VERSION is "${VERSION}"
echo CHANNEL is "${CHANNEL}"
# Download the binaries.
mkdir -p "${BINDIR}"
pushd "${BINDIR}"
curl -OL "https://bitbucket.org/rude/love/downloads/${WIN64}.zip"
curl -OL "https://bitbucket.org/rude/love/downloads/${OSX}.zip"
curl -L -o butler.zip https://broth.itch.ovh/butler/linux-amd64/LATEST/archive/default
unzip butler.zip
# GNU unzip tends to not set the executable bit even though it's set in the .zip
chmod +x butler
# just a sanity check run (and also helpful in case you're sharing CI logs)
./butler -V
# Make sure the release directory exists.
mkdir -p "${RELEASEDIR}"
# Make the love file first.
pushd "${SRCDIR}"
zip -9 -r "${LOVEFILE}" ./* -x test/
popd
# Tell GitHub actions the path of the .love artifact.
echo ::set-output name=lovepath::${LOVEFILE}
pushd "${BINDIR}"
# Win64.
unzip -j "${BINDIR}/${WIN64}.zip" -d "${RELEASEDIR}/${GAME_NAME}-win64"
pushd "${RELEASEDIR}/${GAME_NAME}-win64"
cat love.exe "${LOVEFILE}" > "${GAME_NAME}.exe"
rm love.exe lovec.exe
cd ..
zip -r "${RELEASEDIR}/${GAME_NAME}-win64.zip" "${GAME_NAME}-win64/"
popd
# Tell GitHub actions the path of the built artifact.
echo ::set-output name=win64path::${RELEASEDIR}/${GAME_NAME}-win64.zip
# Linux.
mkdir love-file-dir
cp "${LOVEFILE}" love-file-dir
# OSX.
TMPDIR=$(mktemp -d)
unzip -o "${BINDIR}/${OSX}.zip" -d "${TMPDIR}"
cp "${TMPDIR}/love.app" "${RELEASEDIR}/${GAME_NAME}.app" -Rv
cp "${LOVEFILE}" "${RELEASEDIR}/${GAME_NAME}.app/Contents/Resources/${GAME_NAME}.love"
# TODO: Replace game icons.
# TODO: Replace Info.plist info.
zip -ry "${RELEASEDIR}/${GAME_NAME}-osx.zip" "${RELEASEDIR}/${GAME_NAME}.app"
# Tell GitHub actions the path of the built artifact.
echo ::set-output name=osxpath::${RELEASEDIR}/${GAME_NAME}-osx.zip
# Butler push.
pushd "${BINDIR}"
./butler push "${RELEASEDIR}/${GAME_NAME}-win64.zip" "${ITCH_USER}/${GAME_NAME}:win64-${CHANNEL}" --userversion "${VERSION}"
./butler push "${RELEASEDIR}/${GAME_NAME}-osx.zip" "${ITCH_USER}/${GAME_NAME}:osx-${CHANNEL}" --userversion "${VERSION}"
./butler push love-file-dir "${ITCH_USER}/${GAME_NAME}:linux-${CHANNEL}" --userversion "${VERSION}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment