# Cua's published profile kit, scoped to its ABI packages, plus a separately pinned Omarchy patch.
# Normal reruns need a fresh build directory; makepkg -e reuses verified extracted trees.
# Profile kit: original source bytes and separately committed packaging tooling.
# shellcheck shell=bash disable=SC2034,SC2154
pkgname=cua-hyprland-plugin
pkgver=0.33.2
# Above the kit's own 0.33.2-2 qualification build, which carries neither the patch nor this profile.
pkgrel=3
pkgdesc='Cua input candidate for reviewed profile omarchy-edge-20261004-abi'
arch=('x86_64')
url='https://github.com/trycua/cua'
license=('MIT')
depends=('hyprland=0.56.2-4' 'aquamarine=0.15.1-1' 'glibc=2.44+r50+g1848099f063e-1' 'hyprcursor=0.1.13-7' 'hyprgraphics=0.5.1-4' 'hyprlang=0.6.8-5' 'hyprutils=0.14.2-1' 'libgcc=16.2.1+r23+gd564253eb6c8-1' 'libstdc++=16.2.1+r23+gd564253eb6c8-1' 'libxkbcommon=1.13.2-1' 'wayland=1.26.0-1' 'python>=3.11' 'binutils')
makedepends=('cmake>=3.30' 'ninja' 'pkgconf' 'gcc' 'patch')
options=('!strip' '!debug' '!lto')
_stem='cua-hyprland-plugin-0.33.2-c82d32e3e1adbc6578a148962002ddf6e3e8a15a'
_archive_sha256='79596a9a5e7300546ad4ab0646430edcf3e0c0456a541458de2a52b8c44a8fad'
_kit_sha256='a97fc47ec49600dfd79ba459c05a410b744e0a462b3a0cf59864a7d6fce9601d'
_profile_sha256='fe1b3f51a84962a188e9784116bf5f072ef692715adee71e996a6b95c5482976'
_verifier_sha256='480f649cbd35a0ddc7f49dc0a3a44785402c9e0ec9653b0f8ea4965d52d7f900'
_cxx="${CUA_RELEASE_CXX:-/usr/bin/g++}"
_download_name='cua-hyprland-plugin-0.33.2-c82d32e3e1adbc6578a148962002ddf6e3e8a15a-profile-omarchy-edge-20261004-kit-1.3.0-0ada2c227d0817b0228e9d8127e2363a785c13175a9b74fbebaedc9825d3a4fd-c82d32e3e1adbc6578a148962002ddf6e3e8a15a.tar.gz'
_download_sha256='ac560bba4bc656004564fd9cc09daea1206402148825ca7d7ac27ccdd56345b1'
source=("https://github.com/trycua/cua/releases/download/cua-hyprland-kit-v1.3.0-omarchy-edge-20261004/${_download_name}")
noextract=("$_download_name")
sha256sums=("$_download_sha256")

# Local inputs are also checked explicitly when makepkg integrity is skipped.
declare -gA _local_sha256=(
  ['PROFILE.json']='fe1b3f51a84962a188e9784116bf5f072ef692715adee71e996a6b95c5482976'
  ['kit.py']='f9d0fbcff1ffe62883b927bd3d5522822c8d1682330f57991485ad247326aac2'
  ['kit_test.py']='ab90cc54ee0c1b54129d52c165427de12292c5f14c7b0f21e9bb0a6438307fbd'
  ['downstream.patch']='87d3f560cfbd195748321a7e7ad2cb921c77cc022877de7890d3a711940f6e3c'
  ['DOWNSTREAM-PROVENANCE.json']='e743455ab81598f8db278d17d556414d6cc1457a2533b2918236ee360564b974'
  ['downstream.py']='7c9725805ad038737bd4d346c85f27991ce9ddfff436a32ebf515cad1bf98ca1'
  ['downstream_test.py']='7b9a992979b22a5e061fdf011ac6be59a3f1ae6e0d7c0a8ff631f74e71984c5a'
)
source+=('PROFILE.json' 'kit.py' 'kit_test.py' 'downstream.patch' 'DOWNSTREAM-PROVENANCE.json' 'downstream.py' 'downstream_test.py')
sha256sums+=('fe1b3f51a84962a188e9784116bf5f072ef692715adee71e996a6b95c5482976' 'f9d0fbcff1ffe62883b927bd3d5522822c8d1682330f57991485ad247326aac2' 'ab90cc54ee0c1b54129d52c165427de12292c5f14c7b0f21e9bb0a6438307fbd' '87d3f560cfbd195748321a7e7ad2cb921c77cc022877de7890d3a711940f6e3c' 'e743455ab81598f8db278d17d556414d6cc1457a2533b2918236ee360564b974' '7c9725805ad038737bd4d346c85f27991ce9ddfff436a32ebf515cad1bf98ca1' '7b9a992979b22a5e061fdf011ac6be59a3f1ae6e0d7c0a8ff631f74e71984c5a')

