# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>

pkgname=paperless-ngx
pkgver=1.11.3
pkgrel=0
pkgdesc="A community-supported supercharged version of paperless: scan, index and archive all your physical documents"
url="https://github.com/paperless-ngx/paperless-ngx"
license="GPL-3.0-only"
# s390x: ocrmypdf py3-joblib py3-scikit-learn py3-watchfiles
# armhf / ppc64le: py3-uvloop
arch="noarch !s390x !armhf !ppc64le"
depends="
	file
	gnupg
	py3-gunicorn
	imagemagick
	mailcap
	ocrmypdf
	optipng
	redis
	sqlite
	tesseract-ocr
	tesseract-ocr-data-fra
	ttf-liberation
	py3-uvicorn
	py3-aiohttp
	py3-anyio
	py3-arrow
	py3-asgiref
	py3-async-timeout
	py3-attrs
	py3-autobahn
	py3-automat
	py3-blessed
	py3-certifi
	py3-django-channels
	py3-django-channels-redis
	py3-chardet
	py3-charset-normalizer
	py3-click
	py3-concurrent-log-handler
	py3-constantly
	py3-cryptography
	py3-daphne
	py3-dateparser py3-django
	py3-deprecation
	py3-django-cors-headers
	py3-django-extensions
	py3-django-filter
	py3-django-picklefield
	py3-django-q
	py3-django-rest-framework
	py3-filelock
	py3-fuzzywuzzy
	py3-h11
	py3-hiredis
	py3-httptools
	py3-humanfriendly
	py3-hyperlink
	py3-idna
	py3-imap-tools
	py3-incremental
	py3-inotify-simple
	py3-inotifyrecursive
	py3-joblib
	py3-langdetect
	py3-lxml
	py3-msgpack
	py3-numpy
	py3-pathvalidate
	py3-portalocker
	py3-psycopg2
	py3-asn1
	py3-asn1-modules
	py3-cparser
	py3-openssl
	py3-dateutil
	py3-dotenv
	py3-gnupg
	py3-levenshtein
	py3-magic
	py3-pdf2image
	py3-pyzbar
	py3-pillow
	py3-tz
	py3-redis
	py3-regex
	py3-requests
	py3-scikit-learn
	py3-scipy
	py3-service_identity
	py3-six
	py3-sniffio
	py3-sortedcontainers
	py3-sqlparse
	py3-threadpoolctl
	py3-tika
	py3-twisted
	py3-txaio
	py3-urllib3
	py3-uvloop
	py3-watchdog
	py3-watchfiles
	py3-wcwidth
	py3-websockets
	py3-whitenoise
	py3-whoosh
	py3-yaml
	py3-zope-interface
	postgresql
	jbig2enc
	"
builddir="$srcdir"/$pkgname

source="
	$url/releases/download/v$pkgver/$pkgname-v$pkgver.tar.xz
	paperless-scheduler.openrc
	paperless-consumer.openrc
	paperless-webserver.openrc
	"
options="!strip !check" # No testsuite
subpackages="$pkgname-openrc"

prepare() {
	default_prepare

	# use alpine linux canonical paths
 	sed -i "paperless.conf" \
		-e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/var/lib/paperless/consume|" \
		-e "s|#PAPERLESS_DATA_DIR=../data|PAPERLESS_DATA_DIR=/var/lib/paperless/data|" \
		-e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/var/lib/paperless/media|" \
		-e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/usr/share/webapps/paperless/static|" \
		-e "s|#PAPERLESS_CONVERT_TMPDIR=/var/tmp/paperless|PAPERLESS_CONVERT_TMPDIR=/var/lib/paperless/tmp|"

	# remove hardcoded bind address
	sed -i "gunicorn.conf.py" \
		-e "s|bind = '0.0.0.0:8000'||"

	# add custom dir for uploaded files
	printf "\n# Uploads\n\nPAPERLESS_SCRATCH_DIR=/var/lib/paperless/uploads" >> "paperless.conf"

	# add customizable bind address, will be used by paperless-webserver.service
	printf "\n\n# Webserver\n\nGUNICORN_CMD_ARGS='--bind=127.0.0.1:8000'" >> "paperless.conf"
}

package() {
	# program files
	install -d "$pkgdir/usr/bin" "$pkgdir/usr/share/webapps"
	cp -R "$builddir" "$pkgdir/usr/share/webapps/paperless"

	# main executable
	chmod 755 "$pkgdir/usr/share/webapps/paperless/src/manage.py"
	ln -s "/usr/share/webapps/paperless/src/manage.py" "$pkgdir/usr/bin/paperless-manage"

	# config file
	install -D -m 640 "paperless.conf" "$pkgdir/etc/paperless.conf"
	rm "$pkgdir/usr/share/webapps/paperless/paperless.conf"
	ln -s "/etc/paperless.conf" "$pkgdir/usr/share/webapps/paperless/paperless.conf"

	# openrc file
	install -Dm 755 "$srcdir"/paperless-scheduler.openrc "$pkgdir"/etc/init.d/paperless-scheduler
	install -Dm 755 "$srcdir"/paperless-consumer.openrc "$pkgdir"/etc/init.d/paperless-consumer
	install -Dm 755 "$srcdir"/paperless-webserver.openrc "$pkgdir"/etc/init.d/paperless-webserver
}
sha512sums="
c2bf0ef90c9df938f8165944737b6a4157f2d94ab577e13b8202b2c1372e2e34b213a57a535b19c88421acdb73dc04b9e633cc9cd4c857c1868809e08e79fd24  paperless-ngx-v1.11.3.tar.xz
a62a499c1d8fede5685e98f639c1155fdc7387eaf7908b04317a9af6594427d11416730f4dd127cf2e249ac97242634acf900fe32541edfe95ac9298eeea0cd6  paperless-scheduler.openrc
b4413f48b481d53b3e10542f5ffe830928c40ae016e2dc1da533ae8b546c5b6e4ddfa1129280807f866002f61b283c4eba327be6eb04171e259fe27fec47696a  paperless-consumer.openrc
e9c517f7fbae269072506316711a12a6ba5568456348305972caf023020de5ebeab45401371fe114fe8dbddfacbcc6cfd01d0fad2b2ade6ee3883f46120b904e  paperless-webserver.openrc
"