#!/bin/bash
set -e  # Exit on error

# Set Variables
VERSION=$(curl -s https://dl.gitea.com/gitea/version.json | jq -r '.latest.version')
ARCHS=("amd64" "arm64")
GITEA_BASE_URL="https://dl.gitea.com/gitea/${VERSION}"
FILES=("xz" "xz.asc" "xz.sha256" "xz.sha256.asc")

# Download Gitea Binaries and Signatures
for ARCH in "${ARCHS[@]}"; do
	echo "Downloading Gitea ${VERSION} for ${ARCH}..."
	for FILE in "${FILES[@]}"; do
		FILE_NAME="gitea-${VERSION}-linux-${ARCH}.${FILE}"
		FILE_URL="${GITEA_BASE_URL}/${FILE_NAME}"
		TARGET_FILE="dist/${ARCH}/${FILE_NAME}"
	        if [[ -f "$TARGET_FILE" ]]; then
        		echo "✅ File already exists: $TARGET_FILE (Skipping)"
        	else
            		echo "⬇️  Downloading: $FILE_URL"
            		wget -q "$FILE_URL" -O "$TARGET_FILE"
        	fi
	done
done

# Verify GPG Signatures
for ARCH in "${ARCHS[@]}"; do
	echo "Verifying GPG signature for ${ARCH}..."
	gpg --verify "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz.asc" "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz"
	gpg --verify "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz.sha256.asc" "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz.sha256"
done


#  Verify Checksums
for ARCH in "${ARCHS[@]}"; do
	echo "Verifying SHA256 checksum for ${ARCH}..."
	(cd "dist/${ARCH}" && sha256sum -c gitea-${VERSION}-linux-${ARCH}.xz.sha256)
done

# expand the Gitea binray to the target
for ARCH in "${ARCHS[@]}"; do
	xz -dc "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz" > "${ARCH}/opt/gitea/bin/gitea" || { echo "❌ Extraction failed for ${ARCH}"; exit 1; }

	# Verify the extracted file isn't empty
	if [[ ! -s "${ARCH}/opt/gitea/bin/gitea" ]]; then
		echo "❌ Extracted file is empty for ${ARCH}. Something went wrong!"
		exit 1
	fi
	chmod +x "${ARCH}/opt/gitea/bin/gitea"
done
	
# Build Debian Packages
for ARCH in "${ARCHS[@]}"; do
    echo "Building package for ${ARCH}..."
    dpkg-deb --build "${ARCH}" "gitea_${VERSION}_${ARCH}.deb"
done

echo "All packages built successfully:"
ls -lh gitea_${VERSION}_*.deb