# Maintainer: OldJobobo
pkgbase=splinterm
pkgname=('splinterm' 'splinterm-mcp')
pkgver=0.1.1
pkgrel=1
arch=('x86_64')
url='https://github.com/oldjobobo/splinterm'
license=('MIT')
makedepends=('cargo' 'pkgconf' 'rust')
# Match the immutable renderer fixtures in .github/workflows/ci.yml.
_font_base='https://raw.githubusercontent.com/ryanoasis/nerd-fonts/fa7b859994228a9c8759f99c55a8d31ee92a1b5e/patched-fonts/JetBrainsMono/Ligatures'
source=(
  "$pkgbase-$pkgver.tar.gz"
  "$_font_base/Regular/JetBrainsMonoNerdFont-Regular.ttf"
  "$_font_base/Bold/JetBrainsMonoNerdFont-Bold.ttf"
  "$_font_base/Italic/JetBrainsMonoNerdFont-Italic.ttf"
  "$_font_base/BoldItalic/JetBrainsMonoNerdFont-BoldItalic.ttf"
)
sha256sums=(
  'SKIP' # Only the local archive generated from the reviewed Git commit.
  '0ec29a68b539ece7078fc714cebff0c0accb2f4948f8f7963d9f5e86633b12d9'
  'e82e27a7f37c9a0a13cc4e417503a149c6a0280586930772d2ebed803159c864'
  '981133a258ef4c62769a7a7214a4b455ac1c63923784a70f50c48977b67f7025'
  '961222be7bce59f310b41a3e158368d5ea22a47a0ac31defd57caac9b9e82cb0'
)

prepare() {
  cd "$pkgbase-$pkgver"
  export RUSTUP_TOOLCHAIN=stable
  cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
}

build() {
  cd "$pkgbase-$pkgver"
  export CARGO_TARGET_DIR=target
  export RUSTUP_TOOLCHAIN=stable
  cargo build --frozen --release \
    -p splinterm -p splinterd -p splinterm-relay -p splinterm-pty -p splinterm-mcp
}

check() (
  # Subshell keeps the fixture out of later build/package functions.
  cd "$pkgbase-$pkgver"
  export CARGO_TARGET_DIR=target
  export RUSTUP_TOOLCHAIN=stable
  FONTCONFIG_FILE=$(python tools/package/renderer-test-fonts.py \
    "$srcdir" "$srcdir/.splinterm-renderer-fonts") || return
  export FONTCONFIG_FILE
  cargo test --frozen --workspace -- --test-threads=1
  python -m unittest tools/automation/test_dojo_picker.py
  python -m unittest tools/package/test_installer_safety.py
  python -m unittest tools/package/test_omarchy_screensaver_integration.py
  python -m unittest tools/package/test_validate_mcp_package.py
  python -m unittest tools/package/test_workload_units.py
  python -m unittest tools/package/test_renderer_test_fonts.py
)

