set -euo pipefail
die() {
echo "ERROR:" "$@" >&2
exit 1
}
if [[ -n "${TARGET_ARCH+defined}" ]]; then
BUILD_TARGET_DIR="target/${TARGET_ARCH}/release"
else
BUILD_TARGET_DIR="target/release"
fi
PACKAGE_NAME="${PROJECT_NAME}-${VERSION}-${BUILD_NAME}"
cd "$(dirname "${BASH_SOURCE[0]}")/.."
[[ ! -e "$PACKAGE_NAME" ]] \
|| die "the file or directory ${PACKAGE_NAME} exists against expectation!"
mkdir "$PACKAGE_NAME"
trap "rm -Rd '${PACKAGE_NAME}'" EXIT
BINARY_PATH="${BUILD_TARGET_DIR}/${BINARY_NAME}"
[[ -f "$BINARY_PATH" ]] \
|| die "binary ${BINARY_PATH} missin; forgot to build"
cp "$BINARY_PATH" "${PACKAGE_NAME}/"
cp README.md "${PACKAGE_NAME}/"
cp LICENSE "${PACKAGE_NAME}/"
cp NOTICE "${PACKAGE_NAME}/"
MAN_FILE="man/${BINARY_NAME}.1"
[[ -f "$MAN_FILE" ]] \
|| die "manual page ${MAN_FILE} missing; forgot to generate?"
cp "$MAN_FILE" "${PACKAGE_NAME}/"
cat <<EOF > "${PACKAGE_NAME}/install.sh"
#!/usr/bin/env bash
PREFIX="\${PREFIX-\$HOME/.local}"
install -D -m 0755 -t "\${PREFIX}/bin" "$BINARY_NAME"
install -D -m 0644 -t "\${PREFIX}/share/man/man1" "$(basename "$MAN_FILE")"
EOF
chmod +x "${PACKAGE_NAME}/install.sh"
TARBALL_PATH="$PACKAGE_NAME.tar.gz"
tar -czf "$TARBALL_PATH" "$PACKAGE_NAME"/*
TARBALL_SHA256="$(sha256sum "$TARBALL_PATH" | cut -c 1-64)"
cat <<EOF
TARBALL_PATH=${TARBALL_PATH}
TARBALL_SHA256=${TARBALL_SHA256}
EOF
if "${GITHUB_OUTPUTS:-false}"; then
echo "::set-output name=tarball-path::${TARBALL_PATH}"
echo "::set-output name=tarball-sha256::${TARBALL_SHA256}"
fi