aboutsummaryrefslogtreecommitdiffstats
path: root/net-im/hommabot/files/hommabot.in
diff options
context:
space:
mode:
Diffstat (limited to 'net-im/hommabot/files/hommabot.in')
-rw-r--r--net-im/hommabot/files/hommabot.in82
1 files changed, 82 insertions, 0 deletions
diff --git a/net-im/hommabot/files/hommabot.in b/net-im/hommabot/files/hommabot.in
new file mode 100644
index 0000000..df18e08
--- /dev/null
+++ b/net-im/hommabot/files/hommabot.in
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# PROVIDE: hommabot
+# REQUIRE: NETWORKING
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="hommabot"
+rcvar="hommabot_enable"
+pidfile="/var/run/${name}.pid"
+
+load_rc_config $name
+
+: ${hommabot_enable:="NO"}
+: ${hommabot_token_file:="%%PREFIX%%/etc/hommabot.token"}
+: ${hommabot_data_dir:="/var/db/hommabot"}
+: ${hommabot_tz:="Europe/Helsinki"}
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+hommabot_start()
+{
+ if [ ! -f "${hommabot_token_file}" ]; then
+ echo "${name}: token file ${hommabot_token_file} not found"
+ return 1
+ fi
+ echo "Starting ${name}..."
+ BOT_TOKEN=$(cat "${hommabot_token_file}")
+ if [ -z "${BOT_TOKEN}" ]; then
+ echo "${name}: token file ${hommabot_token_file} is empty"
+ return 1
+ fi
+ cd %%PREFIX%%/hommabot
+ if [ ! -d "%%PREFIX%%/hommabot/node_modules" ]; then
+ echo "${name}: installing dependencies (first run)..."
+ npm ci --prefix %%PREFIX%%/hommabot || {
+ echo "${name}: npm ci failed"
+ return 1
+ }
+ fi
+ mkdir -p "${hommabot_data_dir}"
+ chmod -R 770 "${hommabot_data_dir}"
+ daemon -p ${pidfile} -o /var/log/hommabot.log env \
+ PATH=%%PREFIX%%/bin:/usr/local/bin:/usr/bin:/bin \
+ TELEGRAM_BOT_TOKEN="${BOT_TOKEN}" \
+ SQLITE_PATH="${hommabot_data_dir}/db.sqlite3" \
+ TZ="${hommabot_tz}" \
+ npm start
+
+
+ for i in $(seq 5); do
+ sleep 1
+ if [ ! -f ${pidfile} ]; then
+ echo "Failed to start ${name}"
+ return 1
+ fi
+ done
+}
+
+hommabot_stop()
+{
+ if [ -f ${pidfile} ]; then
+ echo "Stopping ${name}..."
+ kill $(cat ${pidfile}) 2>/dev/null
+ rm -f ${pidfile}
+ fi
+}
+
+hommabot_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"