# Modified from https://gitlab.archlinux.org/archlinux/packaging/packages/lf/-/blob/6ffd2d8ad375a154f184b11c3d6ac8e46162c3b9/PKGBUILD
# Contributor: Suyun114
# Contributor: Dirk Stolle

_realname=lf
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=36
pkgrel=1
pkgdesc='A terminal file manager inspired by ranger'
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
url='https://github.com/gokcehan/lf'
msys2_references=(
  'anitya: 269016'
  'archlinux: lf'
  'purl: pkg:golang/github.com/gokcehan/lf'
)
license=('MIT')
makedepends=('git' "${MINGW_PACKAGE_PREFIX}-go" "${MINGW_PACKAGE_PREFIX}-cc")
source=("$pkgname::git+$url#tag=r$pkgver")
sha512sums=('4db0e69c9586acd882b28923497f8007f6e338b3a6cc64ba60828770125f5aa26c7dd034920e294aa9dd7d30981cb2a026096b6343e08f1732eba6e5e41c523e')
b2sums=('97f15dbe15669e80a8c8374bd5207dc5cfe3d0122c00bda3add563e88568ccfe103933bb7218f14f92ffad69bf98fee79117f31ad60d53be30b03b2a845ce789')

pkgver() {
  cd "$pkgname"

  git describe --tags | sed 's/^r//'
}

prepare() {
  cd "$pkgname"

  # create directory for build output
  mkdir build

  # download dependencies
  export GOPATH="${srcdir}"
  go mod download
}

build() {
  cd "$pkgname"

  # set Go flags
  export CC=cc
  export CGO_CPPFLAGS="${CPPFLAGS}"
  export CGO_CFLAGS="${CFLAGS}"
  export CGO_CXXFLAGS="${CXXFLAGS}"
  export GOPATH="${srcdir}"

  go build -v \
    -buildmode=pie \
    -mod=readonly \
    -modcacherw \
    -ldflags "-compressdwarf=false \
    -linkmode external \
    -extldflags '${LDFLAGS}' \
    -X main.gVersion=$pkgver" \
    -o build \
    .
}

check() {
  cd "$pkgname"

  go test -v ./...
}

package() {
  cd "$pkgname"

  # binary
  install -vDm755 -t "$pkgdir/${MINGW_PREFIX}/bin" build/lf

  # man page
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/share/man/man1" lf.1

  # documentation
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/share/doc/$pkgname" README.md etc/lfrc.example

  # desktop file
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/share/applications" lf.desktop

  # vim integration
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/share/vim/vimfiles/syntax" etc/lf.vim
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/share/vim/vimfiles/ftdetect" etc/lf.vim

  # shell integrations
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/etc/profile.d" etc/*.{sh,csh}
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/share/fish/vendor_functions.d" etc/lfcd.fish

  # shell completions
  install -vDm644 etc/lf.bash "$pkgdir/${MINGW_PREFIX}/share/bash-completion/completions/lf"
  install -vDm644 etc/lf.fish "$pkgdir/${MINGW_PREFIX}/share/fish/vendor_completions.d/lf.fish"
  install -vDm644 etc/lf.zsh "$pkgdir/${MINGW_PREFIX}/share/zsh/site-functions/_lf"

  # license
  install -vDm644 -t "$pkgdir/${MINGW_PREFIX}/share/licenses/$pkgname" LICENSE
}
