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

pkgname=paperless-ngx
pkgver=1.16.5
pkgrel=2
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"
install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-install"
depends="
	file
	gnupg
	imagemagick
	mailcap
	ocrmypdf
	optipng
	redis
	sqlite
	tesseract-ocr
	tesseract-ocr-data-osd
	ttf-liberation
	uvicorn
	py3-aiohttp
	py3-anyio
	py3-arrow
	py3-asgiref
	py3-async-timeout
	py3-attrs
	py3-autobahn
	py3-automat
	py3-blessed
	py3-certifi
	py3-celery
	py3-chardet
	py3-charset-normalizer
	py3-click
	py3-concurrent-log-handler
	py3-constantly
	py3-cryptography
	py3-daphne
	py3-dateparser
	py3-deprecation
	py3-django-allauth
	py3-django-channels
	py3-django-channels-redis
	py3-django-compression-middleware
	py3-django-celery-results
	py3-django-cors-headers
	py3-django-extensions
	py3-django-filter
	py3-django-guardian
	py3-django-picklefield
	py3-django-q
	py3-django-rest-framework
	py3-django-rest-framework-guardian
	py3-filelock
	py3-fuzzywuzzy
	py3-gunicorn
	py3-h11
	py3-hiredis
	py3-httptools
	py3-humanfriendly
	py3-hyperlink
	py3-idna
	py3-imap-tools
	py3-incremental
	py3-inotify-simple
	py3-inotifyrecursive
	py3-ipware
	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
	py3-zstandard
	postgresql
	jbig2enc
	"
builddir="$srcdir"/$pkgname

source="
	$url/releases/download/v$pkgver/$pkgname-v$pkgver.tar.xz
	1746_add-OpenID-Connect-SSO-support-via-django-allauth.patch
	paperless-scheduler.openrc
	paperless-consumer.openrc
	paperless-webserver.openrc
	paperless-task-queue.openrc
	paperless.conf
	"
options="!strip !check" # No testsuite
subpackages="$pkgname-openrc"

prepare() {
	default_prepare

	# use alpine linux canonical paths
 	sed -i "$srcdir"/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 "$srcdir"/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
	install -Dm 755 "$srcdir"/paperless-task-queue.openrc "$pkgdir"/etc/init.d/paperless-task-queue

}
sha512sums="
c82e65e70cead10e1d282d3e2c617a1da1f06d9acf6c75f2894b07c7e1e93be0c2f53dac475378399776f4a244e59f12c711348c61ca9eed8e8cf55fc6e4bced  paperless-ngx-v1.16.5.tar.xz
71526db0d48f26168005de06a91f6099c318c6622b70d7af32a899a2e485b34876e94fe14d7434367232d80fbbf8c4d75281874283ab832fd8568dfea3b87bdf  1746_add-OpenID-Connect-SSO-support-via-django-allauth.patch
b782dd9479d31d2f6a82e86639bb5e2bb3675c1ffc1d6b08e027e10159dd58ed9f68b5986b9d7c8a326e95384e701bcf9834101d6a6720db7e97465e4d295d36  paperless-scheduler.openrc
b4413f48b481d53b3e10542f5ffe830928c40ae016e2dc1da533ae8b546c5b6e4ddfa1129280807f866002f61b283c4eba327be6eb04171e259fe27fec47696a  paperless-consumer.openrc
e9c517f7fbae269072506316711a12a6ba5568456348305972caf023020de5ebeab45401371fe114fe8dbddfacbcc6cfd01d0fad2b2ade6ee3883f46120b904e  paperless-webserver.openrc
fb51af7c4765121f7e97add4da31352e02c3888ffe5575b26c11d6dd043e0d9e7504e9ed35ccc81e3751a41ffb6fcf6dcddd22da9df25021d903494c7340105b  paperless-task-queue.openrc
8dd13bf9d63ca838285978e9dc1635dc45d21ae0cbb3f1ce402097f566cc1f74bce6635f1324714aacf85c6a20bc61bab76deb04081813ac207fffd421f8ee8f  paperless.conf
"