diff options
Diffstat (limited to 'net-im/hommabot/files/hommabot.in')
| -rw-r--r-- | net-im/hommabot/files/hommabot.in | 105 |
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" |
