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

EAPI=8

PYTHON_COMPAT=( python3_{10..12} )
DISTUTILS_USE_PEP517=poetry
inherit distutils-r1 readme.gentoo-r1 systemd

DESCRIPTION="Notus is a vulnerability scanner for creating results from local security checks"
HOMEPAGE="https://github.com/greenbone/notus-scanner"
SRC_URI="https://github.com/greenbone/notus-scanner/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"

SLOT="0"
LICENSE="AGPL-3 AGPL-3+"
KEYWORDS="amd64 ~x86"

DEPEND="
	acct-user/gvm
	net-libs/paho-mqtt-c
	>=dev-python/psutil-5.9[${PYTHON_USEDEP}]
	>=dev-python/python-gnupg-0.5.1[${PYTHON_USEDEP}]
	<dev-python/packaging-24.1[${PYTHON_USEDEP}]
	>=dev-python/paho-mqtt-1.5.1[${PYTHON_USEDEP}]
	<dev-python/tomli-3[${PYTHON_USEDEP}]
"

RDEPEND="
	${DEPEND}
	app-misc/mosquitto
"

PATCHES=(
	"${FILESDIR}"/notus-scanner-22.6.2-remove-tests.patch
)

DOC_CONTENTS="
For validating the feed content, a GnuPG keychain with the Greenbone Community Feed integrity key needs to be created.
Please, read here on how to create it:
https://greenbone.github.io/docs/latest/22.4/source-build/index.html#feed-validation
https://wiki.gentoo.org/wiki/Greenbone_Vulnerability_Management#Notus_Scanner

To enable feed validation, edit /etc/gvm/${PN}.toml
and set
disable-hashsum-verification = false"
DISABLE_AUTOFORMATTING=true

distutils_enable_tests unittest

python_compile() {
	distutils-r1_python_compile
}

python_install() {
	distutils-r1_python_install

	insinto /etc/gvm
	use prefix || fowners -R gvm:gvm /etc/gvm
	newins "${FILESDIR}/${PN}.toml" "${PN}.toml"
	use prefix || fowners gvm:gvm "/etc/gvm/${PN}.toml"

	# Set proper permissions on required files/directories
	keepdir /var/lib/notus
	keepdir /var/lib/notus/products
	keepdir /var/lib/notus/advisories
	if ! use prefix; then
		fowners -R gvm:gvm /var/lib/notus
	fi

	newinitd "${FILESDIR}/${PN}.initd" "${PN}"

	systemd_dounit config/${PN}.service

	systemd_install_serviced "${FILESDIR}/notus-scanner.service.conf" \
			${PN}.service
	readme.gentoo_create_doc
}

pkg_postinst() {
	readme.gentoo_print_elog
}