# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Grott is an application, so we use python-single-r1
PYTHON_COMPAT=( python3_{12..14} )
inherit git-r3 python-single-r1 systemd
DESCRIPTION="Growatt inverter monitor / datalogger"
HOMEPAGE="https://github.com/johanmeijer/grott"
# Target the specific branch requested
EGIT_REPO_URI="https://github.com/johanmeijer/grott.git"
EGIT_BRANCH="Alpha"
LICENSE="MIT"
SLOT="0"
KEYWORDS="amd64 arm arm64 x86"
IUSE="influxdb mqtt systemd"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
# Python dependencies
# Added requests as it is a core dependency of grott
RDEPEND="
${PYTHON_DEPS}
$(python_gen_cond_dep '
dev-python/requests[${PYTHON_USEDEP}]
dev-python/pyserial[${PYTHON_USEDEP}]
dev-python/psutil[${PYTHON_USEDEP}]
influxdb? ( dev-python/influxdb[${PYTHON_USEDEP}] )
mqtt? ( dev-python/paho-mqtt[${PYTHON_USEDEP}] )
')
"
DEPEND="${RDEPEND}"
src_install() {
# Install application files to /opt/grott
insinto /opt/grott
doins -r *
exeinto /opt/grott
doexe grott.py
dosym ../../opt/grott/grott.py /usr/bin/grott
insinto /etc/grott
newins examples/grott.ini grott.ini.example
if use systemd; then
# Copy to a temporary directory to be modified
cp "${FILESDIR}/${PN}.service" "${T}/${PN}.service" || die
sed -i -e "s|/usr/bin/python|${PYTHON}|" "${T}/${PN}.service" || die
# If mqtt is enabled, uncomment mosquitto requirement
if use mqtt; then
sed -i -e 's/^#Wants=mosquitto.service/Wants=mosquitto.service/' \
"${T}/${PN}.service" || die
fi
# If influxdb is enabled, uncomment influxdb requirements
if use influxdb; then
sed -i -e 's/^#Wants=influxdb.service/Wants=influxdb.service/' \
-e 's/^#After=influxdb.service/After=influxdb.service/' \
"${T}/${PN}.service" || die
fi
# Install the final parsed unit file
systemd_newunit "${T}/${PN}.service" "${PN}.service"
fi
}
pkg_postinst() {
elog "Grott has been installed to /opt/grott."
elog "An example configuration file has been placed in /etc/grott/grott.ini.example."
elog ""
elog "Copy it to grott.ini and configure it before starting the service:"
elog " cp /etc/grott/grott.ini.example /etc/grott/grott.ini"
}