#!/usr/bin/env bash # This script is used to zip up the built binary for release, # and is used in the GitHub workflow to create a release artifact BIN_NAME="rokit" BIN_EXT="" CWD="$PWD" # We should have gotten TARGET_TRIPLE as the first arg to this script TARGET_TRIPLE="$1" if [ -z "$TARGET_TRIPLE" ]; then echo "Usage: $0 " exit 1 fi TARGET_DIR="target/$TARGET_TRIPLE/release" if [ ! -d "$TARGET_DIR" ]; then echo "Target directory '$TARGET_DIR' does not exist" exit 1 fi # Use exe extension on windows OS="$(uname -s | tr '[:upper:]' '[:lower:]')" case "$OS" in darwin) OS="macos" ;; linux) OS="linux" ;; cygwin*|mingw*|msys*) OS="windows" ;; *) echo "Unsupported OS: $OS" >&2 exit 1 ;; esac if [ "$OS" = "windows" ]; then BIN_EXT=".exe" fi # Clean up any previous artifacts and dirs rm -rf staging rm -rf release.zip # Create new staging dir to work in and copy the binary into that mkdir -p staging cp "$TARGET_DIR/$BIN_NAME$BIN_EXT" staging/ cd staging # Zip the staging dir up if [ "$OS" = "windows" ]; then 7z a ../release.zip * else chmod +x "$BIN_NAME" zip ../release.zip * fi # Go back to cwd and clean up staging dir cd "$CWD" rm -rf staging