From d57b5cd7830a5b4ed1437b1b648dca62a9b6eea3 Mon Sep 17 00:00:00 2001 From: Jan T Date: Thu, 23 Jul 2026 19:24:22 +0300 Subject: */*: initial commit --- www/aggro/Makefile | 61 +++++++++++++++++++++++++++++++++++++++++++++ www/aggro/files/aggro.in | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ www/aggro/pkg-descr | 2 ++ 3 files changed, 128 insertions(+) create mode 100644 www/aggro/Makefile create mode 100644 www/aggro/files/aggro.in create mode 100644 www/aggro/pkg-descr (limited to 'www/aggro') diff --git a/www/aggro/Makefile b/www/aggro/Makefile new file mode 100644 index 0000000..7a69b4b --- /dev/null +++ b/www/aggro/Makefile @@ -0,0 +1,61 @@ +PORTNAME= aggro +PORTVERSION= 1.0.0 +CATEGORIES= www + +MAINTAINER= jan@jantuomi.fi +COMMENT= Configurable web content aggregator with alerting + +LICENSE= MIT + +USE_GITHUB= yes +GH_ACCOUNT= jantuomi +GH_PROJECT= aggro +GH_TAGNAME= main + +NO_CHECKSUM= yes +NO_ARCH= yes +NO_BUILD= yes + +USES= python:3.11+ +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}beautifulsoup>0:www/py-beautifulsoup@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}bottle>0:www/py-bottle@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}feedparser>0:textproc/py-feedparser@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-dotenv>0:www/py-python-dotenv@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}schedule>0:devel/py-schedule@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}sgmllib3k>0:devel/py-sgmllib3k@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}tinydb>0:databases/py-tinydb@${PY_FLAVOR} + +SUB_LIST= PYTHON_CMD=${PYTHON_CMD} + +USE_RC_SUBR= aggro + +APPDIR= ${PREFIX}/aggro +STAGE_APPDIR= ${STAGEDIR}${APPDIR} + +do-install: + ${MKDIR} ${STAGE_APPDIR}/app + ${MKDIR} ${STAGE_APPDIR}/plugins + + ${INSTALL_DATA} ${WRKSRC}/aggro.py ${STAGE_APPDIR}/ + (cd ${WRKSRC}/app && ${COPYTREE_SHARE} . ${STAGE_APPDIR}/app) + (cd ${WRKSRC}/plugins && ${COPYTREE_SHARE} . ${STAGE_APPDIR}/plugins) + + ${INSTALL} -m 600 /dev/null ${STAGEDIR}${PREFIX}/etc/aggro.env + ${INSTALL_DATA} ${WRKSRC}/Aggrofile ${STAGEDIR}${PREFIX}/etc/Aggrofile.sample + +post-install: + @(cd ${STAGEDIR}${PREFIX} && \ + ${FIND} aggro -type f -o -type l | \ + ${SORT}) >> ${TMPPLIST} + + @(cd ${STAGEDIR}${PREFIX} && \ + ${FIND} aggro -type d | \ + ${SORT} -r | \ + ${SED} 's|^|@dir |') >> ${TMPPLIST} + + @echo "etc/aggro.env" >> ${TMPPLIST} + @echo "etc/Aggrofile.sample" >> ${TMPPLIST} + +.include diff --git a/www/aggro/files/aggro.in b/www/aggro/files/aggro.in new file mode 100644 index 0000000..1e875d7 --- /dev/null +++ b/www/aggro/files/aggro.in @@ -0,0 +1,65 @@ +#!/bin/sh + +# PROVIDE: aggro +# REQUIRE: NETWORKING +# KEYWORD: shutdown + +. /etc/rc.subr + +name="aggro" +rcvar="aggro_enable" +pidfile="/var/run/${name}.pid" + +load_rc_config "$name" + +: ${aggro_enable:="NO"} +: ${aggro_env_file:="%%PREFIX%%/etc/aggro.env"} +: ${aggro_config:="%%PREFIX%%/etc/Aggrofile"} + +start_cmd="${name}_start" +stop_cmd="${name}_stop" +status_cmd="${name}_status" + +aggro_start() +{ + if [ ! -f "${aggro_env_file}" ]; then + echo "${name}: env file ${aggro_env_file} not found" + return 1 + fi + + if [ ! -f "${aggro_config}" ]; then + echo "${name}: config file ${aggro_config} not found" + return 1 + fi + + echo "Starting ${name}..." + + cd %%PREFIX%%/aggro || return 1 + + daemon -p "${pidfile}" -o /var/log/aggro.log env \ + PATH=%%PREFIX%%/bin:/usr/bin:/bin \ + PYTHONPATH=%%PREFIX%%/aggro/vendor:%%PREFIX%%/aggro \ + AGGRO_CONFIG_PATH="${aggro_config}" \ + %%PYTHON_CMD%% %%PREFIX%%/aggro/aggro.py +} + +aggro_stop() +{ + if [ -f "${pidfile}" ]; then + echo "Stopping ${name}..." + kill "$(cat "${pidfile}")" 2>/dev/null + rm -f "${pidfile}" + fi +} + +aggro_status() +{ + if [ -f "${pidfile}" ] && kill -0 "$(cat "${pidfile}")" 2>/dev/null; then + echo "${name} is running as pid $(cat "${pidfile}")" + else + echo "${name} is not running" + return 1 + fi +} + +run_rc_command "$1" diff --git a/www/aggro/pkg-descr b/www/aggro/pkg-descr new file mode 100644 index 0000000..52089e3 --- /dev/null +++ b/www/aggro/pkg-descr @@ -0,0 +1,2 @@ +Configurable web content aggregator with plugin-based scrapers +and alerting via SendGrid. -- cgit v1.3