mirror of
https://github.com/orbien-org/orbien.git
synced 2026-09-21 16:01:31 +00:00
98 lines
2.2 KiB
Bash
Executable File
98 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
NAME=""
|
|
VERSION=""
|
|
OS=""
|
|
ARCH=""
|
|
LIBC=""
|
|
OUTDIR="dist/release"
|
|
BIN=""
|
|
CONFIG=""
|
|
ASSETS=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--name) NAME="$2"; shift 2 ;;
|
|
--version) VERSION="$2"; shift 2 ;;
|
|
--os) OS="$2"; shift 2 ;;
|
|
--arch) ARCH="$2"; shift 2 ;;
|
|
--libc) LIBC="$2"; shift 2 ;;
|
|
--outdir) OUTDIR="$2"; shift 2 ;;
|
|
--bin) BIN="$2"; shift 2 ;;
|
|
--config) CONFIG="$2"; shift 2 ;;
|
|
--assets) ASSETS="$2"; shift 2 ;;
|
|
*) echo "unknown arg: $1" >&2; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "$NAME" || -z "$VERSION" || -z "$OS" || -z "$ARCH" || -z "$BIN" ]]; then
|
|
echo "missing required args" >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$BIN" ]]; then
|
|
echo "binary not found: $BIN" >&2
|
|
exit 1
|
|
fi
|
|
if [[ "$OS" == "linux" && -z "$LIBC" ]]; then
|
|
echo "linux packages require --libc gnu|musl" >&2
|
|
exit 1
|
|
fi
|
|
if [[ -n "$LIBC" && "$LIBC" != "gnu" && "$LIBC" != "musl" ]]; then
|
|
echo "invalid --libc: $LIBC (expected gnu|musl)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
STAGE="$(mktemp -d)"
|
|
trap 'rm -rf "$STAGE"' EXIT
|
|
|
|
BIN_BASENAME="$(basename "$BIN")"
|
|
case "$OS" in
|
|
windows)
|
|
case "$NAME" in
|
|
orbien) DEST_BIN="orbien.exe" ;;
|
|
orbien-server) DEST_BIN="orbien-server.exe" ;;
|
|
orbien-desktop) DEST_BIN="orbien-desktop.exe" ;;
|
|
*) DEST_BIN="${BIN_BASENAME}" ;;
|
|
esac
|
|
;;
|
|
*)
|
|
case "$NAME" in
|
|
orbien) DEST_BIN="orbien" ;;
|
|
orbien-server) DEST_BIN="orbien-server" ;;
|
|
orbien-desktop) DEST_BIN="orbien-desktop" ;;
|
|
*) DEST_BIN="${BIN_BASENAME}" ;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
cp "$BIN" "${STAGE}/${DEST_BIN}"
|
|
chmod +x "${STAGE}/${DEST_BIN}" || true
|
|
|
|
if [[ -n "$CONFIG" ]]; then
|
|
if [[ ! -f "$CONFIG" ]]; then
|
|
echo "config not found: $CONFIG" >&2
|
|
exit 1
|
|
fi
|
|
cp "$CONFIG" "${STAGE}/$(basename "$CONFIG")"
|
|
fi
|
|
|
|
if [[ -n "$ASSETS" ]]; then
|
|
if [[ ! -d "$ASSETS" ]]; then
|
|
echo "assets dir not found: $ASSETS" >&2
|
|
exit 1
|
|
fi
|
|
mkdir -p "${STAGE}/assets"
|
|
cp -R "${ASSETS}/." "${STAGE}/assets/"
|
|
fi
|
|
|
|
mkdir -p "$OUTDIR"
|
|
if [[ -n "$LIBC" ]]; then
|
|
ARCHIVE="${OUTDIR}/${NAME}_${VERSION}_${OS}_${ARCH}_${LIBC}.tar.gz"
|
|
else
|
|
ARCHIVE="${OUTDIR}/${NAME}_${VERSION}_${OS}_${ARCH}.tar.gz"
|
|
fi
|
|
tar -C "$STAGE" -czf "$ARCHIVE" .
|
|
echo "wrote ${ARCHIVE}"
|
|
ls -lh "$ARCHIVE"
|