# Maintainer:

_pkgbase="vte"
pkgbase="$_pkgbase-git"
pkgname=(
  "vte-common-git"
  "vte3-git"
  "vte3-utils-git"
  "vte4-git"
  "vte4-utils-git"
  "vte-docs-git"
)
pkgver=0.81.0.r20.gfd6780e8
pkgrel=1
pkgdesc="Virtual Terminal Emulator widget"
url="https://gitlab.gnome.org/GNOME/vte"
arch=(x86_64)
license=(
  # Library
  LGPL-3.0-or-later

  # Demo app, some supporting files
  GPL-3.0-or-later
)

makedepends=(
  fast_float
  fmt
  gi-docgen
  git
  glib2-devel
  gobject-introspection
  gperf
  gtk3
  gtk4
  meson
  vala
)

options=(!lto)

_pkgsrc="$_pkgbase"
source=("$_pkgsrc"::"git+$url.git")
sha256sums=('SKIP')

pkgver() {
  cd "$_pkgsrc"
  local _version _commit _revision _hash
  _version=$(
    grep -E "^\s+version:\s+'([0-9]+\.[0-9]+\.[0-9]+)',\$" meson.build \
      | sed -E "s@^\s+version:\s+'([0-9]+\.[0-9]+\.[0-9]+)',\$@\1@"
  )
  _commit=$(
    git log -S "${_version}" -1 --pretty=oneline | sed 's@\ .*$@@'
  )
  _revision=$(
    git rev-list --count "${_commit}..HEAD"
  )
  _hash=$(
    git rev-parse --short HEAD
  )

  echo "${_version}.r${_revision}.g${_hash}"
}

build() {
  local meson_options=(
    -D docs=true
    --wrap-mode default
  )

  arch-meson "$_pkgsrc" build "${meson_options[@]}"
  meson compile -C build
}

check() {
  meson test -C build --print-errorlogs
}

_pick() {
  local p="$1" f d
  shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_vte-common-git() {
  pkgdesc+=" (common files)"
  depends=(glibc)

  provides=("${pkgname%-git}=${pkgver%%.r*}")
  conflicts=("${pkgname%-git}")

  meson install -C build --destdir "$pkgdir"

  cd "$pkgdir"

  _pick vte3 usr/include/vte-2.91
  _pick vte3 usr/lib/libvte-2.91.so*
  _pick vte3 usr/lib/pkgconfig/vte-2.91.pc
  _pick vte3 usr/lib/girepository-1.0/Vte-2.91.typelib
  _pick vte3 usr/share/gir-1.0/Vte-2.91.gir
  _pick vte3 usr/share/glade
  _pick vte3 usr/share/vala/vapi/vte-2.91.{deps,vapi}

  _pick vte3-utils usr/bin/vte-2.91
  _pick vte3-utils usr/share/applications/org.gnome.Vte.App.Gtk3.desktop
  _pick vte3-utils usr/share/xdg-terminals/org.gnome.Vte.App.Gtk3.desktop

  _pick vte4 usr/include/vte-2.91-gtk4
  _pick vte4 usr/lib/libvte-2.91-gtk4.so*
  _pick vte4 usr/lib/pkgconfig/vte-2.91-gtk4.pc
  _pick vte4 usr/lib/girepository-1.0/Vte-3.91.typelib
  _pick vte4 usr/share/gir-1.0/Vte-3.91.gir
  _pick vte4 usr/share/vala/vapi/vte-2.91-gtk4.{deps,vapi}

  _pick vte4-utils usr/bin/vte-2.91-gtk4
  _pick vte4-utils usr/share/applications/org.gnome.Vte.App.Gtk4.desktop
  _pick vte4-utils usr/share/xdg-terminals/org.gnome.Vte.App.Gtk4.desktop

  _pick docs usr/share/doc
}

package_vte3-git() {
  pkgdesc+=" (GTK3)"
  license=(LGPL-3.0-or-later)
  depends=(
    cairo
    fmt
    fribidi
    gnutls
    gtk3
    pcre2
    vte-common
  )

  provides=(
    "${pkgname%-git}=${pkgver%%.r*}"
    libvte-2.91.so
  )
  conflicts=("${pkgname%-git}")

  mv vte3/* "$pkgdir"
}

package_vte3-utils-git() {
  pkgdesc="VTE3 test utilities"
  license=(GPL-3.0-or-later)
  depends=(
    cairo
    fmt
    gdk-pixbuf2
    glib2
    gtk3
    pango
    vte3
  )

  provides=("${pkgname%-git}=${pkgver%%.r*}")
  conflicts=("${pkgname%-git}")

  mv vte3-utils/* "$pkgdir"
}

package_vte4-git() {
  pkgdesc+=" (GTK4)"
  license=(LGPL-3.0-or-later)
  depends=(
    cairo
    fmt
    fribidi
    gnutls
    gtk4
    pcre2
    vte-common
  )

  provides=(
    "${pkgname%-git}=${pkgver%%.r*}"
    libvte-2.91-gtk4.so
  )
  conflicts=("${pkgname%-git}")

  mv vte4/* "$pkgdir"
}

package_vte4-utils-git() {
  pkgdesc="VTE4 test utilities"
  license=(GPL-3.0-or-later)
  depends=(
    cairo
    fmt
    gdk-pixbuf2
    glib2
    gtk4
    pango
    vte4
  )

  provides=("${pkgname%-git}=${pkgver%%.r*}")
  conflicts=("${pkgname%-git}")

  mv vte4-utils/* "$pkgdir"
}

package_vte-docs-git() {
  pkgdesc+=" (documentation)"
  arch=(any)

  provides=("${pkgname%-git}=${pkgver%%.r*}")
  conflicts=("${pkgname%-git}")

  mv docs/* "$pkgdir"
}