58 lines
1.6 KiB
Bash
Executable File
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}"
|