71 lines
2.1 KiB
Bash
Executable File
71 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
VERSION="${VERSION:-$(git -C "${ROOT_DIR}" describe --tags --always --dirty 2>/dev/null || echo dev)}"
|
|
RELEASE_DIR="${RELEASE_DIR:-${ROOT_DIR}/release}"
|
|
APP_NAME="browser-fingerprint"
|
|
PACKAGE_NAME="${APP_NAME}-${VERSION}"
|
|
PACKAGE_DIR="${RELEASE_DIR}/${PACKAGE_NAME}"
|
|
BUILD_DOCKER="${BUILD_DOCKER:-0}"
|
|
|
|
rm -rf "${RELEASE_DIR}"
|
|
mkdir -p "${PACKAGE_DIR}/frontend" "${PACKAGE_DIR}/backend"
|
|
|
|
cd "${ROOT_DIR}/frontend"
|
|
corepack enable
|
|
corepack prepare [email protected] --activate
|
|
pnpm install --frozen-lockfile
|
|
pnpm test
|
|
pnpm build
|
|
|
|
cd "${ROOT_DIR}/backend"
|
|
cargo fmt --check
|
|
cargo test --locked
|
|
cargo build --release --locked
|
|
|
|
cp "${ROOT_DIR}/backend/target/release/fingerprint_receiver" "${PACKAGE_DIR}/"
|
|
cp "${ROOT_DIR}/README.md" "${PACKAGE_DIR}/"
|
|
cp "${ROOT_DIR}/compose.yml" "${PACKAGE_DIR}/"
|
|
cp "${ROOT_DIR}/backend/schema.sql" "${PACKAGE_DIR}/backend/"
|
|
cp -R "${ROOT_DIR}/backend/data" "${PACKAGE_DIR}/backend/data"
|
|
cp -R "${ROOT_DIR}/frontend/dist" "${PACKAGE_DIR}/frontend/dist"
|
|
|
|
cat > "${PACKAGE_DIR}/RUNNING.md" <<EOF
|
|
# Running ${APP_NAME} ${VERSION}
|
|
|
|
## Binary
|
|
|
|
\`\`\`bash
|
|
DATABASE_URL=sqlite://fingerprints.db \\
|
|
ASSETS_DIR=frontend/dist \\
|
|
GEOIP_CITY_DB=backend/data/dbip-city-ipv4.mmdb \\
|
|
GEOIP_ASN_DB=backend/data/origin-asn.mmdb \\
|
|
./fingerprint_receiver
|
|
\`\`\`
|
|
|
|
## Docker Compose
|
|
|
|
\`\`\`bash
|
|
APP_PORT=8787 APP_DATA=\$PWD/data docker compose up -d
|
|
\`\`\`
|
|
EOF
|
|
|
|
tar -C "${RELEASE_DIR}" -czf "${RELEASE_DIR}/${PACKAGE_NAME}-runtime-linux-x86_64.tar.gz" "${PACKAGE_NAME}"
|
|
|
|
if git -C "${ROOT_DIR}" rev-parse --verify HEAD >/dev/null 2>&1; then
|
|
git -C "${ROOT_DIR}" archive \
|
|
--format=tar.gz \
|
|
--prefix="${PACKAGE_NAME}-source/" \
|
|
--output="${RELEASE_DIR}/${PACKAGE_NAME}-source.tar.gz" \
|
|
HEAD
|
|
fi
|
|
|
|
if [[ "${BUILD_DOCKER}" == "1" ]] && command -v docker >/dev/null 2>&1; then
|
|
docker build -f "${ROOT_DIR}/backend/Dockerfile" -t "${APP_NAME}:${VERSION}" "${ROOT_DIR}"
|
|
docker save "${APP_NAME}:${VERSION}" | gzip -c > "${RELEASE_DIR}/${PACKAGE_NAME}-docker-image.tar.gz"
|
|
fi
|
|
|
|
rm -rf "${PACKAGE_DIR}"
|
|
find "${RELEASE_DIR}" -maxdepth 1 -type f -print
|