70 lines
1.8 KiB
Bash
70 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
WORKDIR=${WORKDIR:-/var/www/html}
|
|
SRC_DIR="${WORKDIR}/clients/photobooth-uploader/PhotoboothUploader"
|
|
OUT_DIR="${WORKDIR}/public/downloads"
|
|
WIN_FILE="${OUT_DIR}/PhotoboothUploader-win-x64.exe"
|
|
MAC_FILE="${OUT_DIR}/PhotoboothUploader-macos-x64"
|
|
LINUX_FILE="${OUT_DIR}/PhotoboothUploader-linux-x64"
|
|
STAMP_FILE="${OUT_DIR}/photobooth-uploader.hash"
|
|
|
|
if [[ ! -d "$SRC_DIR" ]]; then
|
|
echo "[photobooth-uploader] Source directory not found: ${SRC_DIR}"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
compute_hash() {
|
|
find "$SRC_DIR" -type f \
|
|
-not -path "*/bin/*" \
|
|
-not -path "*/obj/*" \
|
|
-print \
|
|
| LC_ALL=C sort \
|
|
| xargs sha256sum \
|
|
| sha256sum \
|
|
| awk '{print $1}'
|
|
}
|
|
|
|
HASH=$(compute_hash)
|
|
|
|
if [[ -f "$WIN_FILE" && -f "$MAC_FILE" && -f "$LINUX_FILE" && -f "$STAMP_FILE" ]]; then
|
|
CURRENT_HASH=$(cat "$STAMP_FILE" || true)
|
|
if [[ "$CURRENT_HASH" == "$HASH" ]]; then
|
|
echo "[photobooth-uploader] Up to date, skipping publish."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
publish_target() {
|
|
local rid="$1"
|
|
local output_file="$2"
|
|
local temp_dir
|
|
temp_dir=$(mktemp -d)
|
|
|
|
dotnet publish "${SRC_DIR}/PhotoboothUploader.csproj" \
|
|
-c Release \
|
|
-r "$rid" \
|
|
--self-contained true \
|
|
/p:PublishSingleFile=true \
|
|
/p:IncludeNativeLibrariesForSelfExtract=true \
|
|
-o "$temp_dir"
|
|
|
|
if [[ "$rid" == "win-x64" ]]; then
|
|
mv -f "$temp_dir/PhotoboothUploader.exe" "$output_file"
|
|
else
|
|
mv -f "$temp_dir/PhotoboothUploader" "$output_file"
|
|
fi
|
|
|
|
rm -rf "$temp_dir"
|
|
}
|
|
|
|
echo "[photobooth-uploader] Publishing uploader binaries..."
|
|
publish_target "win-x64" "$WIN_FILE"
|
|
publish_target "osx-x64" "$MAC_FILE"
|
|
publish_target "linux-x64" "$LINUX_FILE"
|
|
|
|
echo "$HASH" > "$STAMP_FILE"
|
|
echo "[photobooth-uploader] Published to ${OUT_DIR}"
|