package_splinterm() {
  pkgdesc='Persistent Wayland terminal for humans and bounded automation'
  depends=(
    'fontconfig'
    'freetype2'
    'gcc-libs'
    'glibc'
    'hicolor-icon-theme'
    'libxkbcommon'
    'noto-fonts-cjk'
    'noto-fonts-emoji'
    'pixman'
    'python'
    'ttf-jetbrains-mono-nerd'
    'wayland'
    'xdg-terminal-exec'
  )
  optdepends=(
    'fcitx5: Wayland text-input support'
    'splinterm-mcp: explicitly configured MCP stdio adapter'
  )
  install=splinterm.install

  cd "$pkgbase-$pkgver"
  install -Dm755 target/release/splinterm "$pkgdir/usr/bin/splinterm"
  install -Dm755 target/release/splinterd "$pkgdir/usr/bin/splinterd"
  install -Dm755 target/release/splinterm-relay "$pkgdir/usr/bin/splinterm-relay"
  install -Dm755 target/release/splinterm-pty-child "$pkgdir/usr/bin/splinterm-pty-child"
  install -Dm755 dist/bin/splinterm-xdg-terminal-exec "$pkgdir/usr/bin/splinterm-xdg-terminal-exec"
  ln -s splinterm-xdg-terminal-exec "$pkgdir/usr/bin/splinterm-dojos"
  ln -s splinterm-xdg-terminal-exec "$pkgdir/usr/bin/splinterm-sessions"
  ln -s splinterm-xdg-terminal-exec "$pkgdir/usr/bin/splinterm-reopen"
  install -Dm755 tools/generate-omarchy-theme.py "$pkgdir/usr/bin/generate-omarchy-theme.py"
  install -Dm755 tools/automation/splinterm-dojo-picker.py \
    "$pkgdir/usr/bin/splinterm-dojo-picker"
  ln -s splinterm-dojo-picker "$pkgdir/usr/bin/splinterm-session-picker"

  install -Dm644 dist/applications/com.oldjobobo.splinterm.desktop \
    "$pkgdir/usr/share/applications/com.oldjobobo.splinterm.desktop"
  install -Dm644 dist/metainfo/com.oldjobobo.splinterm.metainfo.xml \
    "$pkgdir/usr/share/metainfo/com.oldjobobo.splinterm.metainfo.xml"
  install -Dm644 dist/icons/com.oldjobobo.splinterm.svg \
    "$pkgdir/usr/share/icons/hicolor/scalable/apps/com.oldjobobo.splinterm.svg"
  install -Dm644 dist/systemd/user/splinterd.service \
    "$pkgdir/usr/lib/systemd/user/splinterd.service"
  install -Dm644 dist/systemd/user/app-splinterm.slice \
    "$pkgdir/usr/lib/systemd/user/app-splinterm.slice"
  install -Dm755 dist/omarchy/omarchy-launch-screensaver \
    "$pkgdir/usr/lib/splinterm/integrations/omarchy-launch-screensaver"
  install -Dm644 dist/omarchy/screensaver.ini \
    "$pkgdir/usr/share/splinterm/omarchy/screensaver.ini"

  install -Dm644 README.md "$pkgdir/usr/share/doc/splinterm/README.md"
  install -Dm644 config/splinterm/config.ini "$pkgdir/usr/share/doc/splinterm/config.ini"
  install -Dm644 config/splinterm/presets.toml \
    "$pkgdir/usr/share/doc/splinterm/presets.example.toml"
  install -Dm644 config/splinterm/theme.json "$pkgdir/usr/share/doc/splinterm/theme.json"
  install -Dm644 dist/xdg-terminals.list "$pkgdir/usr/share/doc/splinterm/xdg-terminals.list"
  install -Dm644 docs/packaging.md "$pkgdir/usr/share/doc/splinterm/packaging.md"
  install -Dm644 docs/headless.md "$pkgdir/usr/share/doc/splinterm/headless.md"
  install -Dm644 docs/automation.md "$pkgdir/usr/share/doc/splinterm/automation.md"
  install -Dm644 docs/cli.md "$pkgdir/usr/share/doc/splinterm/cli.md"
  install -Dm644 docs/configuration.md "$pkgdir/usr/share/doc/splinterm/configuration.md"
  install -Dm644 docs/integrations.md "$pkgdir/usr/share/doc/splinterm/integrations.md"
  install -Dm644 docs/images.md "$pkgdir/usr/share/doc/splinterm/images.md"
  install -Dm644 docs/omarchy-tmux-reference.md \
    "$pkgdir/usr/share/doc/splinterm/omarchy-tmux-reference.md"
  install -Dm644 docs/presets.md "$pkgdir/usr/share/doc/splinterm/presets.md"
  install -Dm644 docs/remote.md "$pkgdir/usr/share/doc/splinterm/remote.md"
  install -Dm644 docs/usage.md "$pkgdir/usr/share/doc/splinterm/usage.md"
  install -Dm644 docs/accessibility.md "$pkgdir/usr/share/doc/splinterm/accessibility.md"
  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/splinterm/LICENSE"
  install -Dm644 THIRD_PARTY.md "$pkgdir/usr/share/licenses/splinterm/THIRD_PARTY.md"
}

package_splinterm-mcp() {
  pkgdesc='Policy-scoped MCP stdio adapter for Splinterm'
  depends=("splinterm=$pkgver-$pkgrel" 'gcc-libs' 'glibc')

  cd "$pkgbase-$pkgver"
  install -Dm755 target/release/splinterm-mcp "$pkgdir/usr/bin/splinterm-mcp"
  install -Dm644 docs/mcp.md "$pkgdir/usr/share/doc/splinterm/mcp.md"
  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/splinterm-mcp/LICENSE"
  install -Dm644 THIRD_PARTY.md "$pkgdir/usr/share/licenses/splinterm-mcp/THIRD_PARTY.md"
}
