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.in105
1 files changed, 52 insertions, 53 deletions
diff --git a/net-im/hommabot/files/hommabot.in b/net-im/hommabot/files/hommabot.in
index df18e08..d0787d1 100644
--- a/net-im/hommabot/files/hommabot.in
+++ b/net-im/hommabot/files/hommabot.in
@@ -8,75 +8,74 @@
name="hommabot"
rcvar="hommabot_enable"
-pidfile="/var/run/${name}.pid"
-load_rc_config $name
+load_rc_config "${name}"
: ${hommabot_enable:="NO"}
: ${hommabot_token_file:="%%PREFIX%%/etc/hommabot.token"}
: ${hommabot_data_dir:="/var/db/hommabot"}
: ${hommabot_tz:="Europe/Helsinki"}
+: ${hommabot_log_file:="/var/log/hommabot.log"}
+
+pidfile="/var/run/${name}.pid"
+procname="/usr/sbin/daemon"
+command="/usr/sbin/daemon"
start_cmd="${name}_start"
-stop_cmd="${name}_stop"
-status_cmd="${name}_status"
-hommabot_start()
+hommabot_prestart()
{
- 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
+ if [ ! -r "${hommabot_token_file}" ]; then
+ echo "${name}: token file ${hommabot_token_file} does not exist or is not readable"
+ return 1
+ fi
+ if [ ! -s "${hommabot_token_file}" ]; then
+ echo "${name}: token file ${hommabot_token_file} is empty"
+ return 1
+ fi
- for i in $(seq 5); do
- sleep 1
- if [ ! -f ${pidfile} ]; then
- echo "Failed to start ${name}"
- return 1
- fi
- done
-}
+ install -d -m 0700 "${hommabot_data_dir}" || return 1
-hommabot_stop()
-{
- if [ -f ${pidfile} ]; then
- echo "Stopping ${name}..."
- kill $(cat ${pidfile}) 2>/dev/null
- rm -f ${pidfile}
- fi
+ if [ ! -e "${hommabot_log_file}" ]; then
+ install -m 0600 /dev/null "${hommabot_log_file}" || return 1
+ else
+ chmod 0600 "${hommabot_log_file}" || return 1
+ fi
}
-hommabot_status()
+hommabot_start()
{
- 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
+ local bot_token
+
+ hommabot_prestart || return 1
+
+ if check_pidfile "${pidfile}" "${procname}" >/dev/null; then
+ echo "${name} is already running."
+ return 1
+ fi
+
+ bot_token=$(cat "${hommabot_token_file}") || return 1
+
+ cd "%%PREFIX%%/libexec/hommabot" || {
+ echo "${name}: cannot change to %%PREFIX%%/libexec/hommabot"
+ return 1
+ }
+
+ echo "Starting ${name}."
+
+ exec /usr/sbin/daemon \
+ -f \
+ -P "${pidfile}" \
+ -o "${hommabot_log_file}" \
+ /usr/bin/env \
+ PATH="%%PREFIX%%/bin:/usr/bin:/bin" \
+ TELEGRAM_BOT_TOKEN="${bot_token}" \
+ SQLITE_PATH="${hommabot_data_dir}/db.sqlite3" \
+ TZ="${hommabot_tz}" \
+ "%%PREFIX%%/bin/node" \
+ "%%PREFIX%%/libexec/hommabot/node_modules/tsx/dist/cli.mjs" \
+ "%%PREFIX%%/libexec/hommabot/src/bot.ts"
}
run_rc_command "$1"