_inputs() {
  local name
  printf '%s  %s\n' "$_download_sha256" "$SRCDEST/$_download_name" | sha256sum -c - || return 1
  for name in "${!_local_sha256[@]}"; do
    printf '%s  %s\n' "${_local_sha256[$name]}" "$SRCDEST/$name" | sha256sum -c - || return 1
  done
}

_kit() {
  _inputs || return 1
  python3 -I -B "$SRCDEST/kit.py" "$1" --archive "$SRCDEST/$_download_name" --archive-sha256 "$_download_sha256" \
    --profile "$SRCDEST/PROFILE.json" --srcdir "$srcdir" --kit-sha256 "$_kit_sha256"
}

_verify() {
  _kit check || return 1
  # Explicit checks still apply to --skipinteg, --noextract and --repackage.
  printf '%s  %s\n' "$_archive_sha256" "$srcdir/cua-profile-kit/${_stem}.tar.gz" | sha256sum -c - || return 1
  printf '%s  %s\n' "$_kit_sha256" "$srcdir/cua-profile-kit/KIT-PROVENANCE.json" | sha256sum -c - || return 1
  printf '%s  %s\n' "$_profile_sha256" "$srcdir/cua-profile-kit/PROFILE.json" | sha256sum -c - || return 1
  printf '%s  %s\n' "$_verifier_sha256" "$srcdir/cua-profile-kit/profile_verify.py" | sha256sum -c - || return 1
  python3 "$srcdir/cua-profile-kit/profile_verify.py" --kit "$srcdir/cua-profile-kit" --kit-sha256 "$_kit_sha256" \
    --archive "$srcdir/cua-profile-kit/${_stem}.tar.gz" --source "$srcdir/$_stem" --cxx "$_cxx"
}

_downstream() {
  _inputs || return 1
  python3 -B "$SRCDEST/downstream.py" "$1" \
    --pristine "$srcdir/$_stem" --source "$srcdir/omarchy-source" \
    --patch "$SRCDEST/downstream.patch" --manifest "$SRCDEST/DOWNSTREAM-PROVENANCE.json" \
    --kit "$srcdir/cua-profile-kit" --kit-sha256 "$_kit_sha256" \
    --archive "$srcdir/cua-profile-kit/${_stem}.tar.gz" --cxx "$_cxx" "${@:2}"
}

prepare() {
  _kit extract || return 1
  _verify || return 1
  _downstream prepare
}

build() {
  _verify || return 1
  _downstream check || return 1
  cmake -S "$srcdir/omarchy-source" -B "$srcdir/build" -G Ninja \
    -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER="$_cxx" \
    -DPKG_CONFIG_EXECUTABLE=/usr/bin/pkgconf -DPKG_CONFIG_ARGN= \
    -DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=OFF -DCMAKE_PREFIX_PATH= \
    -DBUILD_TESTING=ON -DCUA_HYPRLAND_BUILD_PLUGIN=ON \
    -DCUA_HYPRLAND_EXPECTED_VERSION=0.56.2 \
    -DCUA_HYPRLAND_INPUT=ON -DCUA_HYPRLAND_TEST_INPUT=OFF \
    -DCUA_HYPRLAND_INPUT_TRACE=OFF -DCUA_HYPRLAND_TEST_OPERATOR_KEY= || return 1
  cmake --build "$srcdir/build"
}

check() {
  _verify || return 1
  _downstream check || return 1
  python3 -B "$SRCDEST/kit_test.py" "$SRCDEST/$_download_name" "$_download_sha256" \
    "$SRCDEST/PROFILE.json" "$_kit_sha256" || return 1
  python3 -B "$SRCDEST/downstream_test.py" || return 1
  (
    unset LD_PRELOAD FAKEROOTKEY FAKED_MODE
    ctest --test-dir "$srcdir/build" --output-on-failure --no-tests=error
  )
}

package() {
  check || return 1
  _downstream build --build "$srcdir/build" --output "$srcdir/BUILD-PROVENANCE.json" || return 1
  install -Dm755 "$srcdir/build/cua-hyprland-plugin.so" \
    "$pkgdir/usr/lib/cua/hyprland/cua-hyprland-plugin.so" || return 1
  install -Dm644 "$srcdir/$_stem/LICENSE.md" \
    "$pkgdir/usr/share/licenses/$pkgname/LICENSE" || return 1
  install -Dm644 "$srcdir/$_stem/SOURCE-PROVENANCE.json" \
    "$pkgdir/usr/share/$pkgname/SOURCE-PROVENANCE.json" || return 1
  local name
  install -Dm644 "$srcdir/BUILD-PROVENANCE.json" "$pkgdir/usr/share/$pkgname/BUILD-PROVENANCE.json" || return 1
  for name in KIT-PROVENANCE.json PROFILE.json profile_verify.py; do
    install -Dm644 "$srcdir/cua-profile-kit/$name" "$pkgdir/usr/share/$pkgname/$name" || return 1
  done
  for name in DOWNSTREAM-PROVENANCE.json downstream.patch; do
    install -Dm644 "$SRCDEST/$name" "$pkgdir/usr/share/$pkgname/$name" || return 1
  done
}
