Files

58 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PACKAGING="${ROOT}/packaging"
MANIFEST="${PACKAGING}/manifest.json"
DIST="${ROOT}/dist"
STAGING="${DIST}/staging"
VERSION="$(python3 -c "import json; print(json.load(open('${MANIFEST}'))['version'])")"
PACKAGE_NAME="hexagamecloud-whmcs-${VERSION}"
ZIP_PATH="${DIST}/${PACKAGE_NAME}.zip"
CHECKSUMS_PATH="${DIST}/checksums.txt"
rm -rf "${STAGING}" "${ZIP_PATH}"
mkdir -p "${STAGING}/modules/servers" "${STAGING}/modules/addons" "${STAGING}/hooks" "${STAGING}/lib" "${DIST}"
copy_tree() {
local source="$1"
local target="$2"
if command -v rsync >/dev/null 2>&1; then
rsync -a --exclude '.gitkeep' "${source}/" "${target}/"
else
cp -a "${source}/." "${target}/"
fi
}
copy_tree "${ROOT}/modules/servers/hexagamecloud" "${STAGING}/modules/servers/hexagamecloud"
copy_tree "${ROOT}/modules/addons/hexagamecloud" "${STAGING}/modules/addons/hexagamecloud"
copy_tree "${ROOT}/hooks" "${STAGING}/hooks"
copy_tree "${ROOT}/lib" "${STAGING}/lib"
cp "${MANIFEST}" "${STAGING}/manifest.json"
(
cd "${STAGING}"
zip -r "${ZIP_PATH}" .
)
SHA256="$(sha256sum "${ZIP_PATH}" | awk '{print $1}')"
SHA512="$(sha512sum "${ZIP_PATH}" | awk '{print $1}')"
FILE_SIZE="$(stat -c '%s' "${ZIP_PATH}")"
BUILT_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
cat > "${CHECKSUMS_PATH}" <<EOF
# HexaHost GameCloud WHMCS package checksums
# version=${VERSION}
# built_at=${BUILT_AT}
SHA256 ${SHA256} ${PACKAGE_NAME}.zip
SHA512 ${SHA512} ${PACKAGE_NAME}.zip
SIZE ${FILE_SIZE} ${PACKAGE_NAME}.zip
EOF
rm -rf "${STAGING}"
echo "Built ${ZIP_PATH}"
echo "Checksums written to ${CHECKSUMS_PATH}"