#!/usr/bin/env bash
# Qt updater acilmasa bile en son Mac paketini /Applications/Clonify.app'e kurar.
# Sadece curl + shasum + ditto. Gizli anahtar yok — public /downloads/ sayfasi.
set -euo pipefail

BASE="${CLONIFY_DOWNLOADS_BASE:-https://api.clonifylabs.com}"
case "$BASE" in
    https://*) ;;
    *) echo "HATA: CLONIFY_DOWNLOADS_BASE https olmali" >&2; exit 1 ;;
esac
DEST="${1:-/Applications/Clonify.app}"

html="$(curl --proto '=https' --proto-redir '=https' -fsSL "${BASE}/downloads/")"
zip_path="$(printf '%s' "$html" | grep -oE '/downloads/[0-9.]+/Clonify-macOS-x86_64\.zip' | head -1)"
[[ -n "$zip_path" ]] || zip_path="$(printf '%s' "$html" | grep -oE '/downloads/[0-9.]+/Clonify-macOS\.zip' | head -1)"
[[ -n "$zip_path" ]] || { echo "HATA: indirme sayfasinda macOS zip yok" >&2; exit 1; }

ver="$(printf '%s' "$zip_path" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)"
zip_name="$(basename "$zip_path")"
sums="$(curl --proto '=https' --proto-redir '=https' -fsSL "${BASE}/downloads/${ver}/SHA256SUMS" || true)"
sha="$(printf '%s' "$sums" | tr -d '\r' | awk -v n="$zip_name" '$2==n {print $1; exit}')"
[[ "${#sha}" -eq 64 ]] || { echo "HATA: SHA-256 bulunamadi ($zip_name)" >&2; exit 1; }

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
zip="${tmp}/Clonify-macOS.zip"
echo "Indiriliyor: ${BASE}${zip_path} (v${ver})"
curl --proto '=https' --proto-redir '=https' -fL --retry 3 -o "$zip" "${BASE}${zip_path}"
got="$(shasum -a 256 "$zip" | awk '{print $1}')"
[[ "$got" == "$sha" ]] || { echo "HATA: SHA-256 uyusmadi" >&2; exit 1; }

extract="${tmp}/extract"
mkdir -p "$extract"
if command -v ditto >/dev/null 2>&1; then
    ditto -x -k "$zip" "$extract"
else
    unzip -o "$zip" -d "$extract"
fi

app="$(find "$extract" -maxdepth 3 -name 'Clonify.app' -type d | head -1)"
[[ -x "${app}/Contents/MacOS/Clonify" ]] || { echo "HATA: pakette Clonify.app yok" >&2; exit 1; }

pkill -x Clonify 2>/dev/null || true
pkill -x QClonifyApp 2>/dev/null || true
sleep 1

new="${DEST}.new"
old="${DEST}.old"
rm -rf "$new" "$old"
mkdir -p "$(dirname "$DEST")"
ditto "$app" "$new"
[[ -x "${new}/Contents/MacOS/Clonify" ]] || { rm -rf "$new"; echo "HATA: kopya basarisiz" >&2; exit 1; }
if [[ -d "$DEST" ]]; then
    mv "$DEST" "$old"
fi
if ! mv "$new" "$DEST"; then
    [[ -d "$old" ]] && mv "$old" "$DEST"
    echo "HATA: yer degistirme basarisiz" >&2
    exit 1
fi
xattr -dr com.apple.quarantine "$DEST" 2>/dev/null || true
rm -rf "$old"
echo "Kuruldu: $DEST (v${ver})"
open "$DEST"
