#!/bin/bash
# update.sh - Minimal Cydia/Sileo repo updater for ZodTTD & MacCity Archive

REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$REPO_DIR" || exit 1

generate_release() {
  local date
  date="$(date -u "+%a, %d %b %Y %H:%M:%S +0000")"

  hash_for() {
    local algo="$1" file="$2"
    if command -v md5sum >/dev/null 2>&1; then
      case "$algo" in
        md5) md5sum "$file" | awk '{print $1}' ;;
        sha1) sha1sum "$file" | awk '{print $1}' ;;
        sha256) sha256sum "$file" | awk '{print $1}' ;;
      esac
    else
      case "$algo" in
        md5) md5 -q "$file" ;;
        sha1) shasum -a 1 "$file" | awk '{print $1}' ;;
        sha256) shasum -a 256 "$file" | awk '{print $1}' ;;
      esac
    fi
  }

  hash_line() {
    local algo="$1" file="$2" size hash
    size="$(wc -c < "$file" | tr -d ' ')"
    hash="$(hash_for "$algo" "$file")"
    printf " %s %s %s\n" "$hash" "$size" "$file"
  }

  {
    cat <<EOF
Origin: ZodTTD & MacCity Archive
Label: ZodTTD & MacCity Archive
Suite: stable
Codename: stable
Architectures: iphoneos-arm
Components: main
Description: This is an archive/backup of the ZodTTD and MacCity Cydia repositories.
 Contains all available .deb packages from the original repos for historical preservation.
Date: ${date}

MD5Sum:
EOF
    hash_line md5 Packages
    hash_line md5 Packages.gz
    hash_line md5 Packages.bz2
    echo "SHA1:"
    hash_line sha1 Packages
    hash_line sha1 Packages.gz
    hash_line sha1 Packages.bz2
    echo "SHA256:"
    hash_line sha256 Packages
    hash_line sha256 Packages.gz
    hash_line sha256 Packages.bz2
  } > Release
}

echo "🛠 Running: dpkg-scanpackages -m ./debs > Packages"
dpkg-scanpackages -m ./debs > Packages

echo "🗜 Running: gzip -k Packages"
gzip -kf Packages

echo "🗜 Running: bzip2 -k Packages"
bzip2 -kf Packages

echo "📄 Running: generate Release"
generate_release

if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
  echo "📦 Git add all"
  git add -A

  echo "💬 Git commit"
  git commit -m "Update repo packages"
else
  echo "ℹ️ Skipping git commit: not inside a git repository"
fi

echo "✅ Done."
