# Maintainer: Shun Li <riverscn@gmail.com>
# Extracted from omacom/omarchy-pkgs PR #240, revision dcef132b2df11bb762e233ea8c6af3110f079b67.

pkgname=obsidian
pkgver=1.13.7
pkgrel=2
pkgdesc='Knowledge base on top of a local folder of plain-text Markdown files'
arch=('aarch64')
url='https://obsidian.md/'
license=('custom')
depends=(
  'alsa-lib'
  'at-spi2-core'
  'cairo'
  'dbus'
  'expat'
  'fontconfig'
  'gcc-libs'
  'glib2'
  'glibc'
  'gtk3'
  'hicolor-icon-theme'
  'libcups'
  'libnotify'
  'libsecret'
  'libx11'
  'libxcb'
  'libxcomposite'
  'libxdamage'
  'libxext'
  'libxfixes'
  'libxkbcommon'
  'libxrandr'
  'mesa'
  'nspr'
  'nss'
  'pango'
  'systemd-libs'
  'xdg-utils'
)
provides=('obsidian')
conflicts=('obsidian-appimage' 'obsidian-bin')
options=('!debug' '!strip')
checkdepends=('python')
source=('obsidian.desktop' 'upstream.py' 'test-upstream.py')
source_aarch64=(
  "obsidian-${pkgver}-arm64.tar.gz::https://github.com/obsidianmd/obsidian-releases/releases/download/v${pkgver}/obsidian-${pkgver}-arm64.tar.gz"
)
sha256sums=('42ecb332c900a01b2a6db0a70b4cc8c0553e863aee72894b23ed20a6289b131c'
            'd2933bdc97d9ba55986d710114512e0eb105e1cc549cef4aa7416cb333e0a9b8'
            '7213e4e691c53e184b0f037478ac6758fe44adad7a984fc1daef7fd17c31d5d8')
sha256sums_aarch64=('98aac34d1f132a35cf506fc3fa196d595dcdeefdebd44b0cc5faaa7a1a210de2')

check() {
  python test-upstream.py
}

package() {
  local source_dir="$srcdir/obsidian-${pkgver}-arm64"
  local install_dir="$pkgdir/opt/obsidian"

  install -d "$install_dir"
  cp -a --no-preserve=ownership "$source_dir/." "$install_dir/"

  # The official ARM64 archive currently carries two x86_64-only addons.
  # Remove only an unusable x86_64 payload; retain it automatically if the
  # vendor starts shipping an AArch64 build in a later release.
  local addon machine
  for addon in \
    resources/app.asar.unpacked/node_modules/btime/binding.node \
    resources/app.asar.unpacked/node_modules/get-fonts/binding.node; do
    [[ -f "$install_dir/$addon" ]] || continue
    machine=$(readelf -h "$install_dir/$addon" |
      sed -n 's/^[[:space:]]*Machine:[[:space:]]*//p')
    case "$machine" in
      AArch64) ;;
      'Advanced Micro Devices X86-64') rm -f "$install_dir/$addon" ;;
      *) error "Unexpected Obsidian addon architecture: $addon ($machine)"; return 1 ;;
    esac
  done

  find "$install_dir" -type d -exec chmod 755 {} +
  find "$install_dir" -type f -exec chmod 644 {} +
  chmod 755 \
    "$install_dir/chrome_crashpad_handler" \
    "$install_dir/obsidian" \
    "$install_dir/obsidian-cli"
  # Chromium sandboxes through unprivileged user namespaces, which Arch-family
  # kernels allow; a setuid-root helper is not needed.
  chmod 755 "$install_dir/chrome-sandbox"

  install -d "$pkgdir/usr/bin"
  ln -s /opt/obsidian/obsidian "$pkgdir/usr/bin/obsidian"
  ln -s /opt/obsidian/obsidian-cli "$pkgdir/usr/bin/obsidian-cli"
  install -Dm644 "$srcdir/obsidian.desktop" \
    "$pkgdir/usr/share/applications/obsidian.desktop"
  install -Dm644 "$install_dir/resources/icon.png" \
    "$pkgdir/usr/share/icons/hicolor/512x512/apps/obsidian.png"
  install -Dm644 "$install_dir/LICENSE.electron.txt" \
    "$pkgdir/usr/share/licenses/$pkgname/LICENSE.electron.txt"
  install -Dm644 "$install_dir/LICENSES.chromium.html" \
    "$pkgdir/usr/share/licenses/$pkgname/LICENSES.chromium.html"
}
