#!/bin/bash
# MoExtension: cài bằng một dòng lệnh trên macOS (chủ 06/10/2026 chọn hướng dẫn "Vẫn mở" + dòng Terminal).
#   curl -fsSL https://moextension.com/i.sh | bash
# curl không gắn cờ com.apple.quarantine nên Gatekeeper không hỏi dù app chưa ký Apple. CHƯA ĐO trên Mac thật.
# Kiểm SHA-256 gói app trước khi đặt vào Applications.
#
# Danh mục (app/danh-muc.json) do app/scripts/phat-hanh.mjs ghi, mỗi khoá một dòng, "mac" chỉ có ở mục moextension;
# lấy url + sha256 bằng awk vì macOS không có sẵn jq. Phát hành bản mới không phải sửa tệp này.
# Chạy thử: MOEXT_DANH_MUC=<url danh mục giả> MOEXT_THU=1 (cho phép http, dừng ngay sau khi kiểm SHA-256).
# Cả tệp nằm trong hàm main gọi ở dòng cuối: tải đứt giữa chừng thì bash không chạy nửa lệnh nào.
set -euo pipefail

lay() { # lay <danh mục> <khoá trong mục mac>
  printf '%s\n' "$1" | awk -v k="$2" '/"mac"[[:space:]]*:/ { f = 1 }
    f && $0 ~ "\"" k "\"" { gsub(/.*: *"|",?[[:space:]]*$/, ""); print; exit }'
}

tam=""
main() {
  local nguon="${MOEXT_DANH_MUC:-https://moextension.com/app/danh-muc.json}" thu="${MOEXT_THU:-}"
  local dm url sha ban dich
  dm=$(curl -fsSL "$nguon") || { echo "Không đọc được danh mục ở moextension.com. Kiểm tra mạng rồi chạy lại." >&2; exit 1; }
  url=$(lay "$dm" url)
  sha=$(lay "$dm" sha256)
  ban=$(printf '%s\n' "$dm" | awk '/"moextension"/ { f = 1 } f && /"phienBan"/ { gsub(/.*: *"|",?[[:space:]]*$/, ""); print; exit }')
  if ! [[ $sha =~ ^[0-9a-f]{64}$ ]] || { [[ $url != https://* ]] && [ -z "$thu" ]; }; then
    echo "Danh mục không có bản macOS hợp lệ. Liên hệ moextension.com/contact." >&2; exit 1
  fi

  tam=$(mktemp -d)
  trap 'rm -rf "$tam"' EXIT
  echo "Đang tải MoExtension $ban..."
  curl -fL --progress-bar -o "$tam/mo.zip" "$url"
  if [ "$(shasum -a 256 "$tam/mo.zip" | cut -d' ' -f1)" != "$sha" ]; then
    echo "Tệp tải về không khớp mã SHA-256, chưa cài gì. Chạy lại lệnh." >&2; exit 1
  fi
  if [ -n "$thu" ]; then echo "THỬ: mã SHA-256 khớp, dừng trước khi bung và đặt app."; return; fi

  ditto -x -k "$tam/mo.zip" "$tam/x"
  [ -f "$tam/x/MoExtension.app/Contents/Info.plist" ] || { echo "Gói tải về thiếu MoExtension.app. Liên hệ moextension.com/contact." >&2; exit 1; }
  dich=/Applications
  [ -w "$dich" ] || { dich="$HOME/Applications"; mkdir -p "$dich"; }
  rm -rf "$dich/MoExtension.app"
  mv "$tam/x/MoExtension.app" "$dich/"
  xattr -dr com.apple.quarantine "$dich/MoExtension.app" 2>/dev/null || true
  echo "Đã cài vào $dich. Đang mở MoExtension..."
  open "$dich/MoExtension.app"
}

main "$@"
