72 lines
2.8 KiB
Bash
Executable File
72 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
set -o pipefail
|
|
|
|
# Load environment variables
|
|
export $(grep -v '^#' .env | xargs -d '\n')
|
|
|
|
# Generate UUID for this run
|
|
RID=$(cat /proc/sys/kernel/random/uuid)
|
|
|
|
# Healthchecks.io ping function
|
|
ping_healthcheck() {
|
|
local endpoint="$1"
|
|
local data="$2"
|
|
if [ -n "$data" ]; then
|
|
curl -fsS -m 10 --retry 5 --data-raw "$data" "https://hc-ping.com/${HEALTHCHECK_PING_KEY}/modmapper-update${endpoint}?rid=${RID}" >/dev/null || true
|
|
else
|
|
curl -fsS -m 10 --retry 5 "https://hc-ping.com/${HEALTHCHECK_PING_KEY}/modmapper-update${endpoint}?rid=${RID}" >/dev/null || true
|
|
fi
|
|
}
|
|
|
|
# Send failure notification with logs
|
|
send_failure() {
|
|
local logs=""
|
|
if [ -f logs/modmapper.log ]; then
|
|
logs=$(tail --bytes=100000 logs/modmapper.log)
|
|
fi
|
|
ping_healthcheck "/fail" "$logs"
|
|
exit 1
|
|
}
|
|
|
|
# Trap to catch failures
|
|
trap send_failure ERR
|
|
|
|
# Send start ping
|
|
ping_healthcheck "/start"
|
|
|
|
if [ -f cells/edits.json ]; then
|
|
last_update_time=$(date -r cells/edits.json +'%Y-%m-%dT%H:%M:%S')
|
|
fi
|
|
mkdir -p logs
|
|
./target/release/mod-mapper -g skyrimspecialedition &>> logs/modmapper.log
|
|
./target/release/mod-mapper -g skyrim &>> logs/modmapper.log
|
|
mkdir -p cells
|
|
mkdir -p mods
|
|
mkdir -p files
|
|
mkdir -p plugins_data
|
|
if [ -n "$last_update_time" ]; then
|
|
./target/release/mod-mapper -e cells/edits.json &>> logs/modmapper.log
|
|
./target/release/mod-mapper -c cells &>> logs/modmapper.log
|
|
./target/release/mod-mapper -s mods/skyrimspecialedition/mod_search_index.json -g skyrimspecialedition &>> logs/modmapper.log
|
|
./target/release/mod-mapper -s mods/skyrim/mod_search_index.json -g skyrim &>> logs/modmapper.log
|
|
./target/release/mod-mapper -M mods/mod_cell_counts.json &>> logs/modmapper.log
|
|
./target/release/mod-mapper -G mods/games.json &>> logs/modmapper.log
|
|
./target/release/mod-mapper -m mods -u "$last_update_time" &>> logs/modmapper.log
|
|
./target/release/mod-mapper -P plugins_data -u "$last_update_time" &>> logs/modmapper.log
|
|
./target/release/mod-mapper -F files -u "$last_update_time" &>> logs/modmapper.log
|
|
else
|
|
./target/release/mod-mapper -e cells/edits.json &>> logs/modmapper.log
|
|
./target/release/mod-mapper -c cells &>> logs/modmapper.log
|
|
./target/release/mod-mapper -s mods/skyrimspecialedition/mod_search_index.json -g skyrimspecialedition &>> logs/modmapper.log
|
|
./target/release/mod-mapper -s mods/skyrim/mod_search_index.json -g skyrim &>> logs/modmapper.log
|
|
./target/release/mod-mapper -M mods/mod_cell_counts.json &>> logs/modmapper.log
|
|
./target/release/mod-mapper -G mods/games.json &>> logs/modmapper.log
|
|
./target/release/mod-mapper -m mods &>> logs/modmapper.log
|
|
./target/release/mod-mapper -P plugins_data &>> logs/modmapper.log
|
|
./target/release/mod-mapper -F files &>> logs/modmapper.log
|
|
fi
|
|
|
|
# Send success ping
|
|
ping_healthcheck ""
|