# Maintainer: Alexey Pavlov <alexpux@gmail.com>

_realname=asciidoctor
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=2.0.10
pkgrel=3
pkgdesc="An implementation of AsciiDoc in Ruby (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
url='https://asciidoctor.org/'
license=('MIT')
depends=("${MINGW_PACKAGE_PREFIX}-ruby")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc")
source=(https://rubygems.org/downloads/${_realname}-${pkgver}.gem)
sha256sums=('7f3df92816f75344d36bb15e49a6fbc07ac0999a1cd2938fd0802ea587964aac')

check() {
  local _gemdir="$(ruby -e 'puts Gem.default_dir')"
  _gemdir="$(cygpath -u ${_gemdir})"

  ${MINGW_PREFIX}/bin/gem check --verbose \
    "${_realname}-${pkgver}.gem"
}

package() {
  local _gemdir="$(${MINGW_PREFIX}/bin/ruby -e 'puts Gem.default_dir')"
  _gemdir="$(cygpath -u ${_gemdir})"

  ${MINGW_PREFIX}/bin/gem install --ignore-dependencies --no-user-install --verbose \
    -i "${pkgdir}/${_gemdir}" -n "${pkgdir}${MINGW_PREFIX}/bin" \
    "${_realname}-${pkgver}.gem"

  local _ruby_exe=$(cygpath -m ${MINGW_PREFIX}/bin/ruby.exe)

  #for this conversion, we want the fully qualified ruby .exe path
  #so that we can be sure that we are calling the correct one.
  sed -e "s|${_ruby_exe}|${MINGW_PREFIX}/bin/ruby|g" \
      -i ${pkgdir}${MINGW_PREFIX}/bin/asciidoctor

  #for Win32 .bat files, we want to drop the path references as the path
  #refs are not needed since it's involved from the same dir.  If we did
  #need fully-qualified pathes, they would have to be fully-qualified and
  # in DOS format.
  local _inst_dir=$(cygpath -m ${pkgdir}/${MINGW_PREFIX}/bin/)
  local _w_ruby_exe=$(cygpath -w ${MINGW_PREFIX}/bin/ruby.exe | sed 's/\\/\\\\/g')
  sed  -e "s|${_w_ruby_exe}|ruby.exe|g" \
       -e "s|${_inst_dir}||g" \
       -i ${pkgdir}${MINGW_PREFIX}/bin/asciidoctor.bat

  install -Dm644 "${pkgdir}/${_gemdir}/gems/${_realname}-${pkgver}/LICENSE" \
    "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
  install -Dm644 "${pkgdir}/${_gemdir}/gems/${_realname}-${pkgver}/man/asciidoctor.1" \
    "${pkgdir}${MINGW_PREFIX}/share/man/man1/asciidoctor.1"

  rm "${pkgdir}/${_gemdir}/cache/${_realname}-${pkgver}.gem"
  rm -rf "${pkgdir}${MINGW_PREFIX}/${_gemdir}/gems/${_realname}-${pkgver}/man"
}
