# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 )
#DISTUTILS_USE_PEP517="no"
#inherit python-single-r1
#inherit distutils-r1
inherit python-single-r1 webapp optfeature

DESCRIPTION="A cron monitoring service and background task monitoring service"
HOMEPAGE="https://github.com/healthchecks/healthchecks"
SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"

LICENSE="BSD"
KEYWORDS="~amd64 ~arm64"

IUSE="apache apprise mysql nginx postgres +sqlite"
REQUIRED_USE="
	${PYTHON_REQUIRED_USE}
	|| ( mysql postgres sqlite )
"

DOCS="CONTRIBUTING.md README.md SECURITY.md"

RDEPEND="
	${PYTHON_DEPS}
	apache? ( www-apache/mod_wsgi )
	apprise? ( dev-python/apprise )
	mysql? ( dev-python/mysqlclient )
	nginx? ( www-servers/nginx[nginx_modules_uwsgi] )
	postgres? ( dev-python/psycopg )
	sqlite? ( dev-lang/python[sqlite] )
	!apache? ( !nginx? ( www-servers/uwsgi ) )
	$(python_gen_cond_dep '
		dev-python/aiosmtpd[${PYTHON_USEDEP}]
		dev-python/cronsim[${PYTHON_USEDEP}]
		>=dev-python/django-5.1[${PYTHON_USEDEP}]
		dev-python/django-compressor[${PYTHON_USEDEP}]
		dev-python/django-stubs-ext[${PYTHON_USEDEP}]
		dev-python/fido2[${PYTHON_USEDEP}]
		dev-python/oncalendar[${PYTHON_USEDEP}]
		dev-python/pycurl[${PYTHON_USEDEP}]
		dev-python/pydantic[${PYTHON_USEDEP}]
		dev-python/pyotp[${PYTHON_USEDEP}]
		dev-python/segno[${PYTHON_USEDEP}]
		dev-python/statsd[${PYTHON_USEDEP}]
		dev-python/whitenoise[${PYTHON_USEDEP}]
	')
"
DEPEND="
	${RDEPEND}
"
PROPERTIES="test_network" #actually sends a test request

pkg_setup() {
	python-single-r1_pkg_setup
	webapp_pkg_setup
}

src_test() {
	./manage.py test
}

src_compile() {
	DEBUG=False SECRET_KEY=build-key ./manage.py compress --force
	DEBUG=False SECRET_KEY=build-key ./manage.py collectstatic --no-input
}

src_install() {
	python_optimize hc

	mv hc/local_settings.py.example hc/local_settings.py || die

	webapp_src_preinst

	insinto "${MY_HTDOCSDIR}"

	doins manage.py
	doins CHANGELOG.md
	doins -r hc static static-collected templates

	webapp_hook_script "${FILESDIR}"/reconfig
	webapp_configfile "${MY_HTDOCSDIR}"/hc/local_settings.py

	local x
	for x in $(find templates/ -type f); do
		webapp_configfile "${MY_HTDOCSDIR}"/${x}
	done

	webapp_src_install

	newinitd "${FILESDIR}"/ht-sendalerts.initd ht-sendalerts
	newinitd "${FILESDIR}"/ht-sendreports.initd ht-sendreports
}

pkg_postinst() {
	webapp_pkg_postinst

	optfeature "send Signal notifications\
	    https://blog.healthchecks.io/2023/01/how-healthchecks-sends-signal-notifications" \
	    net-im/signal-cli-bin
}